Correzzioni
git-svn-id: svn://10.65.10.50/trunk@2779 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a116aa3201
commit
8bde27dae8
@ -1,4 +1,4 @@
|
||||
#include "BATBMAG.h"
|
||||
#include "batbmag.h"
|
||||
#include <comdcod.h>
|
||||
#include <comdden.h>
|
||||
|
||||
@ -286,7 +286,7 @@ END
|
||||
|
||||
BOOLEAN F_GESTGIA
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione giacenze in più depositi "
|
||||
PROMPT 2 4 "Gestione giacenze in piu' depositi "
|
||||
FIELD MAG->B0
|
||||
END
|
||||
|
||||
|
@ -201,8 +201,8 @@ BEGIN
|
||||
PROMPT 38 8 ""
|
||||
FIELD SPP->S4
|
||||
USE LF_PCON
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
INPUT CONTO F_CONTO
|
||||
INPUT GRUPPO F_GRUPPO SELECT
|
||||
INPUT CONTO F_CONTO SELECT
|
||||
INPUT SOTTOCONTO F_SOTTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
|
@ -38,10 +38,9 @@ END
|
||||
USE %TIP KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT S0 F_DESNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@40" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESNUM S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
KEY 2
|
||||
END
|
||||
|
||||
@ -49,14 +48,14 @@ END
|
||||
BEGIN
|
||||
PROMPT 2 8 "Profilo documento "
|
||||
FIELD S4
|
||||
FLAG "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_PSTAMPA 8
|
||||
BEGIN
|
||||
PROMPT 2 10 "Profilo stampa documento "
|
||||
FIELD S5
|
||||
FLAG "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,13 +1,9 @@
|
||||
#include "batbtri.h"
|
||||
TOOLBAR "" 0 20 60 2
|
||||
|
||||
#include "toolbar.h"
|
||||
|
||||
ENDPAGE
|
||||
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
#define F_PROFILO 103
|
||||
|
||||
PAGE "Tipo di riga" -1 -1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
@ -15,7 +11,7 @@ PAGE "Tipo di riga" -1 -1 60 14
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
|
||||
STRING F_CODICE 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
@ -43,7 +39,7 @@ PAGE "Tipo di riga" -1 -1 60 14
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING f_PROFILO 8
|
||||
STRING F_PROFILO 8
|
||||
BEGIN
|
||||
PROMPT 2 8 "Profilo "
|
||||
CHECKTYPE REQUIRED
|
||||
|
157
ve/righedoc.cpp
157
ve/righedoc.cpp
@ -6,12 +6,12 @@
|
||||
#include "ve0100.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#ifndef __VERIG_H
|
||||
#include "verig.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML2_H
|
||||
#include "veuml2.h"
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#endif
|
||||
|
||||
#ifndef __SCONTI_H
|
||||
@ -55,9 +55,9 @@ static bool riga_art_handler( TMask_field& f, KEY key )
|
||||
// Se qualcuno cerca di modificare la maschera
|
||||
if ( key == K_TAB ) // && m.is_running( ) )
|
||||
{
|
||||
TSconto_riga r( app( ).clifo( ), &( app( ).edit_mask( ) ), &( f.mask( ) ) );
|
||||
TSconto_riga r( app( ).clifo( ), &app( ).edit_mask( ), &m );
|
||||
r.calcola( );
|
||||
f.mask( ).set( FS_SCONTO, r.get( ) );
|
||||
f.mask( ).set( FR_SCONTO, r.get( ) );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -65,32 +65,26 @@ static bool riga_art_handler( TMask_field& f, KEY key )
|
||||
|
||||
void TRiga::load( TToken_string& row )
|
||||
{
|
||||
_data.put( "CODNUM", row.get( FS_CODNUM - 101 ) );
|
||||
_data.put( "ANNO", row.get( FS_ANNO - 101 ) );
|
||||
_data.put( "PROVV", row.get( FS_PROVV - 101 ) );
|
||||
_data.put( "NDOC", row.get( FS_NDOC - 101 ) );
|
||||
_data.put( "STATORIGA", row.get( FS_STATORIGA - 101 ) );
|
||||
_data.put( "TIPORIGA", row.get( FS_TIPORIGA - 101 ) );
|
||||
_data.put( "PROFRIGA", row.get( FS_PROFRIGA - 101 ) );
|
||||
_data.put( "CODMAG", row.get( FS_CODMAG - 101 ) );
|
||||
_data.put( "CODART", row.get( FS_CODART - 101 ) );
|
||||
_data.put( "DESCR", row.get( FS_DESCR - 101 ) );
|
||||
_data.put( "DESCLUNGA", row.get( FS_DESCLUNGA - 101 ) );
|
||||
_data.put( "PREZZO", row.get( FS_PREZZO - 101 ) );
|
||||
_data.put( "UMQTA", row.get( FS_UMQTA - 101 ) );
|
||||
_data.put( "QTA", row.get( FS_QTA - 101 ) );
|
||||
_data.put( "QTAEVASA", row.get( FS_QTAEVASA - 101 ) );
|
||||
_data.put( "RIGAEVASA", row.get( FS_RIGAEVASA - 101 ) );
|
||||
_data.put( "TARA", row.get( FS_TARA - 101 ) );
|
||||
_data.put( "PNETTO", row.get( FS_PNETTO - 101 ) );
|
||||
_data.put( "NCOLLI", row.get( FS_NCOLLI - 101 ) );
|
||||
_data.put( "DAEVADERE", row.get( FS_DAEVADERE - 101 ) );
|
||||
_data.put( "SCONTO", row.get( FS_SCONTO - 101 ) );
|
||||
_data.put( "PERCPROV", row.get( FS_PERCPROV - 101 ) );
|
||||
_data.put( "IMPFISSO", row.get( FS_IMPFISSO - 101 ) );
|
||||
_data.put( "CODIVA", row.get( FS_CODIVA - 101 ) );
|
||||
_data.put( "ADDIVA", row.get( FS_ADDIVA - 101 ) );
|
||||
_data.put( "ASPBENI", row.get( FS_ASPBENI - 101 ) );
|
||||
_data.put( "STATORIGA", row.get( FR_STATORIGA - 101 ) );
|
||||
_data.put( "TIPORIGA", row.get( FR_TIPORIGA - 101 ) );
|
||||
_data.put( "CODMAG", row.get( FR_CODMAG - 101 ) );
|
||||
_data.put( "CODART", row.get( FR_CODART - 101 ) );
|
||||
_data.put( "DESCR", row.get( FR_DESCR - 101 ) );
|
||||
_data.put( "PREZZO", row.get( FR_PREZZO - 101 ) );
|
||||
_data.put( "UMQTA", row.get( FR_UMQTA - 101 ) );
|
||||
_data.put( "QTA", row.get( FR_QTA - 101 ) );
|
||||
_data.put( "QTAEVASA", row.get( FR_QTAEVASA - 101 ) );
|
||||
_data.put( "RIGAEVASA", row.get( FR_RIGAEVASA - 101 ) );
|
||||
_data.put( "TARA", row.get( FR_TARA - 101 ) );
|
||||
_data.put( "PNETTO", row.get( FR_PNETTO - 101 ) );
|
||||
_data.put( "NCOLLI", row.get( FR_NCOLLI - 101 ) );
|
||||
_data.put( "DAEVADERE", row.get( FR_DAEVADERE - 101 ) );
|
||||
_data.put( "SCONTO", row.get( FR_SCONTO - 101 ) );
|
||||
_data.put( "PERCPROV", row.get( FR_PERCPROV - 101 ) );
|
||||
_data.put( "IMPFISSO", row.get( FR_IMPFISSO - 101 ) );
|
||||
_data.put( "CODIVA", row.get( FR_CODIVA - 101 ) );
|
||||
_data.put( "ADDIVA", row.get( FR_ADDIVA - 101 ) );
|
||||
_data.put( "ASPBENI", row.get( FR_ASPBENI - 101 ) );
|
||||
carica_profilo( );
|
||||
_piede.destroy( );
|
||||
somma( _piede );
|
||||
@ -98,47 +92,27 @@ void TRiga::load( TToken_string& row )
|
||||
|
||||
void TRiga::save( TToken_string& row )
|
||||
{
|
||||
row.add( _data.get( "CODNUM" ), FS_CODNUM - 101 );
|
||||
row.add( _data.get( "ANNO" ), FS_ANNO - 101 );
|
||||
row.add( _data.get( "PROVV" ), FS_PROVV - 101 );
|
||||
row.add( _data.get( "NDOC" ), FS_NDOC - 101 );
|
||||
row.add( _data.get( "STATORIGA" ), FS_STATORIGA - 101 );
|
||||
row.add( _data.get( "TIPORIGA" ), FS_TIPORIGA - 101 );
|
||||
row.add( _data.get( "PROFRIGA" ), FS_PROFRIGA - 101 );
|
||||
row.add( _data.get( "CODMAG" ), FS_CODMAG - 101 );
|
||||
row.add( _data.get( "CODART" ), FS_CODART - 101 );
|
||||
row.add( _data.get( "DESCR" ), FS_DESCR - 101 );
|
||||
row.add( _data.get( "DESCLUNGA" ), FS_DESCLUNGA - 101 );
|
||||
row.add( _data.get( "PREZZO" ), FS_PREZZO - 101 );
|
||||
row.add( _data.get( "UMQTA" ), FS_UMQTA - 101 );
|
||||
row.add( _data.get( "QTA" ), FS_QTA - 101 );
|
||||
row.add( _data.get( "QTAEVASA" ), FS_QTAEVASA - 101 );
|
||||
row.add( _data.get( "RIGAEVASA" ), FS_RIGAEVASA - 101 );
|
||||
row.add( _data.get( "TARA" ), FS_TARA - 101 );
|
||||
row.add( _data.get( "PNETTO" ), FS_PNETTO - 101 );
|
||||
row.add( _data.get( "NCOLLI" ), FS_NCOLLI - 101 );
|
||||
row.add( _data.get( "DAEVADERE" ), FS_DAEVADERE - 101 );
|
||||
row.add( _data.get( "SCONTO" ), FS_SCONTO - 101 );
|
||||
row.add( _data.get( "PERCPROV" ), FS_PERCPROV - 101 );
|
||||
row.add( _data.get( "IMPFISSO" ), FS_IMPFISSO - 101 );
|
||||
row.add( _data.get( "CODIVA" ), FS_CODIVA - 101 );
|
||||
row.add( _data.get( "ADDIVA" ), FS_ADDIVA - 101 );
|
||||
row.add( _data.get( "ASPBENI" ), FS_ASPBENI - 101 );
|
||||
row.add( _piede.string( ), FS_G1 - 101 );
|
||||
}
|
||||
|
||||
void TRiga::carica_maschera( )
|
||||
{
|
||||
_mask = new TMask( _pro->get( "MSK", "MAIN" ) );
|
||||
int numhandler = _pro->get_int( "NHANDLER", "HANDLERS" );
|
||||
for( int i = 1; i <= numhandler; i ++ )
|
||||
{
|
||||
TString chiave;
|
||||
chiave.format( "%d", i );
|
||||
TToken_string riga = _pro->get( chiave, "HANDLERS" );
|
||||
row_set_handler( *_mask, riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||
}
|
||||
// _mask->set_handler( FS_CODART, riga_art_handler );
|
||||
row.add( _data.get( "STATORIGA" ), FR_STATORIGA - 101 );
|
||||
row.add( _data.get( "TIPORIGA" ), FR_TIPORIGA - 101 );
|
||||
row.add( _data.get( "CODMAG" ), FR_CODMAG - 101 );
|
||||
row.add( _data.get( "CODART" ), FR_CODART - 101 );
|
||||
row.add( _data.get( "DESCR" ), FR_DESCR - 101 );
|
||||
row.add( _data.get( "UMQTA" ), FR_UMQTA - 101 );
|
||||
row.add( _data.get( "PREZZO" ), FR_PREZZO - 101 );
|
||||
row.add( _data.get( "QTA" ), FR_QTA - 101 );
|
||||
row.add( _data.get( "QTAEVASA" ), FR_QTAEVASA - 101 );
|
||||
row.add( _data.get( "RIGAEVASA" ), FR_RIGAEVASA - 101 );
|
||||
row.add( _data.get( "TARA" ), FR_TARA - 101 );
|
||||
row.add( _data.get( "PNETTO" ), FR_PNETTO - 101 );
|
||||
row.add( _data.get( "NCOLLI" ), FR_NCOLLI - 101 );
|
||||
row.add( _data.get( "DAEVADERE" ), FR_DAEVADERE - 101 );
|
||||
row.add( _data.get( "SCONTO" ), FR_SCONTO - 101 );
|
||||
row.add( _data.get( "PERCPROV" ), FR_PERCPROV - 101 );
|
||||
row.add( _data.get( "IMPFISSO" ), FR_IMPFISSO - 101 );
|
||||
row.add( _data.get( "CODIVA" ), FR_CODIVA - 101 );
|
||||
row.add( _data.get( "ADDIVA" ), FR_ADDIVA - 101 );
|
||||
row.add( _data.get( "ASPBENI" ), FR_ASPBENI - 101 );
|
||||
// row.add( _piede.string( ), FR_G1 - 101 ); rimettere
|
||||
}
|
||||
|
||||
void TRiga::load( const TRectype& rec )
|
||||
@ -150,14 +124,15 @@ void TRiga::load( const TRectype& rec )
|
||||
void TRiga::save( TRectype& rec )
|
||||
{
|
||||
rec = _data;
|
||||
rec.put( "G1", _piede.string( ) );
|
||||
// rec.put( "G1", _piede.string( ) );
|
||||
}
|
||||
|
||||
void TRiga::carica_profilo( )
|
||||
{
|
||||
if( _pro )
|
||||
delete _pro;
|
||||
TFilename proname( _data.get( "PROFRIGA" ) );
|
||||
delete _pro;
|
||||
TFilename proname("verig");
|
||||
proname << _data.get("TIPORIGA");
|
||||
proname.ext( "ini" );
|
||||
_pro = new TConfig( proname );
|
||||
}
|
||||
@ -173,7 +148,7 @@ void TRiga::configura_sheet( TSheet_field& f, int numriga )
|
||||
TString16 chiave;
|
||||
chiave.format( "%d", i );
|
||||
int coltoenable = _pro->get_int( chiave, "COLUMNS" );
|
||||
f.enable_cell ( numriga, coltoenable - 1 );
|
||||
f.enable_cell ( numriga, coltoenable);
|
||||
}
|
||||
}
|
||||
|
||||
@ -246,12 +221,22 @@ void TRiga::sottrai( TPiede_documento& piede )
|
||||
piede.sottrai( temp_piede );
|
||||
}
|
||||
|
||||
TMask& TRiga::getmask( )
|
||||
{
|
||||
if( !_mask)
|
||||
carica_maschera( );
|
||||
_mask->set_handler( FS_DESCR, riga_des_handler );
|
||||
return *_mask;
|
||||
TMask * TRiga::getmask( )
|
||||
{
|
||||
|
||||
TString16 msk("verig");
|
||||
msk << _data.get("TIPORIGA");
|
||||
TMask * mask = new TMask( msk );
|
||||
int numhandler = _pro->get_int( "NHANDLER", "HANDLERS" );
|
||||
for( int i = 1; i <= numhandler; i ++ )
|
||||
{
|
||||
TString chiave;
|
||||
chiave.format( "%d", i );
|
||||
TToken_string riga = _pro->get( chiave, "HANDLERS" );
|
||||
row_set_handler( *mask, riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||
}
|
||||
mask->set_handler( FR_DESCR, riga_des_handler );
|
||||
return mask;
|
||||
}
|
||||
|
||||
|
||||
@ -287,8 +272,6 @@ TRiga::~TRiga( )
|
||||
{
|
||||
if( _pro )
|
||||
delete _pro;
|
||||
if( _mask )
|
||||
delete _mask;
|
||||
}
|
||||
|
||||
|
||||
@ -352,8 +335,8 @@ real& TPiede_documento::get( TString16& piede )
|
||||
|
||||
if( is_key( piede ) )
|
||||
{
|
||||
return ( real& ) find( piede );
|
||||
return ( real& ) find( piede );
|
||||
}
|
||||
else
|
||||
return zero;
|
||||
return zero;
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
#ifndef __RIGHEDOC_H
|
||||
#define __RIGHEDOC_H
|
||||
// Numero di colonne presenti sullo sheet totale
|
||||
#define MAX_COLUMNS 27
|
||||
|
||||
#ifndef __ASSOC_H
|
||||
#include "assoc.h"
|
||||
#endif
|
||||
@ -31,11 +29,6 @@
|
||||
#include "msksheet.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML2_H
|
||||
#include "veuml2.h"
|
||||
#endif
|
||||
|
||||
|
||||
class TPiede_documento : public TAssoc_array
|
||||
{
|
||||
public:
|
||||
@ -46,7 +39,7 @@ class TPiede_documento : public TAssoc_array
|
||||
void sottrai( TPiede_documento& tosum ){ somma( tosum, FALSE ); };
|
||||
void somma( TString16& piede, const real& importo );
|
||||
void sottrai( TString16& piede, const real& importo ){ somma( piede, -importo ); };
|
||||
real& get( TString16& piede );
|
||||
real& get( TString16& piede );
|
||||
};
|
||||
|
||||
class TRiga : public TObject
|
||||
@ -60,7 +53,6 @@ class TRiga : public TObject
|
||||
TConfig* _pro;
|
||||
|
||||
// Maschera per la riga
|
||||
TMask* _mask;
|
||||
|
||||
TPiede_documento _piede;
|
||||
|
||||
@ -75,7 +67,7 @@ class TRiga : public TObject
|
||||
// Setta il numero della riga
|
||||
void set_numero( int r ) { _data.put( "NRIGA", r ); }
|
||||
int numero( ) { return _data.get_int( "NRIGA" ); }
|
||||
const TString& profilo( ) { return _data.get( "PROFRIGA" ); }
|
||||
const TString & tipo( ) const { return _data.get( "TIPORIGA" ); }
|
||||
// Carica la riga dalla riga dello sheet
|
||||
void load( TToken_string& row );
|
||||
// Registra la riga sullo sheet
|
||||
@ -93,13 +85,11 @@ class TRiga : public TObject
|
||||
// Gestisce la modifica/cancellazione della riga sul piede
|
||||
// documento indicato. Va chiamata negli handler degli sheet
|
||||
void edit_keys( const KEY key, TPiede_documento& nuovo );
|
||||
// Ritorna la maschera della riga per la editazione
|
||||
TMask& getmask( );
|
||||
|
||||
void carica_maschera( );
|
||||
// Costruisce e Ritorna la maschera della riga per la editazione
|
||||
TMask * getmask();
|
||||
|
||||
// Costruttorino standard
|
||||
TRiga( ) : _data( LF_RIGHEDOC ), _pro( NULL ), _mask( NULL ) { }
|
||||
TRiga( ) : _data( LF_RIGHEDOC ), _pro( NULL ) { }
|
||||
|
||||
virtual ~TRiga( );
|
||||
};
|
||||
|
@ -6,8 +6,8 @@
|
||||
#include "veuml.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML2_H
|
||||
#include "veuml2.h"
|
||||
#ifndef __VERIG_H
|
||||
#include "verig.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TCLIFOR_H
|
||||
@ -142,12 +142,12 @@ TSconto_riga::TSconto_riga( TCliFor& clifo, TMask * testa, TMask * riga ) : _con
|
||||
bool TSconto_riga::cerca_condv( int tiporicerca )
|
||||
{
|
||||
TString s1 = _anamag.get( "CODART" );
|
||||
TString s2 = riga( ).get( FS_CODART );
|
||||
TString s2 = riga( ).get( FR_CODART );
|
||||
if( s1 != s2 )
|
||||
{
|
||||
_anamag.setkey( 1 );
|
||||
_anamag.zero( );
|
||||
_anamag.put( "CODART", riga( ).get( FS_CODART ) );
|
||||
_anamag.put( "CODART", riga( ).get( FR_CODART ) );
|
||||
int ret = _anamag.read( );
|
||||
CHECK( ret == NOERR, "Articolo non trovato in anagrafica di magazzino!" );
|
||||
}
|
||||
@ -213,7 +213,7 @@ bool TSconto_riga::cerca_condv( int tiporicerca )
|
||||
_rcondv.put( "CODCF", _condv.get( "CODCF" ) );
|
||||
if( _condv.get_bool( "GESTUM" ) )
|
||||
{
|
||||
_rcondv.put( "UM", riga( ).get( FS_UMQTA ) );
|
||||
_rcondv.put( "UM", riga( ).get( FR_UMQTA ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -221,7 +221,7 @@ bool TSconto_riga::cerca_condv( int tiporicerca )
|
||||
}
|
||||
if( _condv.get_bool( "GESTSCA" ) )
|
||||
{
|
||||
_rcondv.put( "QLIM", riga( ).get( FS_QTA ) );
|
||||
_rcondv.put( "QLIM", riga( ).get( FR_QTA ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -305,7 +305,7 @@ void TSconto_riga::calcola( )
|
||||
}
|
||||
if( _ditta.get_bool( "GESSCORIGAUM", "ve" ) )
|
||||
{
|
||||
_sconti.put( "UM", riga( ).get( FS_UMQTA ) );
|
||||
_sconti.put( "UM", riga( ).get( FR_UMQTA ) );
|
||||
}
|
||||
if( _sconti.read( ) == NOERR )
|
||||
// Bravo, hai vinto una bambolina
|
||||
|
@ -56,7 +56,7 @@ int TCliFor::write_occas( )
|
||||
if( !occasionale( ) )
|
||||
return NOERR;
|
||||
TRelation occas( LF_OCCAS );
|
||||
occas_mask( ).autosave( &occas );
|
||||
occas_mask( ).autosave( occas );
|
||||
return occas.write( );
|
||||
}
|
||||
|
||||
@ -83,11 +83,11 @@ void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
|
||||
occrel.curr( ).zero( );
|
||||
occrel.curr( ).put( "CFPI", ocfpi );
|
||||
occrel.read( );
|
||||
occas_mask( ).autoload( &occrel );
|
||||
occas_mask( ).autoload( occrel );
|
||||
}
|
||||
}
|
||||
|
||||
void TCliForVendite::update_mask( TVariable_mask& m, bool onload )
|
||||
void TCliForVendite::update_mask( TMask& m, bool onload )
|
||||
{
|
||||
TString16 stato;
|
||||
|
||||
@ -189,7 +189,7 @@ bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
||||
occas.lfile().put("CFPI", code);
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
f.mask().autoload(&occas);
|
||||
f.mask().autoload(occas);
|
||||
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
f.mask().send_key(K_TAB, O_COMUNENAS);
|
||||
}
|
||||
@ -198,7 +198,7 @@ bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_dati_comune( TVariable_mask& m )
|
||||
void TCliForVendite::imposta_dati_comune( TMask& m )
|
||||
{
|
||||
TLocalisamfile comuni(LF_COMUNI);
|
||||
comuni.setkey( 1 );
|
||||
@ -217,7 +217,7 @@ void TCliForVendite::imposta_dati_comune( TVariable_mask& m )
|
||||
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_indirizzo_spedizione( TVariable_mask& m )
|
||||
void TCliForVendite::imposta_indirizzo_spedizione( TMask& m )
|
||||
{
|
||||
TString16 stato;
|
||||
if( occasionale( ) )
|
||||
@ -276,7 +276,7 @@ void TCliForVendite::imposta_indirizzo_spedizione( TVariable_mask& m )
|
||||
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_sconto_testa( TVariable_mask& m )
|
||||
void TCliForVendite::imposta_sconto_testa( TMask& m )
|
||||
{
|
||||
TConfig ditta( CONFIG_DITTA );
|
||||
TString16 codsconto;
|
||||
@ -349,7 +349,7 @@ void TCliForVendite::imposta_sconto_testa( TVariable_mask& m )
|
||||
}
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_valuta( TVariable_mask& m )
|
||||
void TCliForVendite::imposta_valuta( TMask& m )
|
||||
{
|
||||
|
||||
TConfig ditta( CONFIG_DITTA );
|
||||
|
12
ve/tclifor.h
12
ve/tclifor.h
@ -32,7 +32,7 @@ public:
|
||||
int get_int( const int file, const TString& fieldname );
|
||||
long get_long( const int file, const TString& fieldname );
|
||||
bool get_bool( const int file, const TString& fieldname );
|
||||
void set( TVariable_mask& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
|
||||
void set( TMask& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
|
||||
};
|
||||
|
||||
class TCliFor : public TData_picker
|
||||
@ -65,11 +65,11 @@ class TCliForVendite : public TCliFor
|
||||
|
||||
public:
|
||||
|
||||
void update_mask( TVariable_mask& m, bool onload = FALSE );
|
||||
void imposta_dati_comune( TVariable_mask& m );
|
||||
void imposta_valuta( TVariable_mask& m );
|
||||
void imposta_indirizzo_spedizione( TVariable_mask& m );
|
||||
void imposta_sconto_testa( TVariable_mask& m );
|
||||
void update_mask( TMask& m, bool onload = FALSE );
|
||||
void imposta_dati_comune( TMask& m );
|
||||
void imposta_valuta( TMask& m );
|
||||
void imposta_indirizzo_spedizione( TMask& m );
|
||||
void imposta_sconto_testa( TMask& m );
|
||||
|
||||
};
|
||||
|
||||
|
394
ve/ve0100.cpp
394
ve/ve0100.cpp
@ -1,9 +1,44 @@
|
||||
#ifndef __VE0100_H
|
||||
#include "ve0100.h"
|
||||
#endif
|
||||
#endif
|
||||
// babbalone #3-4 I can't show these, because they are in the mask
|
||||
|
||||
TTipo_documento::TTipo_documento(const char * tipodoc)
|
||||
: _tipodoc(tipodoc), _mask(NULL)
|
||||
{
|
||||
TTable t("%TIP");
|
||||
|
||||
t.zero();
|
||||
t.put("CODTAB", _tipodoc);
|
||||
if (t.bad())
|
||||
fatal_box("Non esiste il tipo documento %s", _tipodoc);
|
||||
_profile = t.get("S4");
|
||||
_profile_file = _profile;
|
||||
_profile_file.ext("ini");
|
||||
|
||||
TConfig * p = create_profile();
|
||||
|
||||
_mask = new TVariable_mask( p->get( "MSKFILE", "MAIN" ) );
|
||||
delete p;
|
||||
}
|
||||
|
||||
TTipo_documento::~TTipo_documento()
|
||||
|
||||
{
|
||||
if (_mask != NULL)
|
||||
delete _mask;
|
||||
}
|
||||
|
||||
TMotore_application& app( ) { return ( TMotore_application& ) main_app( ); }
|
||||
|
||||
void TMotore_application::init_query_mode( TMask& m )
|
||||
{
|
||||
_msk->set( F_CODNUM, _codnum );
|
||||
_msk->check_field(F_CODNUM);
|
||||
_msk->set( F_PROFILO, _profilo );
|
||||
_msk->set( F_TIPODOC, _tipodoc );
|
||||
}
|
||||
|
||||
void TMotore_application::init_insert_mode( TMask& m )
|
||||
{
|
||||
TString tipocf( "A" );
|
||||
@ -12,7 +47,7 @@ void TMotore_application::init_insert_mode( TMask& m )
|
||||
m.set( F_DATAINSC, m.get( F_DATADOC ) );
|
||||
m.set( F_TIPOCF, tipocf );
|
||||
clifo( ).occas_mask( ).reset( );
|
||||
int ndefaults = pro( ).get_int( "NDEFAULTS", "DEFAULT" );
|
||||
int ndefaults = pro( ).get_int( "NDEFAULTS", "DEFAULT" ); // prof
|
||||
for( int i = 1; i <= ndefaults; i++ )
|
||||
{
|
||||
TString16 chiave;
|
||||
@ -43,7 +78,6 @@ int TMotore_application::user_function( int index )
|
||||
TMask *TMotore_application::ss_getmask( int numriga, TMask& fullmask, bool destroy )
|
||||
{
|
||||
static TRiga* r = NULL;
|
||||
static TMask* m = NULL;
|
||||
|
||||
if ( destroy )
|
||||
{
|
||||
@ -55,18 +89,24 @@ TMask *TMotore_application::ss_getmask( int numriga, TMask& fullmask, bool destr
|
||||
{
|
||||
TSheet_field* ss = fullmask.get_sheet( );
|
||||
TToken_string& riga = ss->row( numriga );
|
||||
TString16 profilo( riga.get( FS_PROFRIGA - 101 ) );
|
||||
if ( profilo.blank( ) ) return &fullmask;
|
||||
if( r && ( r->profilo( ) == profilo ) )
|
||||
{
|
||||
return( m );
|
||||
}
|
||||
const TString tipo(riga.get( FR_TIPORIGA - 101 ));
|
||||
|
||||
if ( tipo.blank() ) return &fullmask;
|
||||
if ( !r )
|
||||
r = new TRiga;
|
||||
r->load( riga );
|
||||
m = &(r->getmask( ));
|
||||
m->set_sheet( ss );
|
||||
return( m );
|
||||
if(r->tipo() != tipo)
|
||||
{
|
||||
r->load( riga );
|
||||
}
|
||||
TAssoc_array & row_masks = app()._row_masks;
|
||||
TMask * row_mask = (TMask *) row_masks.objptr(tipo);
|
||||
if (row_mask == NULL)
|
||||
{
|
||||
row_mask = r->getmask();
|
||||
row_mask->set_sheet( ss );
|
||||
row_masks.add(tipo, row_mask);
|
||||
}
|
||||
return( row_mask );
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,9 +134,10 @@ void TMotore_application::user_set_handler( int fieldid, int index, TMask* m )
|
||||
}
|
||||
|
||||
bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
|
||||
{
|
||||
static TRiga* riga;
|
||||
|
||||
static TRiga * riga = NULL;
|
||||
|
||||
if ( key == K_SPACE ) // Inizio modifica
|
||||
{
|
||||
TPiede_documento& piede = app( ).piede( );
|
||||
@ -104,9 +145,10 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
}
|
||||
if ( key == K_TAB ) // Mi posiziono su di una riga nello sheet
|
||||
{
|
||||
if ( riga )
|
||||
if ( riga )
|
||||
delete riga;
|
||||
riga = new TRiga;
|
||||
|
||||
riga->load( ss.row( r ) );
|
||||
}
|
||||
if ( key == K_CTRL + K_TAB ) // Lascio una riga nello sheet
|
||||
@ -123,20 +165,28 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
// app( ).edit_mask( ).field( F_MEMORIGA ).autosave( &rdoc );
|
||||
// rdoc.write( );
|
||||
}
|
||||
if ( key == K_INS ) // Inserimento
|
||||
if ( key == K_INS ) // Inserimento
|
||||
{
|
||||
TTable tabtr( "%TRI" );
|
||||
TMask & emask = app().edit_mask();
|
||||
/*
|
||||
TTable tabtr( "%TRI" );
|
||||
|
||||
tabtr.zero( );
|
||||
tabtr.put( "CODTAB", app( ).edit_mask( ).get( F_LBTIPORIGA ) );
|
||||
tabtr.read( );
|
||||
*/
|
||||
TToken_string& tsr = ss.row( r );
|
||||
tsr.add( app( ).edit_mask( ).get( F_ANNO ), FS_ANNO - 101 );
|
||||
tsr.add( app( ).edit_mask( ).get( F_PROVV ), FS_PROVV - 101 );
|
||||
tsr.add( app( ).edit_mask( ).get( F_NDOC ), FS_NDOC - 101 );
|
||||
tsr.add( app( ).edit_mask( ).get( F_CODNUM ), FS_CODNUM - 101 );
|
||||
tsr.add( app( ).edit_mask( ).get( F_LBTIPORIGA ), FS_TIPORIGA - 101 );
|
||||
// tsr.add( app( ).edit_mask( ).get( F_PROFILO ), FS_PROFRIGA - 101 );
|
||||
tsr.add( tabtr.get( "S4" ), FS_PROFRIGA - 101 );
|
||||
/*
|
||||
tsr.add(emask.get( F_ANNO ), FR_ANNO - 101 );
|
||||
tsr.add(emask.get( F_PROVV ), FR_PROVV - 101 );
|
||||
tsr.add(emask.get( F_NDOC ), FR_NDOC - 101 );
|
||||
tsr.add(emask.get( F_CODNUM ), FR_CODNUM - 101 );
|
||||
*/
|
||||
tsr.add(emask.get( F_LBTIPORIGA ), FR_TIPORIGA - 101 );
|
||||
tsr.add("", FR_STATORIGA - 101 );
|
||||
/*
|
||||
tsr.add( tabtr.get( "S4" ), FR_PROFRIGA - 101 );
|
||||
*/
|
||||
if ( riga )
|
||||
delete riga;
|
||||
riga = new TRiga;
|
||||
@ -146,6 +196,8 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
if ( key == K_CTRL + K_INS ) // Dopo inserimento
|
||||
{
|
||||
riga->configura_sheet( ss, r );
|
||||
ss.force_update();
|
||||
ss.select(r);
|
||||
app( ).curr_mask( ).send_key( K_ROWEDIT, F_SHEET );
|
||||
return TRUE;
|
||||
}
|
||||
@ -242,7 +294,7 @@ bool TMotore_application::val_handler( TMask_field& f, KEY key )
|
||||
|
||||
// m.set( F_CAMBIO, "" );
|
||||
// m.set( F_DATACAMBIO, "" );
|
||||
app( ).clifo( ).imposta_valuta( ( TVariable_mask& ) m );
|
||||
app( ).clifo( ).imposta_valuta( m );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -286,15 +338,15 @@ bool TMotore_application::occas_handler( TMask_field& f, KEY key )
|
||||
bool TMotore_application::tip_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
TMask& m = f.mask( );
|
||||
if ( key == K_TAB && m.is_running( ) )
|
||||
if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty())
|
||||
{
|
||||
const TString16 value( m.get( F_TIPODOC ) );
|
||||
if ( value.blank( ) )
|
||||
{
|
||||
// const TString16 value( m.get( F_TIPODOC ) );
|
||||
// if (value.blank())
|
||||
// {
|
||||
// Pulisce il profilo
|
||||
m.set( F_PROFILO, "" );
|
||||
return TRUE;
|
||||
}
|
||||
// m.set( F_PROFILO, "" );
|
||||
// return TRUE;
|
||||
// }
|
||||
TString tipi_consentiti( m.get( F_TIPIDOCS ) );
|
||||
TString16 tipo( f.get( ) );
|
||||
tipo.trim( );
|
||||
@ -315,12 +367,6 @@ bool TMotore_application::tip_handler( TMask_field& f, KEY key )
|
||||
f.set( "" );
|
||||
return FALSE;
|
||||
}
|
||||
TTable tabtip( "%TIP" );
|
||||
tabtip.zero( );
|
||||
tabtip.put( "CODTAB", tipo );
|
||||
tabtip.read( );
|
||||
m.set( F_DESTIPODOC, tabtip.get( "S0" ) );
|
||||
m.set( F_PROFILO, tabtip.get( "S4" ) );
|
||||
}
|
||||
if ( key == K_ENTER && m.is_running( ) )
|
||||
{ TString tipo( f.get( ) );
|
||||
@ -348,11 +394,12 @@ bool TMotore_application::ndoc_handler( TMask_field& f, KEY key )
|
||||
if ( doc.read( ) == NOERR )
|
||||
{
|
||||
m.set( F_TIPODOC, doc.get( "TIPODOC" ) );
|
||||
m.send_key(K_TAB, F_TIPODOC);
|
||||
m.set( F_STATO, doc.get( "STATO" ) );
|
||||
TTable tabtip( "%TIP" );
|
||||
tabtip.put( "CODTAB", doc.get( "TIPODOC" ) );
|
||||
tabtip.read( );
|
||||
m.set( F_PROFILO, tabtip.get( "S4" ) );
|
||||
// TTable tabtip( "%TIP" );
|
||||
// tabtip.put( "CODTAB", doc.get( "TIPODOC" ) );
|
||||
// tabtip.read( );
|
||||
// m.set( F_PROFILO, tabtip.get( "S4" ) );
|
||||
m.stop_run( K_AUTO_ENTER );
|
||||
}
|
||||
}
|
||||
@ -400,7 +447,7 @@ bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
||||
if ( f.focusdirty( ) )
|
||||
{
|
||||
app( ).clifo( ).load( cf, atol( f.get( ) ), "" );
|
||||
app( ).clifo( ).update_mask( ( TVariable_mask& ) m );
|
||||
app( ).clifo( ).update_mask( m );
|
||||
if( f.mask( ).id2pos( F_OCCASEDIT ) > 0 )
|
||||
{
|
||||
if ( app( ).clifo( ).occasionale( ) && app( ).clifo( ).occas_mask( ).get( O_CODICE ).empty( ) )
|
||||
@ -413,7 +460,7 @@ bool TMotore_application::clifo_handler( TMask_field& f, KEY key )
|
||||
|
||||
void TMotore_application::carica_piedi( )
|
||||
{
|
||||
TToken_string s( pro( ).get( "PROGPIEDE", "MAIN" ) );
|
||||
TToken_string s( pro( ).get( "PROGPIEDE", "MAIN" ) ); // prof
|
||||
TString s1 = s.get( );
|
||||
TTable ppd( "PPD" );
|
||||
while( !s1.blank( ) )
|
||||
@ -456,26 +503,30 @@ bool TMotore_application::changing_mask( int mode )
|
||||
|
||||
void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config )
|
||||
{
|
||||
int marker[MAX_COLUMNS + 1];
|
||||
TBit_array to_delete(MAX_COLUMNS);
|
||||
to_delete.set();
|
||||
int ncols = config.get_int( "NCOLS", "SHEET" );
|
||||
for ( int i = 1; i <= MAX_COLUMNS; i ++ ) marker[ i ] = 0;
|
||||
for ( i = 1; i <= ncols; i ++ )
|
||||
for ( int i = 1; i <= ncols; i ++ )
|
||||
{
|
||||
TString col;
|
||||
col.format( "%d", i );
|
||||
TToken_string sheet_col( config.get( col, "SHEET" ) );
|
||||
const TString descr( sheet_col.get( 1 ) );
|
||||
if ( ! descr.blank( ) )
|
||||
sheet.set_column_header( i, descr );
|
||||
TString size( sheet_col.get( 2 ) );
|
||||
if ( ! size.blank( ) )
|
||||
sheet.set_column_width( i, sheet_col.get_int( 2 ) );
|
||||
int coltomove = sheet_col.get_int( 0 ) - 1;
|
||||
marker[coltomove] = 1;
|
||||
// sheet.move_column( coltomove, i );
|
||||
const int field_id = sheet_col.get_int(0);
|
||||
const int coltomove = field_id - FIRST_FIELD;
|
||||
to_delete.reset(coltomove);
|
||||
|
||||
const TString descr(sheet_col.get( 1 ));
|
||||
|
||||
if (descr.not_empty() )
|
||||
sheet.set_column_header( field_id, descr);
|
||||
|
||||
const int size( sheet_col.get_int(2));
|
||||
|
||||
if (size != 0)
|
||||
sheet.set_column_width( field_id, size);
|
||||
}
|
||||
for ( i = 1; i <= MAX_COLUMNS; i ++ )
|
||||
if( !marker[ i ] ) sheet.delete_column( i );
|
||||
for ( i = MAX_COLUMNS - 1; i >= 0; i-- )
|
||||
if( to_delete[i] ) sheet.delete_column( i + FIRST_FIELD);
|
||||
}
|
||||
|
||||
void TMotore_application::get_edit_mask( const char * profilo )
|
||||
@ -484,7 +535,6 @@ void TMotore_application::get_edit_mask( const char * profilo )
|
||||
|
||||
// query_mask( ).enable( DLG_NEWREC );
|
||||
fn.ext( "ini" );
|
||||
fn.upper( );
|
||||
if ( _pro )
|
||||
{
|
||||
if ( ( *_proname ) == fn )
|
||||
@ -494,79 +544,84 @@ void TMotore_application::get_edit_mask( const char * profilo )
|
||||
_pro = new TConfig( fn );
|
||||
_proname = new TFilename( fn );
|
||||
_proname->upper( );
|
||||
if ( _msk1 ) delete _msk1;
|
||||
_msk1 = new TVariable_mask( pro( ).get( "MSKFILE", "MAIN" ) );
|
||||
// edit_mask( ).set( F_PROFILO, query_mask( ).get( F_PROFILO ) );
|
||||
// edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) );
|
||||
TVariable_mask * _msk1 = (TVariable_mask *) _doc_masks.objptr(_tipodoc);
|
||||
const bool newmask = _msk1 == NULL;
|
||||
|
||||
if (newmask)
|
||||
{
|
||||
_msk1 = new TVariable_mask( pro( ).get( "MSKFILE", "MAIN" ) ); // prof
|
||||
_doc_masks.add(_tipodoc, _msk1);
|
||||
}
|
||||
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
|
||||
sheet( ).set_notify( ss_handler );
|
||||
TString tipocf( app( ).pro( ).get( "TIPOCF", "MAIN" ) );
|
||||
TString tipocf( app( ).pro( ).get( "TIPOCF", "MAIN" ) ); //prof
|
||||
app( ).tipocf( tipocf[ 0 ] );
|
||||
configura_sheet( *_sheet, *_pro );
|
||||
TList_field& listbox = ( TList_field& ) _msk1->field( F_LBTIPORIGA );
|
||||
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" );
|
||||
TTable tabtr( "%TRI" );
|
||||
TToken_string keys( "" ), descrs( "" );
|
||||
for ( int i = 1; i <= numtr; i ++ )
|
||||
{
|
||||
TString chiave;
|
||||
TToken_string item;
|
||||
chiave.format( "%d", i );
|
||||
tabtr.zero( );
|
||||
TString tiporiga( app( ).pro( ).get( chiave, "RIGHE" ) );
|
||||
tabtr.put( "CODTAB", tiporiga );
|
||||
if ( tabtr.read( ) == NOERR )
|
||||
if (newmask)
|
||||
{
|
||||
TList_field& listbox = ( TList_field& ) _msk1->field( F_LBTIPORIGA );
|
||||
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" ); //prof
|
||||
TTable tabtr( "%TRI" );
|
||||
TToken_string keys( "" ), descrs( "" );
|
||||
for ( int i = 1; i <= numtr; i ++ )
|
||||
{
|
||||
keys.add( tabtr.get( "CODTAB" ) );
|
||||
descrs.add( tabtr.get( "S0" ) );
|
||||
TString chiave;
|
||||
TToken_string item;
|
||||
chiave.format( "%d", i );
|
||||
tabtr.zero( );
|
||||
TString tiporiga( app( ).pro( ).get( chiave, "RIGHE" ) ); // pro
|
||||
tabtr.put( "CODTAB", tiporiga );
|
||||
if ( tabtr.read( ) == NOERR )
|
||||
{
|
||||
keys.add( tabtr.get( "CODTAB" ) );
|
||||
descrs.add( tabtr.get( "S0" ) );
|
||||
}
|
||||
else
|
||||
yesnofatal_box( "Inserito un tipo di riga non valido ( %s )", ( const char * )tiporiga );
|
||||
}
|
||||
else
|
||||
{
|
||||
yesnofatal_box( "Inserito un tipo di riga non valido ( %s )", ( const char * )tiporiga );
|
||||
listbox.replace_items( keys, descrs );
|
||||
configura_sheet( *_sheet, *_pro );
|
||||
((TVariable_sheet_field&)sheet()).set_getmask( ss_getmask );
|
||||
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" ); // prof
|
||||
for ( i = 1; i <= numhandler; i ++ )
|
||||
{
|
||||
TString chiave;
|
||||
chiave.format( "%d", i );
|
||||
TToken_string riga = pro( ).get( chiave, "HANDLERS" );
|
||||
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||
}
|
||||
}
|
||||
listbox.replace_items( keys, descrs );
|
||||
((TVariable_sheet_field&)sheet()).set_getmask( ss_getmask );
|
||||
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" );
|
||||
for ( i = 1; i <= numhandler; i ++ )
|
||||
{
|
||||
TString chiave;
|
||||
chiave.format( "%d", i );
|
||||
TToken_string riga = pro( ).get( chiave, "HANDLERS" );
|
||||
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||
}
|
||||
// _msk1->set( F_MEMORIGA, "Riga1" );
|
||||
}
|
||||
|
||||
TMask* TMotore_application::get_mask( int mode )
|
||||
{
|
||||
TString profilo( query_mask( ).get( F_PROFILO ) );
|
||||
{
|
||||
switch ( mode )
|
||||
{
|
||||
case MODE_INS:
|
||||
case MODE_MOD:
|
||||
if( !_msk )
|
||||
delete _msk;
|
||||
get_edit_mask( profilo );
|
||||
if ( edit_mask( ).id2pos( F_OCCASEDIT ) > 0 )
|
||||
edit_mask( ).set_handler( F_OCCASEDIT, occas_handler );
|
||||
if ( edit_mask( ).id2pos( F_CODVAL ) > 0 )
|
||||
edit_mask( ).set_handler( F_CODVAL, val_handler );
|
||||
edit_mask( ).set_handler( F_CODCF, clifo_handler );
|
||||
edit_mask( ).set_handler( F_CODPAG, condpag_hndl );
|
||||
edit_mask( ).set_handler( F_DATAINSC, condpag_hndl );
|
||||
{
|
||||
_profilo = _msk->get( F_PROFILO );
|
||||
_codnum = _msk->get( F_CODNUM );
|
||||
_tipodoc = _msk->get( F_TIPODOC );
|
||||
_anno = _msk->get_int(F_ANNO);
|
||||
_tiponum = _msk->get(F_PROVV);
|
||||
_numdoc = _msk->get_long(F_NDOC);
|
||||
get_edit_mask( _profilo );
|
||||
TMask & emask = edit_mask();
|
||||
if (emask.id2pos( F_OCCASEDIT ) > 0 )
|
||||
emask.set_handler( F_OCCASEDIT, occas_handler );
|
||||
if ( emask.id2pos( F_CODVAL ) > 0 )
|
||||
emask.set_handler( F_CODVAL, val_handler );
|
||||
emask.set_handler( F_CODCF, clifo_handler );
|
||||
emask.set_handler( F_CODPAG, condpag_hndl );
|
||||
emask.set_handler( F_DATAINSC, condpag_hndl );
|
||||
// edit_mask( ).set_handler( 99, elabora_handler );
|
||||
return( _msk1 );
|
||||
break;
|
||||
return( &emask );
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if( !_msk )
|
||||
{
|
||||
_msk = new TMask( "ve1000a" );
|
||||
}
|
||||
if( !_msk1 )
|
||||
{
|
||||
delete _msk1;
|
||||
}
|
||||
if( _msk == NULL)
|
||||
_msk = new TMask( "ve1000a" );
|
||||
return _msk;
|
||||
break;
|
||||
}
|
||||
@ -591,8 +646,8 @@ const char* TMotore_application::get_next_key( )
|
||||
TToken_string key;
|
||||
TMask& m = curr_mask( );
|
||||
|
||||
TString value = m.get( F_CODNUM );
|
||||
if ( value.blank( ) )
|
||||
const TString value = m.get( F_CODNUM );
|
||||
if (value.empty())
|
||||
return NULL;
|
||||
TTable tabnum( "NUM" );
|
||||
tabnum.zero( );
|
||||
@ -634,28 +689,28 @@ int TMotore_application::read( TMask& m )
|
||||
int err = TRelation_application::read( m );
|
||||
if ( err == NOERR )
|
||||
{
|
||||
edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) );
|
||||
edit_mask( ).set( F_DESTIPODOC, query_mask( ).get( F_DESTIPODOC ) );
|
||||
// edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) );
|
||||
// edit_mask( ).set( F_DESTIPODOC, query_mask( ).get( F_DESTIPODOC ) );
|
||||
const char tipocf = m.get( F_TIPOCF )[ 0 ];
|
||||
clifo( ).load( tipocf, m.get_int( F_CODCF ), rel( ).curr( ).get( "OCFPI" ) );
|
||||
clifo( ).update_mask( ( TVariable_mask& ) m, TRUE );
|
||||
TLocalisamfile& rdoc = rel( ).lfile( LF_RIGHEDOC );
|
||||
TRectype r = rdoc.curr( );
|
||||
TRectype& trec = get_relation( )->curr( );
|
||||
TRectype r(rdoc.curr( ));
|
||||
r.zero( );
|
||||
r.put( "CODNUM", trec.get( "CODNUM" ) );
|
||||
r.put( "PROVV", trec.get( "PROVV" ) );
|
||||
r.put( "ANNO", trec.get( "ANNO" ) );
|
||||
r.put( "NDOC", trec.get_long( "NDOC" ) );
|
||||
r.put( "CODNUM", _codnum);
|
||||
r.put( "PROVV", _tiponum);
|
||||
r.put( "ANNO", _anno);
|
||||
r.put( "NDOC", _numdoc);
|
||||
_righe_rec->read( r );
|
||||
TSheet_field& f = ( TSheet_field& ) m.field( F_SHEET );
|
||||
f.destroy( );
|
||||
int last = _righe_rec->last_row( );
|
||||
TRiga currentrow;
|
||||
for ( int i = 1; i <= last; i ++ )
|
||||
{
|
||||
TToken_string& srow = f.row( i - 1 );
|
||||
TRectype& rec = _righe_rec->row( i, FALSE );
|
||||
TRiga currentrow;
|
||||
|
||||
currentrow.load( rec );
|
||||
currentrow.save( srow );
|
||||
currentrow.configura_sheet( f, i - 1 );
|
||||
@ -676,16 +731,12 @@ bool TMotore_application::check_key( TLocalisamfile& rdoc, TString16 codnum, boo
|
||||
|
||||
int TMotore_application::write( const TMask& m )
|
||||
{
|
||||
int err;
|
||||
if ( esegui_procedura( OP_NUOVO ) != NOERR )
|
||||
int err = NOERR;
|
||||
if (esegui_procedura(OP_NUOVO) != NOERR )
|
||||
return FALSE;
|
||||
m.field( F_STATO ).set( _pro->get( "STATOFINALE", "INSERIMENTO" ) );
|
||||
err = NOERR; // avanza_numero( m.get_bool( F_PROVV ) );
|
||||
if ( err == NOERR )
|
||||
{
|
||||
if ( m.id2pos( F_OCCASEDIT) > 0 )
|
||||
err = app( ).clifo( ).write_occas( );
|
||||
}
|
||||
m.field(F_STATO).set( _pro->get( "STATOFINALE", "INSERIMENTO" ) );
|
||||
if ( m.id2pos( F_OCCASEDIT) > 0 )
|
||||
err = app( ).clifo( ).write_occas( );
|
||||
if ( err == NOERR )
|
||||
{
|
||||
err = TRelation_application::write( m );
|
||||
@ -693,8 +744,13 @@ int TMotore_application::write( const TMask& m )
|
||||
{
|
||||
TSheet_field& f = ss( );
|
||||
_righe_rec->destroy_rows( );
|
||||
if ( m.insert_mode( ) )
|
||||
_righe_rec->renum_key( "NRIGA", 1 );
|
||||
TRectype * rec = new TRectype(_righe_rec->key());
|
||||
TRelation * rel = get_relation();
|
||||
rec->put("CODNUM", rel->lfile().get("CODNUM"));
|
||||
rec->put("ANNO", rel->lfile().get("ANNO"));
|
||||
rec->put("PROVV", rel->lfile().get("PROVV"));
|
||||
rec->put("NDOC", rel->lfile().get("NDOC"));
|
||||
_righe_rec->set_key(rec);
|
||||
for ( int i = 0; i < f.items( ); i ++ )
|
||||
{
|
||||
TToken_string& t = f.row( i );
|
||||
@ -712,10 +768,8 @@ int TMotore_application::rewrite( const TMask& m )
|
||||
int err = NOERR;
|
||||
if ( ! valida_operazione( OP_MODIFICA ) )
|
||||
return FALSE;
|
||||
if ( err == NOERR )
|
||||
{
|
||||
if ( m.id2pos( F_OCCASEDIT) > 0 )
|
||||
err = app( ).clifo( ).write_occas( );
|
||||
}
|
||||
if ( err == NOERR )
|
||||
{
|
||||
err = TRelation_application::rewrite( m );
|
||||
@ -723,8 +777,13 @@ int TMotore_application::rewrite( const TMask& m )
|
||||
{
|
||||
TSheet_field& f = ss( );
|
||||
_righe_rec->destroy_rows( );
|
||||
if ( m.insert_mode( ) )
|
||||
_righe_rec->renum_key( "NRIGA", 1 );
|
||||
TRectype * rec = new TRectype(_righe_rec->key());
|
||||
TRelation * rel = get_relation();
|
||||
rec->put("CODNUM", rel->lfile().get("CODNUM"));
|
||||
rec->put("ANNO", rel->lfile().get("ANNO"));
|
||||
rec->put("PROVV", rel->lfile().get("PROVV"));
|
||||
rec->put("NDOC", rel->lfile().get("NDOC"));
|
||||
_righe_rec->set_key(rec);
|
||||
for ( int i = 0; i < f.items( ); i ++ )
|
||||
{
|
||||
TToken_string& t = f.row( i );
|
||||
@ -830,6 +889,13 @@ void TMotore_application::store_riga( TSheet_field& f, int numrig, TRectype& r )
|
||||
|
||||
bool TMotore_application::user_create( )
|
||||
{
|
||||
// Metto in relazione testata e righe
|
||||
_rel = new TRelation( LF_DOC ); // babbalone #5 creava file dopo maschera che la conteneva
|
||||
rel( ).add( LF_RIGHEDOC,"CODNUM=CODNUM|ANNO=ANNO|PROVV=PROVV|NDOC=NDOC" );
|
||||
|
||||
// Inizializzo il Record_array
|
||||
_righe_rec = new TRecord_array( LF_RIGHEDOC, "NRIGA", 1 );
|
||||
|
||||
TConfig ditta( CONFIG_DITTA );
|
||||
|
||||
// Controllo se sono cambiate le impostazioni delle vendite.
|
||||
@ -843,36 +909,17 @@ bool TMotore_application::user_create( )
|
||||
}
|
||||
_clifor = new TCliForVendite( );
|
||||
azzera_piedi( );
|
||||
_msk = new TMask( "VE1000A" );
|
||||
_msk = new TMask( "ve1000a" );
|
||||
query_mask( ).set_handler( F_NDOC, ndoc_handler );
|
||||
query_mask( ).set_handler( F_CODNUM, num_handler );
|
||||
query_mask( ).set_handler( F_TIPODOC, tip_handler );
|
||||
TConfig utente( CONFIG_USER );
|
||||
TString16 codnum( utente.get( "CODNUM", "ve" ) );
|
||||
if ( !codnum.blank( ) )
|
||||
{
|
||||
query_mask( ).set( F_CODNUM, codnum );
|
||||
query_mask( ).set( F_DESNUM, utente.get( "DESNUM", "ve" ) );
|
||||
// }
|
||||
// TString16 tipodoc( utente.get( "TIPODOC", "ve" ) );
|
||||
// if ( !tipodoc.blank( ) )
|
||||
// {
|
||||
TString16 profilo( utente.get( "PROFILO", "ve" ) );
|
||||
query_mask( ).set( F_TIPODOC, utente.get( "TIPODOC", "ve" ) );
|
||||
query_mask( ).set( F_DESTIPODOC, utente.get( "DESTIPODOC", "ve" ) );
|
||||
query_mask( ).set( F_PROFILO, profilo );
|
||||
}
|
||||
_codnum = utente.get( "CODNUM", "ve" );
|
||||
if (!_codnum.blank( ))
|
||||
_tipodoc = utente.get( "TIPODOC", "ve" );
|
||||
// La maschera di inserimento/modifica per ora non la so!
|
||||
// Viene letta dal profilo non appena trovato il record
|
||||
_msk1 = NULL;
|
||||
|
||||
// Metto in relazione testata e righe
|
||||
_rel = new TRelation( LF_DOC );
|
||||
rel( ).add( LF_RIGHEDOC,"CODNUM=CODNUM|ANNO=ANNO|PROVV=PROVV|NDOC=NDOC" );
|
||||
|
||||
// Inizializzo il Record_array
|
||||
_righe_rec = new TRecord_array( LF_RIGHEDOC, "NRIGA", 1 );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -880,16 +927,15 @@ bool TMotore_application::user_destroy( )
|
||||
{
|
||||
// Registro l'ultimo tipo documento e l'ultima numerazione
|
||||
TConfig utente( CONFIG_USER );
|
||||
utente.set( "CODNUM", query_mask( ).get( F_CODNUM ), "ve" );
|
||||
utente.set( "TIPODOC", query_mask( ).get( F_TIPODOC ), "ve" );
|
||||
utente.set( "DESNUM", query_mask( ).get( F_DESNUM ), "ve" );
|
||||
utente.set( "DESTIPODOC", query_mask( ).get( F_DESTIPODOC ), "ve" );
|
||||
utente.set( "PROFILO", query_mask( ).get( F_PROFILO ), "ve" );
|
||||
// Se è ancora allocata, distruggo la maschera di modifica
|
||||
if ( _msk1 ) delete _msk1;
|
||||
utente.set( "CODNUM", _codnum, "ve" );
|
||||
utente.set( "TIPODOC", _tipodoc, "ve" );
|
||||
// utente.set( "DESNUM", query_mask( ).get( F_DESNUM ), "ve" );
|
||||
// utente.set( "DESTIPODOC", query_mask( ).get( F_DESTIPODOC ), "ve" );
|
||||
// utente.set( "PROFILO", _profilo, "ve" );
|
||||
|
||||
// Distruggo la maschera di modifica
|
||||
delete _msk;
|
||||
if ( _msk != NULL )
|
||||
delete _msk;
|
||||
|
||||
// Distruggo la relazione
|
||||
delete _rel;
|
||||
|
44
ve/ve0100.h
44
ve/ve0100.h
@ -76,8 +76,8 @@
|
||||
#include "veuml1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML2_H
|
||||
#include "veuml2.h"
|
||||
#ifndef __VERIG_H
|
||||
#include "verig.h"
|
||||
#endif
|
||||
|
||||
#ifndef __SHEET_H
|
||||
@ -124,6 +124,26 @@
|
||||
#include "sconti.h"
|
||||
#endif
|
||||
|
||||
class TTipo_documento : public TObject
|
||||
|
||||
{
|
||||
TString16 _tipodoc;
|
||||
TString16 _profile;
|
||||
TFilename _profile_file;
|
||||
TMask * _mask;
|
||||
protected:
|
||||
const char * profile_name() {return _profile; }
|
||||
const char * profile_file() {return _profile_file; }
|
||||
|
||||
public:
|
||||
|
||||
const char * tipodoc() { return _tipodoc;}
|
||||
TConfig * create_profile() { return new TConfig(_profile_file);}
|
||||
TMask & mask() { return *_mask;}
|
||||
TTipo_documento(const char * tipodoc);
|
||||
virtual ~TTipo_documento();
|
||||
};
|
||||
|
||||
// Definizione della classe dell'applicazione motore
|
||||
class TMotore_application : public TRelation_application
|
||||
{
|
||||
@ -143,7 +163,7 @@ class TMotore_application : public TRelation_application
|
||||
TMask* _msk;
|
||||
|
||||
// Puntatore alla maschera di modifica/inserimento ( dipende dal profilo )
|
||||
TVariable_mask* _msk1;
|
||||
// TVariable_mask* _msk1;
|
||||
|
||||
// puntatore alla relazione
|
||||
TRelation* _rel;
|
||||
@ -157,12 +177,28 @@ class TMotore_application : public TRelation_application
|
||||
// Indica se il documento ha come soggetto un <C>liente o un <F>ornitore
|
||||
char _tipocf;
|
||||
|
||||
TString16 _profilo;
|
||||
TString16 _codnum;
|
||||
TString16 _tipodoc;
|
||||
int _anno;
|
||||
TString16 _tiponum;
|
||||
long _numdoc;
|
||||
|
||||
// Array di maschere documento
|
||||
|
||||
TAssoc_array _doc_masks;
|
||||
|
||||
// Array di maschere righe
|
||||
|
||||
TAssoc_array _row_masks;
|
||||
|
||||
// Ridefinizione dei metodi virtuali
|
||||
virtual bool user_create( );
|
||||
virtual bool user_destroy( );
|
||||
virtual TMask* get_mask( int mode );
|
||||
virtual bool changing_mask( int mode );
|
||||
virtual TRelation* get_relation( ) const { return _rel;}
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode( TMask& m );
|
||||
virtual int read( TMask& m );
|
||||
virtual bool remove( void );
|
||||
@ -245,7 +281,7 @@ public:
|
||||
TConfig& pro( ) { CHECK( _pro, "Profilo del documento nullo!" ); return *_pro; }
|
||||
TFilename& proname( ) { CHECK( _proname, "Nome del profilo nullo!" ); return *_proname; }
|
||||
TMask& query_mask( ) { CHECK( _msk, "Maschera di ricerca nulla!" ); return *_msk; }
|
||||
TMask& edit_mask( ) { CHECK( _msk1, "Maschera di modifica nulla!" ); return *_msk1; }
|
||||
TMask& edit_mask( ) { return (TMask &) _doc_masks[_tipodoc]; }
|
||||
TRelation& rel( ) { CHECK( _rel, "Relazione nulla!" ); return *_rel; }
|
||||
TSheet_field& sheet( ) { CHECK( _sheet, "Sheet nullo!" ); return *_sheet; }
|
||||
TCliForVendite& clifo( ) { CHECK( _clifor, "Oggetto cliente nullo!" ); return *_clifor; }
|
||||
|
@ -1356,6 +1356,7 @@ void TMask_generator::genera( const TString& profilo )
|
||||
// dal motore, nascondo e adatto le colonne.
|
||||
|
||||
// Generazione maschera dello sheet
|
||||
/*
|
||||
_m->_out << "PA \"Pagina 1\" 8 5 64 13\n";
|
||||
|
||||
id( 101 );
|
||||
@ -1364,7 +1365,9 @@ void TMask_generator::genera( const TString& profilo )
|
||||
_m->end( );
|
||||
_m->end( );
|
||||
_m->endmask( );
|
||||
*/
|
||||
delete _m;
|
||||
fcopy("verig00.msk", _mskname, TRUE);
|
||||
delete _pro;
|
||||
}
|
||||
|
||||
|
117
ve/ve2100.cpp
117
ve/ve2100.cpp
@ -4,18 +4,25 @@
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
||||
|
||||
static void key_disable(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.disable(id);
|
||||
}
|
||||
|
||||
static void key_enable(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.enable(id);
|
||||
}
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
bool _catven; // abilitazione della gestione della categoria di vendita
|
||||
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
bool _catven; // abilitazione della gestione della categoria di vendita
|
||||
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
@ -31,56 +38,56 @@ public:
|
||||
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
int i; // indice di ciclo
|
||||
|
||||
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
|
||||
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
|
||||
else {
|
||||
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
|
||||
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
|
||||
switch (_sconti) {
|
||||
case 'D': // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
set_search_field(F_D_CODCAT); // setta il campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
_msk= new TMask("VE2100R"); // apre la maschera relativa
|
||||
set_search_field(F_R_RICERCA); // setta il campo di ricerca
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) KILL(F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
int i; // indice di ciclo
|
||||
|
||||
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
|
||||
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
|
||||
else {
|
||||
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
|
||||
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
|
||||
switch (_sconti) {
|
||||
case 'D': // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
set_search_field(F_D_CODCAT); // setta il campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
_msk= new TMask("VE2100R"); // apre la maschera relativa
|
||||
set_search_field(F_R_RICERCA); // setta il campo di ricerca
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) key_disable(*_msk, F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
if (_gessco=="A") {
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||
sci_k_id[1]= F_I_SCCLIENTI;
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
for (i=0; i<4; i++) {
|
||||
if (prassid.get_bool("SCOKEY", NULL, i+1)) { // se nel file di config. il campo è abilitato...
|
||||
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
||||
gotcha= TRUE; // ...e viene settato il flag di ok
|
||||
} else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
}
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) KILL(sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
|
||||
return (gotcha);
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||
sci_k_id[1]= F_I_SCCLIENTI;
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
for (i=0; i<4; i++) {
|
||||
if (prassid.get_bool("SCOKEY", NULL, i+1)) { // se nel file di config. il campo è abilitato...
|
||||
key_enable(*_msk, sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
||||
gotcha= TRUE; // ...e viene settato il flag di ok
|
||||
} else key_disable(*_msk, sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
}
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) key_disable(*_msk, sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TTabelle_sconti::user_destroy() {
|
||||
|
@ -7,6 +7,12 @@ ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti di riga " 11 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 75 10
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_R_RICERCA 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
@ -27,18 +33,19 @@ BEGIN
|
||||
OUTPUT F_R_SCONTO SCONTO
|
||||
END
|
||||
|
||||
LISTA F_R_TIPO 1
|
||||
LIST F_R_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
FIELD TIPO
|
||||
FLAGS "D"
|
||||
KEY 1
|
||||
ITEM "R|Sconti di riga"
|
||||
END
|
||||
|
||||
STRING F_R_CODCAT 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendita "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FIELD CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
@ -47,7 +54,8 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_R_CODCAT CODTAB
|
||||
OUTPUT F_R_DESCAT S0
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
CHECKTYPE REQUIRED
|
||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESCAT 50
|
||||
@ -59,7 +67,7 @@ END
|
||||
STRING F_R_CODART 20
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. articolo "
|
||||
FIELD LF_SCONTI->CODART
|
||||
FIELD CODART
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_ANAGR
|
||||
@ -68,13 +76,16 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_R_CODART CODART
|
||||
OUTPUT F_R_DESART DESCR
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
CHECKTYPE SEARCH
|
||||
VALIDATE REQIF_FUNC 1 F_R_UM
|
||||
WARNING "Il codice articolo e' necessario se si specifica l'unita' di misura"
|
||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_UM 2
|
||||
BEGIN
|
||||
PROMPT 50 4 "U.M. "
|
||||
FIELD LF_SCONTI->UM
|
||||
FIELD UM
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_UMART KEY 2
|
||||
@ -84,7 +95,7 @@ BEGIN
|
||||
DISPLAY "U.M." UM
|
||||
DISPLAY "Desccrizione@50" %UMS->S0
|
||||
OUTPUT F_R_UM UM
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
// VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESART 50
|
||||
@ -93,16 +104,11 @@ BEGIN
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 75 10
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_R_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
FIELD SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
422
ve/ve2200.cpp
422
ve/ve2200.cpp
@ -11,39 +11,47 @@
|
||||
#include "veconf.h"
|
||||
|
||||
#define RCONDVEN_APP "ve2 -2 " // nome dell'applicazione di gestione delle righe
|
||||
#define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); }
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
|
||||
static void key_hide(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.hide(id);
|
||||
}
|
||||
|
||||
static void key_disable(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.disable(id);
|
||||
}
|
||||
|
||||
class TCondizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
TString16 _condven; // stringa che indica il tipo di archivio
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
TString16 _condven; // stringa che indica il tipo di archivio
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
|
||||
bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF
|
||||
bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF
|
||||
bool _gest_val, _gest_um, _gest_sca, _gest_so; // booleani per l'abilitazione di valute, unità di misura, scaglioni e sconti/omaggi
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; }
|
||||
virtual bool changing_mask(int) { return FALSE; }
|
||||
virtual TRelation *get_relation() const { return _rel; }
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; }
|
||||
virtual bool changing_mask(int) { return FALSE; }
|
||||
virtual TRelation *get_relation() const { return _rel; }
|
||||
|
||||
static bool handle_mask(TMask &, KEY); // handler custom della maschera (per il tasto di aggancio alle righe)
|
||||
static bool handle_datacam(TMask_field &, KEY); // handler del campo DATACAM (data cambio)
|
||||
static bool handle_valfin(TMask_field &, KEY); // handler del campo VALFIN (data fine validità)
|
||||
static bool handle_codsucc(TMask_field &, KEY); // handler del campo CODSUCC (codice successivo)
|
||||
static bool handle_mask(TMask &, KEY); // handler custom della maschera (per il tasto di aggancio alle righe)
|
||||
static bool handle_datacam(TMask_field &, KEY); // handler del campo DATACAM (data cambio)
|
||||
static bool handle_valfin(TMask_field &, KEY); // handler del campo VALFIN (data fine validità)
|
||||
static bool handle_codsucc(TMask_field &, KEY); // handler del campo CODSUCC (codice successivo)
|
||||
|
||||
virtual int write(const TMask &); // metodo usato per scrivere il record sul file
|
||||
virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file
|
||||
virtual bool remove(); // metodo usato per cancellare il record sul file
|
||||
virtual int write(const TMask &); // metodo usato per scrivere il record sul file
|
||||
virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file
|
||||
virtual bool remove(); // metodo usato per cancellare il record sul file
|
||||
|
||||
public:
|
||||
TCondizioni_vendita() {}
|
||||
virtual ~TCondizioni_vendita() {}
|
||||
TCondizioni_vendita() {}
|
||||
virtual ~TCondizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
@ -55,103 +63,103 @@ TCondizioni_vendita &app() { // funzione che ritorna il riferimento alla classe
|
||||
|
||||
|
||||
bool TCondizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_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
|
||||
else {
|
||||
TMask choose("VE2200"); // 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
|
||||
}
|
||||
_condven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2200X");
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
if (!(prassid.get_bool("GES", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// eliminazione campi di altri archivi
|
||||
DESTROY(F_C_COD);
|
||||
DESTROY(F_O_COD);
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_C_OBBLIG);
|
||||
DESTROY(F_C_DESCF);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_L_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
if (!(prassid.get_bool("GES", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
DESTROY(F_L_COD);
|
||||
DESTROY(F_O_COD);
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_DESVEN);
|
||||
DESTROY(F_L_CODSUCC);
|
||||
DESTROY(F_L_DESSUCC);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
KILL(F_C_TIPOCF);
|
||||
KILL(F_C_CODCF);
|
||||
}
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'O': // offerte
|
||||
if (!(prassid.get_bool("GES", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
DESTROY(F_L_COD);
|
||||
DESTROY(F_C_COD);
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_C_DESCF);
|
||||
DESTROY(F_L_DESVEN);
|
||||
DESTROY(F_C_OBBLIG);
|
||||
DESTROY(F_L_CODSUCC);
|
||||
DESTROY(F_L_DESSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_CONDV); // apre la relazione (un unico file)
|
||||
_msk->set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
_msk->set_handler(handle_mask); // imposta l'handler generale della maschera
|
||||
_msk->set_handler(F_DATACAM, handle_datacam); // imposta l'handler per il campo della data del cambio
|
||||
_msk->set_handler(F_VALFIN, handle_valfin); // imposta l'handler per il campo di fine validità
|
||||
if (!_gest_um) _msk->disable(F_GESTUM); // disabilita condizionalmente il booleano di gestione delle unità di misura
|
||||
if (!_gest_sca) _msk->disable(F_GESTSCAGL); // disabilita condizionalmente il booleano di gestione degli scaglioni
|
||||
if (!_gest_so) _msk->disable(F_GESTSCO); // disabilita condizionalmente il booleano di gestione degli sconti/omaggi
|
||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione delle gastione delle valute
|
||||
if (!_gest_val) { // se la gestione delle valute è disabilitata i campi di gestione vengono disabilitati
|
||||
_msk->disable(F_CODVAL);
|
||||
_msk->disable(F_CAMBIO);
|
||||
_msk->disable(F_DATACAM);
|
||||
}
|
||||
}
|
||||
return (gotcha);
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_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
|
||||
else {
|
||||
TMask choose("VE2200"); // 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
|
||||
}
|
||||
_condven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2200X");
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
if (!(prassid.get_bool("GES", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// eliminazione campi di altri archivi
|
||||
key_hide(*_msk, F_C_COD);
|
||||
key_hide(*_msk, F_O_COD);
|
||||
key_hide(*_msk, F_C_TIPOCF);
|
||||
key_hide(*_msk, F_C_CODCF);
|
||||
key_hide(*_msk, F_C_OBBLIG);
|
||||
key_hide(*_msk, F_C_DESCF);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_L_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
if (!_codlis_catven) key_disable(*_msk, F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
if (!(prassid.get_bool("GES", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
key_hide(*_msk, F_L_COD);
|
||||
key_hide(*_msk, F_O_COD);
|
||||
key_hide(*_msk, F_L_CATVEN);
|
||||
key_hide(*_msk, F_L_DESVEN);
|
||||
key_hide(*_msk, F_L_CODSUCC);
|
||||
key_hide(*_msk, F_L_DESSUCC);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
key_disable(*_msk, F_C_TIPOCF);
|
||||
key_disable(*_msk, F_C_CODCF);
|
||||
}
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'O': // offerte
|
||||
if (!(prassid.get_bool("GES", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
key_hide(*_msk, F_L_COD);
|
||||
key_hide(*_msk, F_C_COD);
|
||||
key_hide(*_msk, F_L_CATVEN);
|
||||
key_hide(*_msk, F_C_TIPOCF);
|
||||
key_hide(*_msk, F_C_CODCF);
|
||||
key_hide(*_msk, F_C_DESCF);
|
||||
key_hide(*_msk, F_L_DESVEN);
|
||||
key_hide(*_msk, F_C_OBBLIG);
|
||||
key_hide(*_msk, F_L_CODSUCC);
|
||||
key_hide(*_msk, F_L_DESSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
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");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_CONDV); // apre la relazione (un unico file)
|
||||
_msk->set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
_msk->set_handler(handle_mask); // imposta l'handler generale della maschera
|
||||
_msk->set_handler(F_DATACAM, handle_datacam); // imposta l'handler per il campo della data del cambio
|
||||
_msk->set_handler(F_VALFIN, handle_valfin); // imposta l'handler per il campo di fine validità
|
||||
if (!_gest_um) _msk->disable(F_GESTUM); // disabilita condizionalmente il booleano di gestione delle unità di misura
|
||||
if (!_gest_sca) _msk->disable(F_GESTSCAGL); // disabilita condizionalmente il booleano di gestione degli scaglioni
|
||||
if (!_gest_so) _msk->disable(F_GESTSCO); // disabilita condizionalmente il booleano di gestione degli sconti/omaggi
|
||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione delle gastione delle valute
|
||||
if (!_gest_val) { // se la gestione delle valute è disabilitata i campi di gestione vengono disabilitati
|
||||
_msk->disable(F_CODVAL);
|
||||
_msk->disable(F_CAMBIO);
|
||||
_msk->disable(F_DATACAM);
|
||||
}
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::user_destroy() {
|
||||
@ -161,111 +169,111 @@ bool TCondizioni_vendita::user_destroy() {
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_mask(TMask &m, KEY k) {
|
||||
if (k==K_F5) { // se viene premuto F5 o selezionato il tasto "Righe" viene lanciata l'applicazione di editing
|
||||
TString &_condven= app()._condven; // prende l'indicatore del tipo di archivio
|
||||
bool &_codlis_catven= app()._codlis_catven; // prende il booleano di attivazione del campo CATVEN
|
||||
TString appname(RCONDVEN_APP); // istanzia e inizializza la stringa con il nome dell'applicazione da lanciare
|
||||
TString body; // istanzia la stringa contenente il corpo del messaggio (lista di inizializzazione dei campi della maschera)
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
body << F_R_L_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_L_CATVEN << "=" << ((_codlis_catven)?(m.get(F_L_CATVEN)):("")) << "|"; // appende il filtro sulla categoria di vendita
|
||||
body << F_R_L_COD << "=" << m.get(F_L_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
case 'C': // contratti
|
||||
body << F_R_C_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_C_TIPOCF << "=" << m.get(F_C_TIPOCF) << "|"; // appende il filtro sul campo tipo cliente/fornitore
|
||||
body << F_R_C_CODCF << "=" << m.get(F_C_CODCF) << "|"; // appende il filtro sul campo codice cliente/fornitore
|
||||
body << F_R_C_COD << "=" << m.get(F_C_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
case 'O': // offerte
|
||||
body << F_R_O_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_O_COD << "=" << m.get(F_O_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
}
|
||||
appname << _condven; // aggiunge al lancio dell'applicazione la selezione del tipo di archivio
|
||||
TMessage msg(cmd2name(appname), MSG_FS, (const char *)body); // istanzia il messaggio per l'applicazione
|
||||
msg.send(); // invia il messaggio all'applicazione
|
||||
TExternal_app ve2_2(appname); // istanzia l'applicazione esterna...
|
||||
ve2_2.run(); // ...la lancia e rimane in attesa del suo termine
|
||||
}
|
||||
return TRUE;
|
||||
if (k==K_F5) { // se viene premuto F5 o selezionato il tasto "Righe" viene lanciata l'applicazione di editing
|
||||
TString &_condven= app()._condven; // prende l'indicatore del tipo di archivio
|
||||
bool &_codlis_catven= app()._codlis_catven; // prende il booleano di attivazione del campo CATVEN
|
||||
TString appname(RCONDVEN_APP); // istanzia e inizializza la stringa con il nome dell'applicazione da lanciare
|
||||
TString body; // istanzia la stringa contenente il corpo del messaggio (lista di inizializzazione dei campi della maschera)
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
body << F_R_L_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_L_CATVEN << "=" << ((_codlis_catven)?(m.get(F_L_CATVEN)):("")) << "|"; // appende il filtro sulla categoria di vendita
|
||||
body << F_R_L_COD << "=" << m.get(F_L_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
case 'C': // contratti
|
||||
body << F_R_C_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_C_TIPOCF << "=" << m.get(F_C_TIPOCF) << "|"; // appende il filtro sul campo tipo cliente/fornitore
|
||||
body << F_R_C_CODCF << "=" << m.get(F_C_CODCF) << "|"; // appende il filtro sul campo codice cliente/fornitore
|
||||
body << F_R_C_COD << "=" << m.get(F_C_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
case 'O': // offerte
|
||||
body << F_R_O_RICERCA << "|"; // appende l'id del campo di ricerca
|
||||
body << F_R_TIPO << "=" << _condven << "|"; // appende il filtro sul tipo
|
||||
body << F_R_O_COD << "=" << m.get(F_O_COD); // appende il filtro sul campo codice
|
||||
break;
|
||||
}
|
||||
appname << _condven; // aggiunge al lancio dell'applicazione la selezione del tipo di archivio
|
||||
TMessage msg(cmd2name(appname), MSG_FS, (const char *)body); // istanzia il messaggio per l'applicazione
|
||||
msg.send(); // invia il messaggio all'applicazione
|
||||
TExternal_app ve2_2(appname); // istanzia l'applicazione esterna...
|
||||
ve2_2.run(); // ...la lancia e rimane in attesa del suo termine
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_datacam(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) { // ad ogni perdita di fuoco viene tentato un accoppiamento tra valuta e data per ottenere il cambio preciso
|
||||
TString datacam(fld.get()); // legge la data di cambio nel campo corrente
|
||||
if (datacam.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString codval(m.get(F_CODVAL)); // prende il codice della valuta
|
||||
if (codval.not_empty()) {
|
||||
TTable cam("CAM"); // apre la tabella cambi
|
||||
cam.put("CODTAB", codval << datacam); // riempie la chiave
|
||||
if (cam.read() == NOERR) m.set(F_CAMBIO, cam.get("R10")); // se la lettura riesce il valore del cambio viene posto nel campo CAMBIO della maschera
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (k==K_TAB) { // ad ogni perdita di fuoco viene tentato un accoppiamento tra valuta e data per ottenere il cambio preciso
|
||||
TString datacam(fld.get()); // legge la data di cambio nel campo corrente
|
||||
if (datacam.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString codval(m.get(F_CODVAL)); // prende il codice della valuta
|
||||
if (codval.not_empty()) {
|
||||
TTable cam("CAM"); // apre la tabella cambi
|
||||
cam.put("CODTAB", codval << datacam); // riempie la chiave
|
||||
if (cam.read() == NOERR) m.set(F_CAMBIO, cam.get("R10")); // se la lettura riesce il valore del cambio viene posto nel campo CAMBIO della maschera
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_valfin(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
if (fld.get().not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
if (m.get(F_VALIN).not_empty()) {
|
||||
TDate valfin(fld.get()); // prende la data di fine validità
|
||||
TDate valin(m.get(F_VALIN)); // prende la data di inizio validità
|
||||
if (valfin<valin) {
|
||||
error_box("La data di inizio validità deve essere minore della data di fine");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (k==K_TAB) {
|
||||
if (fld.get().not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
if (m.get(F_VALIN).not_empty()) {
|
||||
TDate valfin(fld.get()); // prende la data di fine validità
|
||||
TDate valin(m.get(F_VALIN)); // prende la data di inizio validità
|
||||
if (valfin<valin) {
|
||||
error_box("La data di inizio validità deve essere minore della data di fine");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_codsucc(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TString &_condven= app()._condven; // prende il tipo di archivio dall'applicazione principale
|
||||
TString codsucc(fld.get()); // prende il codice successivo dal campo corrente
|
||||
if (codsucc.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString cod; // istanzia la stringa per il codice corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': cod= m.get(F_L_COD); break; // prende il codice listino corrente dal campo della maschera
|
||||
case 'C': cod= m.get(F_C_COD); break; // prende il codice contratto dal campo della maschera
|
||||
}
|
||||
if (codsucc == cod) {
|
||||
error_box("Il codice successivo deve essere diverso dal codice corrente");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (k==K_TAB) {
|
||||
TString &_condven= app()._condven; // prende il tipo di archivio dall'applicazione principale
|
||||
TString codsucc(fld.get()); // prende il codice successivo dal campo corrente
|
||||
if (codsucc.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString cod; // istanzia la stringa per il codice corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': cod= m.get(F_L_COD); break; // prende il codice listino corrente dal campo della maschera
|
||||
case 'C': cod= m.get(F_C_COD); break; // prende il codice contratto dal campo della maschera
|
||||
}
|
||||
if (codsucc == cod) {
|
||||
error_box("Il codice successivo deve essere diverso dal codice corrente");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int TCondizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
if (_condven != "C") f.zero("TIPOCF"); // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
m.autosave(*_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
if (_condven != "C") f.zero("TIPOCF"); // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
_rel->write(); // invoca la scrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
int TCondizioni_vendita::rewrite(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
if (_condven != "C") f.zero("TIPOCF"); // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
m.autosave(*_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
if (_condven != "C") f.zero("TIPOCF"); // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::remove() {
|
||||
TLocalisamfile &condv= _rel->lfile(); // prende il file della testata dalla relazione principale
|
||||
TLocalisamfile &condv= _rel->lfile(); // prende il file della testata dalla relazione principale
|
||||
TLocalisamfile rcondv(LF_RCONDV); // apre il file delle righe per ottenenre il record corrente
|
||||
TRectype delrec(rcondv.curr()); // istanzia il record basato sul file delle righe, da usare come campione
|
||||
delrec.zero(); // svuota il record campione
|
||||
@ -273,9 +281,9 @@ bool TCondizioni_vendita::remove() {
|
||||
delrec.put("COD", condv.get("COD")); // setta il codice della testata
|
||||
if ((_condven=="L") && _codlis_catven) delrec.put("CATVEN", condv.get("CATVEN")); // setta la categoria di vendita se è abilitata e siamo nei listini
|
||||
if (_condven=="C") {
|
||||
delrec.put("TIPOCF", condv.get("TIPOCF")); // setta i dati del cliente/fornitore se siamo nei contratti
|
||||
delrec.put("CODCF", condv.get("CODCF"));
|
||||
}
|
||||
delrec.put("TIPOCF", condv.get("TIPOCF")); // setta i dati del cliente/fornitore se siamo nei contratti
|
||||
delrec.put("CODCF", condv.get("CODCF"));
|
||||
}
|
||||
TRelation delrel(LF_RCONDV); // istanzia una relazione sulle righe
|
||||
TCursor delcur(&delrel, "", 1, &delrec, &delrec); // istanzia il cursore di cancellazione sulla relazione delle righe
|
||||
long n= delcur.items(); // legge il numero di elementi del cursore
|
||||
@ -284,10 +292,10 @@ bool TCondizioni_vendita::remove() {
|
||||
if (n==1) proceed= yesno_box("Esiste una riga collegata a questa testata: verrà anch'essa cancellata. Procedo?"); // viene richiesta conferma alla cancellazione della riga...
|
||||
if (n>1) proceed= yesno_box("Esistono %ld righe collegate a questa testata: verranno anch'esse cancellate. Procedo?", n); // ...o delle righe
|
||||
if (proceed) { // se si conferma le righe vengono cancellate
|
||||
TLocalisamfile &delfile= delcur.file(); // prende riferimento al file delle righe dal cursore
|
||||
for (delcur=0; delcur.pos()<n; ++delcur) delfile.remove(); // ciclo sugli elementi del cursore, cancella i record del file delle righe
|
||||
TLocalisamfile &delfile= delcur.file(); // prende riferimento al file delle righe dal cursore
|
||||
for (delcur=0; delcur.pos()<n; ++delcur) delfile.remove(); // ciclo sugli elementi del cursore, cancella i record del file delle righe
|
||||
} else return FALSE;
|
||||
return (TRelation_application::remove()); // viene invocata la funzione standard di cancellazione del record corrente
|
||||
return (TRelation_application::remove()); // viene invocata la funzione standard di cancellazione del record corrente
|
||||
}
|
||||
|
||||
|
||||
|
@ -5,6 +5,31 @@
|
||||
#include "ve2300.h"
|
||||
#include "veconf.h"
|
||||
|
||||
static void key_hide(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.hide(id);
|
||||
}
|
||||
|
||||
static void key_show(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.show(id);
|
||||
}
|
||||
|
||||
static void key_disable(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.disable(id);
|
||||
}
|
||||
|
||||
static void key_enable(TMask & m, short id, int key = 1)
|
||||
{
|
||||
((TEditable_field &)m.field(id)).reset_key(key);
|
||||
m.enable(id);
|
||||
}
|
||||
|
||||
|
||||
#define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); }
|
||||
#define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); }
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
@ -66,10 +91,10 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // listini
|
||||
DESTROY(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_C_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
key_hide(*_msk, F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
key_hide(*_msk, F_R_C_CODCF);
|
||||
key_hide(*_msk, F_R_C_COD);
|
||||
key_hide(*_msk, F_R_O_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
@ -78,18 +103,18 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
// _msk->hide(F_R_CO_CODLOTTO);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN
|
||||
if (!_codlis_catven) KILL(F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
if (!_codlis_catven) key_disable(*_msk, F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
set_search_field(F_R_L_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'C': // contratti
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
key_hide(*_msk, F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
key_hide(*_msk, F_R_L_COD);
|
||||
key_hide(*_msk, F_R_O_COD);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
@ -98,31 +123,31 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
KILL(F_R_C_TIPOCF);
|
||||
KILL(F_R_C_CODCF);
|
||||
key_disable(*_msk, F_R_C_TIPOCF);
|
||||
key_disable(*_msk, F_R_C_CODCF);
|
||||
}
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
set_search_field(F_R_C_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_C_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_TIPOCF);
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_C_COD);
|
||||
key_hide(*_msk, F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
key_hide(*_msk, F_R_C_TIPOCF);
|
||||
key_hide(*_msk, F_R_C_CODCF);
|
||||
key_hide(*_msk, F_R_L_COD);
|
||||
key_hide(*_msk, F_R_C_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_L_RICERCA);
|
||||
_msk->hide(F_R_C_RICERCA);
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
set_search_field(F_R_O_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_O_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
@ -135,7 +160,7 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
_rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file)
|
||||
_msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
_msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
_um= _gest_um; // abilita le unità di misura in base alla configurazione
|
||||
_um= _gest_um; // abilita le unità di misura in base alla configurazione
|
||||
hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
@ -158,15 +183,15 @@ void TRighe_condizioni_vendita::hide_and_show_codriga() {
|
||||
char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA
|
||||
for (int i=0; i<4; i++) { // ciclo sui quattro campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene reso visibile
|
||||
CREATE(id_campi_1[i]);
|
||||
key_show(*_msk, id_campi_1[i]);
|
||||
_msk->show(id_campi_2[i]);
|
||||
} else { // i campi non corrispondenti al tag vengono resi invisibili
|
||||
DESTROY(id_campi_1[i]);
|
||||
key_hide(*_msk, id_campi_1[i]);
|
||||
_msk->hide(id_campi_2[i]);
|
||||
}
|
||||
}
|
||||
if (_um && (tag_campo=='A')) { REVIVE(F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo...
|
||||
else { KILL(F_R_UM); } // ...altrimenti viene disattivato
|
||||
if (_um && (tag_campo=='A')) { key_enable(*_msk, F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo...
|
||||
else { key_disable(*_msk, F_R_UM); } // ...altrimenti viene disattivato
|
||||
}
|
||||
}
|
||||
|
||||
@ -203,14 +228,14 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if (_gest_um) _um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura
|
||||
hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura"
|
||||
if (_gest_sca && condv.get_bool("GESTSCAGL")) {
|
||||
REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione"
|
||||
key_enable(*_msk, F_R_NSCAGL); // abilita il campo "numero scaglione"
|
||||
_msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione"
|
||||
key_disable(*_msk, F_R_NSCAGL); // disabilita il campo "numero scaglione"
|
||||
_msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (condv.get_bool("SCONST") || (_gest_um && condv.get_bool("GESTSCO"))) _msk->enable(F_R_SCONTO); // abilita il campo "sconto"
|
||||
else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
if (_gest_so && condv.get_bool("GESTSCO")) {
|
||||
_msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio"
|
||||
_msk->enable(F_R_QBASE); // abilita il campo "quantità base x sconto"
|
||||
@ -233,7 +258,7 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
m.autosave(*_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
@ -244,7 +269,7 @@ int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::rewrite(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
m.autosave(*_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
|
48
ve/verig.h
Executable file
48
ve/verig.h
Executable file
@ -0,0 +1,48 @@
|
||||
#ifndef __VERIG_H
|
||||
#define __VERIG_H
|
||||
|
||||
|
||||
#define FR_STATORIGA 101
|
||||
#define FR_TIPORIGA 102
|
||||
#define FR_CODMAG 103
|
||||
#define FR_CODDEP 104
|
||||
// CODART CODSPV CODSPQ CODSPP alternativi definirne uno solo
|
||||
#define FR_CODART 105
|
||||
#define FR_CODSPV 105
|
||||
#define FR_CODSPQ 105
|
||||
#define FR_CODSPP 105
|
||||
// DESCR DESCRSPV DESCPSPQ DESCRSPP alternativi definirne uno solo
|
||||
#define FR_DESCR 106
|
||||
#define FR_DESCRSPV 106
|
||||
#define FR_DESCRSPQ 106
|
||||
#define FR_DESCRSPP 106
|
||||
// UMQTA UMQTASP alternativi definirne uno solo
|
||||
#define FR_UMQTA 107
|
||||
#define FR_UMQTASP 107
|
||||
// QTA PERCSP alternativi definirne uno solo
|
||||
#define FR_QTA 108
|
||||
#define FR_PERCSP 108
|
||||
// PREZZO VALORE alternativi definirne uno solo
|
||||
#define FR_PREZZO 109
|
||||
#define FR_VALORE 109
|
||||
#define FR_QTAEVASA 110
|
||||
#define FR_RIGAEVASA 111
|
||||
#define FR_TARA 112
|
||||
#define FR_PNETTO 113
|
||||
#define FR_NCOLLI 114
|
||||
#define FR_DAEVADERE 115
|
||||
#define FR_SCONTO 116
|
||||
#define FR_PERCPROV 117
|
||||
#define FR_IMPFISUN 118
|
||||
#define FR_IMPFISSO 119
|
||||
#define FR_CODIVA 120
|
||||
#define FR_ADDIVA 121
|
||||
#define FR_ASPBENI 122
|
||||
#define FR_END 123
|
||||
#define MAX_COLUMNS FR_END-FR_STATORIGA
|
||||
|
||||
#define FR_DESMAG 150
|
||||
#define FR_DESDEP 151
|
||||
#define FR_DESIVA 152
|
||||
#define FR_DESASP 153
|
||||
#endif
|
596
ve/verig.uml
Executable file
596
ve/verig.uml
Executable file
@ -0,0 +1,596 @@
|
||||
#ifdef FULL_SCREEN
|
||||
TOOLBAR "" 0 20 0 2
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
ENDPAGE
|
||||
#endif
|
||||
|
||||
#ifndef MASK_WIDTH
|
||||
#define MASK_WIDTH 74
|
||||
#endif
|
||||
|
||||
#ifndef MASK_HEIGHT
|
||||
#define MASK_HEIGHT 19
|
||||
#endif
|
||||
|
||||
#ifndef MASK_TITLE1
|
||||
#define MASK_TITLE1 ""
|
||||
#endif
|
||||
|
||||
PAGE MASK_TITLE1 -1 -1 MASK_WIDTH MASK_HEIGHT
|
||||
|
||||
STRING FR_STATORIGA 2
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING FR_TIPORIGA 2
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
IFDEF(F_CODMAG)
|
||||
STRING FR_CODMAG 3
|
||||
BEGIN
|
||||
IFDEF(X_CODMAG)
|
||||
PROMPT X_CODMAG Y_CODMAG PR_CODMAG
|
||||
ELSEIF
|
||||
PROMPT 2 3 "Magazzino "
|
||||
ENDIF
|
||||
USE MAG SELECT CODTAB ? "???"
|
||||
INPUT CODTAB[1,3] FR_CODMAG
|
||||
DISPLAY "Codice" CODTAB[1,3]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODMAG CODTAB[1,3]
|
||||
OUTPUT FR_DESMAG S0
|
||||
IFDEF(CH_CODMAG)
|
||||
CHECKTYPE CH_CODMAG
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
FLAGS "U"
|
||||
IFDEF(FL_CODMAG)
|
||||
FLAGS FL_CODMAG
|
||||
ENDIF
|
||||
KEY 1
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESMAG)
|
||||
STRING FR_DESMAG 50
|
||||
BEGIN
|
||||
IFDEF(X_DESMAG)
|
||||
PROMPT X_DESMAG Y_DESMAG PR_DESMAG
|
||||
ELSEIF
|
||||
PROMPT 22 3 ""
|
||||
ENDIF
|
||||
IFDEF(FL_DESMAG)
|
||||
FLAGS FL_DESMAG
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODDEP)
|
||||
STRING FR_CODDEP 2
|
||||
BEGIN
|
||||
IFDEF(X_DESMAG)
|
||||
PROMPT X_DESMAG Y_DESMAG PR_DESMAG
|
||||
ELSEIF
|
||||
PROMPT 2 4 "Deposito "
|
||||
ENDIF
|
||||
USE MAG SELECT (CODTAB[1,3]==#FR_CODMAG) && (CODTAB ? "?????")
|
||||
IN CODTAB[1,3] FR_CODMAG
|
||||
IN CODTAB[4,5] FR_CODDEP
|
||||
DISPLAY "Codice mag." CODTAB[1,3]
|
||||
DISPLAY "Codice dep." CODTAB[4,5]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODMAG CODTAB[1,3]
|
||||
OUTPUT FR_CODDEP CODTAB[4,5]
|
||||
OUTPUT FR_DESDEP S0
|
||||
MESSAGE DIRTY,FR_CODMAG|K_TAB,FR_CODMAG
|
||||
IFDEF(CH_CODDEP)
|
||||
CHECKTYPE CH_CODDEP
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
IFDEF(FL_CODDEP)
|
||||
FLAGS FL_CODDEP
|
||||
ENDIF
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESDEP)
|
||||
STRING FR_DESDEP 50
|
||||
BEGIN
|
||||
IFDEF(X_DESDEP)
|
||||
PROMPT X_DESDEP Y_DESDEP PR_DESDEP
|
||||
ELSEIF
|
||||
PROMPT 22 4 ""
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODART)
|
||||
ST FR_CODART 20
|
||||
BEGIN
|
||||
IFDEF(X_CODART)
|
||||
PROMPT X_CODART Y_CODART PR_CODART
|
||||
ELSEIF
|
||||
PROMPT 2 6 "Articolo "
|
||||
ENDIF
|
||||
USE LF_ANAMAG KEY 1
|
||||
INPUT CODART FR_CODART
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FR_CODART CODART
|
||||
OUTPUT FR_DESCR DESCR
|
||||
WARNING "Articolo assente"
|
||||
IFDEF(CH_CODART)
|
||||
CHECKTYPE CH_CODART
|
||||
ELSEIF
|
||||
CHECKTYPE REQUIRED
|
||||
ENDIF
|
||||
IFDEF(FL_CODART)
|
||||
FLAGS FL_CODART
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODSPV)
|
||||
STRING FR_CODSPV 3
|
||||
BEGIN
|
||||
IFDEF(X_CODSPV)
|
||||
PROMPT X_CODSPV Y_CODSPV PR_CODSPV
|
||||
ELSEIF
|
||||
PROMPT 2 6 "Spesa "
|
||||
ENDIF
|
||||
USE SPP SELECT S6=="V"
|
||||
INPUT CODTAB FR_CODSPV
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODSPV CODTAB
|
||||
OUTPUT FR_DESCRSPV S0
|
||||
OUTPUT FR_VALORE R0
|
||||
OUTPUT FR_CODIVA S1[1,4]
|
||||
IFDEF(CH_CODSPV)
|
||||
CHECKTYPE CH_CODSPV
|
||||
ELSEIF
|
||||
CHECKTYPE REQUIRED
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODSPQ)
|
||||
STRING FR_CODSPQ 3
|
||||
BEGIN
|
||||
IFDEF(X_CODSPQ)
|
||||
PROMPT X_CODSPQ Y_CODSPQ PR_CODSPQ
|
||||
ELSEIF
|
||||
PROMPT 2 6 "Spesa "
|
||||
ENDIF
|
||||
USE SPP SELECT S6=="Q"
|
||||
INPUT CODTAB FR_CODSPQ
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODSPQ CODTAB
|
||||
OUTPUT FR_DESCRSPQ S0
|
||||
OUTPUT FR_PREZZO R0
|
||||
OUTPUT FR_CODIVA S1[1,4]
|
||||
IFDEF(CH_CODSPQ)
|
||||
CHECKTYPE CH_CODSPQ
|
||||
ELSEIF
|
||||
CHECKTYPE REQUIRED
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODSPP)
|
||||
STRING FR_CODSPP 3
|
||||
BEGIN
|
||||
IFDEF(X_CODSPP)
|
||||
PROMPT X_CODSPP Y_CODSPP PR_CODSPP
|
||||
ELSEIF
|
||||
PROMPT 2 6 "Spesa "
|
||||
ENDIF
|
||||
USE SPP SELECT S6=="P"
|
||||
INPUT CODTAB FR_CODSPP
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODSPP CODTAB
|
||||
OUTPUT FR_DESCRSPP S0
|
||||
OUTPUT FR_PERCSP R0
|
||||
OUTPUT FR_CODIVA S1[1,4]
|
||||
IFDEF(CH_CODSPP)
|
||||
CHECKTYPE CH_CODSPP
|
||||
ELSEIF
|
||||
CHECKTYPE REQUIRED
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESCR)
|
||||
ZOOM FR_DESCR 50
|
||||
BEGIN
|
||||
IFDEF(X_DESCR)
|
||||
PROMPT X_DESCR Y_DESCR PR_DESCR
|
||||
ELSEIF
|
||||
PROMPT 2 7 "Descrizione "
|
||||
ENDIF
|
||||
USE LF_ANAMAG KEY 2
|
||||
INPUT DESCR FR_DESCR
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
OUTPUT FR_CODART CODART
|
||||
OUTPUT FR_DESCR DESCR
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESCRSPV)
|
||||
ZOOM FR_DESCRSPV 50
|
||||
BEGIN
|
||||
IFDEF(X_DESCRSPV)
|
||||
PROMPT X_DESCRSPV Y_DESCRSPV PR_DESCRSPV
|
||||
ELSEIF
|
||||
PROMPT 2 7 "Descrizione "
|
||||
ENDIF
|
||||
USE SPP KEY 2 SELECT S6=="V"
|
||||
INPUT S0 FR_DESCRSPV
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
COPY OUTPUT FR_CODSPV
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESCRSPQ)
|
||||
ZOOM FR_DESCRSPQ 50
|
||||
BEGIN
|
||||
IFDEF(X_DESCRSPV)
|
||||
PROMPT X_DESCRSPQ Y_DESCRSPQ PR_DESCRSPQ
|
||||
ELSEIF
|
||||
PROMPT 2 7 "Descrizione "
|
||||
ENDIF
|
||||
USE SPP KEY 2 SELECT S6=="Q"
|
||||
INPUT S0 FR_DESCRSPQ
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
COPY OUTPUT FR_CODSPQ
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESCRSPP)
|
||||
ZOOM FR_DESCRSPP 50
|
||||
BEGIN
|
||||
IFDEF(X_DESCRSPP)
|
||||
PROMPT X_DESCRSPP Y_DESCRSP PR_DESCRSPP
|
||||
ELSEIF
|
||||
PROMPT 2 7 "Descrizione "
|
||||
ENDIF
|
||||
USE SPP KEY 2 SELECT S6=="P"
|
||||
INPUT S0 FR_DESCRSPP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice spesa" CODTAB
|
||||
COPY OUTPUT FR_CODSPP
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_UMQTA)
|
||||
STRING FR_UMQTA 2
|
||||
BEGIN
|
||||
IFDEF(X_UMQTA)
|
||||
PROMPT X_UMQTA Y_UMQTA PR_UMQTA
|
||||
ELSEIF
|
||||
PROMPT 2 9 "U.M. "
|
||||
ENDIF
|
||||
USE LF_UMART KEY 2
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT CODART FR_CODART SE
|
||||
INPUT UM FR_UMQTA
|
||||
DISPLAY "Codice@20" UM
|
||||
DISPLAY "Descrizione@50" %UMS->S0
|
||||
OUTPUT FR_UMQTA UM
|
||||
IFDEF(CH_UMQTA)
|
||||
CHECKTYPE CH_UMQTA
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_UMQTASP)
|
||||
STRING FR_UMQTASP 2
|
||||
BEGIN
|
||||
IFDEF(X_UMQTASP)
|
||||
PROMPT X_UMQTASP Y_UMQTASP PR_UMQTASP
|
||||
ELSEIF
|
||||
PROMPT 2 9 "U.M. "
|
||||
ENDIF
|
||||
USE %UMS
|
||||
INPUT CODTAB FR_UMQTASP
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_UMQTASP CODTAB
|
||||
IFDEF(CH_UMQTASP)
|
||||
CHECKTYPE CH_UMQTASP
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_QTA)
|
||||
NUMBER FR_QTA 11 3
|
||||
BEGIN
|
||||
IFDEF(X_QTA)
|
||||
PROMPT X_QTA Y_QTA PR_QTA
|
||||
ELSEIF
|
||||
PROMPT 22 9 "Qta' "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_PERCSP)
|
||||
NUMBER FR_QTA 6 2
|
||||
BEGIN
|
||||
IFDEF(X_PERCSP)
|
||||
PROMPT X_PERCSP Y_PERCSP PR_PERCSP
|
||||
ELSEIF
|
||||
PROMPT 22 9 "%Spesa "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_PREZZO)
|
||||
NUMBER FR_PREZZO 15 3
|
||||
BEGIN
|
||||
IFDEF(X_PREZZO)
|
||||
PROMPT X_PREZZO Y_PREZZO PR_PREZZO
|
||||
ELSEIF
|
||||
PROMPT 42 9 "Prezzo "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_VALORE)
|
||||
NUMBER FR_VALORE 15 3
|
||||
BEGIN
|
||||
IFDEF(X_VALORE)
|
||||
PROMPT X_VALORE Y_VALORE PR_VALORE
|
||||
ELSEIF
|
||||
PROMPT 42 9 "Valore "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_QTAEVASA)
|
||||
NUMBER FR_QTAEVASA 11 3
|
||||
BEGIN
|
||||
IFDEF(X_QTAEVASA)
|
||||
PROMPT X_QTAEVASA Y_QTAEVASA PR_QTAEVASA
|
||||
ELSEIF
|
||||
PROMPT 17 10 "Q.ta evasa "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_RIGAEVASA)
|
||||
BOOLEAN FR_RIGAEVASA
|
||||
BEGIN
|
||||
IFDEF(X_RIGAEVASA)
|
||||
PROMPT X_RIGAEVASA Y_RIGAEVASA PR_RIGAEVASA
|
||||
ELSEIF
|
||||
PROMPT 42 10 "Saldata "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_TARA)
|
||||
NUMBER FR_TARA 15 2
|
||||
BEGIN
|
||||
IFDEF(X_TARA)
|
||||
PROMPT X_TARA Y_TARA PR_TARA
|
||||
ELSEIF
|
||||
PROMPT 2 11 "Tara "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_PNETTO)
|
||||
NUMBER FR_PNETTO 15 2
|
||||
BEGIN
|
||||
IFDEF(X_PNETTO)
|
||||
PROMPT X_PNETTO Y_PNETTO PR_PNETTO
|
||||
ELSEIF
|
||||
PROMPT 30 11 "Peso netto "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_NCOLLI)
|
||||
NUMBER FR_NCOLLI 7
|
||||
BEGIN
|
||||
IFDEF(X_NCOLLI)
|
||||
PROMPT X_NCOLLI Y_NCOLLI PR_NCOLLI
|
||||
ELSEIF
|
||||
PROMPT 2 12 "N.Colli "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DAEVADERE)
|
||||
BOOLEAN FR_DAEVADERE
|
||||
BEGIN
|
||||
IFDEF(X_DAEVADERE)
|
||||
PROMPT X_DAEVADERE Y_DAEVADERE PR_DAEVADERE
|
||||
ELSEIF
|
||||
PROMPT 22 12 "Da evadere "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_SCONTO)
|
||||
STRING FR_SCONTO 25
|
||||
BEGIN
|
||||
IFDEF(X_SCONTO)
|
||||
PROMPT X_SCONTO Y_SCONTO PR_SCONTO
|
||||
ELSEIF
|
||||
PROMPT 2 13 "Sconto "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_PERCPROV)
|
||||
NUMBER FR_PERCPROV 5 2
|
||||
BEGIN
|
||||
IFDEF(X_PERCPROV)
|
||||
PROMPT X_PERCPROV Y_PERCPROV PR_PERCPROV
|
||||
ELSEIF
|
||||
PROMPT 42 13 "Perc.Provv. "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_IMPFISUN)
|
||||
BOOLEAN FR_IMPFISUN
|
||||
BEGIN
|
||||
IFDEF(X_IMPFISUN)
|
||||
PROMPT X_IMPFISUN Y_IMPFISUN PR_IMPFISUN
|
||||
ELSEIF
|
||||
PROMPT 2 14 "Importo provv.unitario"
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
|
||||
IFDEF(F_IMPFISSO)
|
||||
NUMBER FR_IMPFISSO 18 2
|
||||
BEGIN
|
||||
IFDEF(X_IMPFISSO)
|
||||
PROMPT X_IMPFISSO Y_IMPFISSO PR_IMPFISSO
|
||||
ELSEIF
|
||||
PROMPT 42 14 "Imp.Provv. "
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODIVA)
|
||||
STRING FR_CODIVA 4
|
||||
BEGIN
|
||||
IFDEF(X_CODIVA)
|
||||
PROMPT X_CODIVA Y_CODIVA PR_CODIVA
|
||||
ELSEIF
|
||||
PROMPT 2 15 "Cod. IVA "
|
||||
ENDIF
|
||||
USE %IVA
|
||||
INPUT CODTAB FR_CODIVA
|
||||
DISPLAY "Codice@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODIVA CODTAB
|
||||
OUTPUT FR_DESIVA S0
|
||||
FLAGS "U"
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
IFDEF(CH_CODIVA)
|
||||
CHECKTYPE CH_CODIVA
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESIVA)
|
||||
STRING FR_DESIVA 50
|
||||
BEGIN
|
||||
IFDEF(X_DESIVA)
|
||||
PROMPT X_DESIVA Y_DESIVA PR_DESIVA
|
||||
ELSEIF
|
||||
PROMPT 22 15 ""
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_ADDIVA)
|
||||
BOOLEAN FR_ADDIVA
|
||||
BEGIN
|
||||
IFDEF(X_ADDIVA)
|
||||
PROMPT X_ADDIVA Y_ADDIVA PR_ADDIVA
|
||||
ELSEIF
|
||||
PROMPT 2 16 "Addebito IVA"
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_ASPBENI)
|
||||
STRING FR_ASPBENI 2
|
||||
BEGIN
|
||||
IFDEF(X_ASPBENI)
|
||||
PROMPT X_ASPBENI Y_ASPBENI PR_ASPBENI
|
||||
ELSEIF
|
||||
PROMPT 2 17 "Aspetto Beni "
|
||||
ENDIF
|
||||
USE %ABE
|
||||
INPUT CODTAB FR_ASPBENI
|
||||
DISPLAY "Codice@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_ASPBENI CODTAB
|
||||
OUTPUT FR_DESASP S0
|
||||
FLAGS "UZ"
|
||||
IFDEF(CH_ASPBENI)
|
||||
CHECKTYPE CH_ASPBENI
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_DESASP)
|
||||
STRING FR_DESASP 50
|
||||
BEGIN
|
||||
IFDEF(X_DESASP)
|
||||
PROMPT X_DESASP Y_DESASP PR_DESASP
|
||||
ELSEIF
|
||||
PROMPT 22 17 ""
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
|
||||
#ifndef FULL_SCREEN
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
#endif
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
29
ve/verig00.uml
Executable file
29
ve/verig00.uml
Executable file
@ -0,0 +1,29 @@
|
||||
#include "verigdef.h"
|
||||
|
||||
DEFINE_FIELD(CODMAG)
|
||||
DEFINE_FIELD(DESMAG)
|
||||
DEFINE_FIELD(CODDEP)
|
||||
DEFINE_FIELD(DESDEP)
|
||||
DEFINE_FIELD(CODART)
|
||||
DEFINE_FIELD(DESCR)
|
||||
DEFINE_FIELD(UMQTA)
|
||||
DEFINE_FIELD(QTA)
|
||||
DEFINE_FIELD(PREZZO)
|
||||
DEFINE_FIELD(QTAEVASA)
|
||||
DEFINE_FIELD(RIGAEVASA)
|
||||
DEFINE_FIELD(TARA)
|
||||
DEFINE_FIELD(PNETTO)
|
||||
DEFINE_FIELD(NCOLLI)
|
||||
DEFINE_FIELD(DAEVADERE)
|
||||
DEFINE_FIELD(SCONTO)
|
||||
DEFINE_FIELD(PERCPROV)
|
||||
DEFINE_FIELD(IMPFISSO)
|
||||
DEFINE_FIELD(IMPFISUN)
|
||||
DEFINE_FIELD(CODIVA)
|
||||
DEFINE_FIELD(DESIVA)
|
||||
DEFINE_FIELD(ADDIVA)
|
||||
DEFINE_FIELD(ASPBENI)
|
||||
DEFINE_FIELD(DESASP)
|
||||
|
||||
|
||||
#include "verig.uml"
|
29
ve/verig01.uml
Executable file
29
ve/verig01.uml
Executable file
@ -0,0 +1,29 @@
|
||||
#include "verigdef.h"
|
||||
|
||||
#define FULL_SCREEN
|
||||
// else
|
||||
// #define MASK_WIDTH 60
|
||||
// #define MASK_HEIGHT 14
|
||||
//
|
||||
#define MASK_TITLE1 "Merce"
|
||||
|
||||
|
||||
DEFINE_FIELD(CODMAG)
|
||||
// F_POS(CODMAG, 2, 3, "Magazzino ")
|
||||
// F_FLG(CODMAG, "U")
|
||||
// F_CHK(CODMAG, REQUIRED)
|
||||
DEFINE_FIELD(DESMAG)
|
||||
DEFINE_FIELD(CODDEP)
|
||||
DEFINE_FIELD(DESDEP)
|
||||
DEFINE_FIELD(CODART)
|
||||
DEFINE_FIELD(DESCR)
|
||||
DEFINE_FIELD(UMQTA)
|
||||
DEFINE_FIELD(QTA)
|
||||
DEFINE_FIELD(PREZZO)
|
||||
DEFINE_FIELD(SCONTO)
|
||||
DEFINE_FIELD(PERCPROV)
|
||||
DEFINE_FIELD(CODIVA)
|
||||
DEFINE_FIELD(DESIVA)
|
||||
|
||||
#include "verig.uml"
|
||||
|
15
ve/verig02.uml
Executable file
15
ve/verig02.uml
Executable file
@ -0,0 +1,15 @@
|
||||
#include "verigdef.h"
|
||||
|
||||
#define FULL_SCREEN
|
||||
|
||||
#define MASK_TITLE1 "Spese di tipo (Valore)"
|
||||
|
||||
DEFINE_FIELD(CODSPV)
|
||||
DEFINE_FIELD(DESCRSPV)
|
||||
DEFINE_FIELD(VALORE)
|
||||
DEFINE_FIELD(SCONTO)
|
||||
DEFINE_FIELD(CODIVA)
|
||||
DEFINE_FIELD(DESIVA)
|
||||
|
||||
#include "verig.uml"
|
||||
|
17
ve/verig03.uml
Executable file
17
ve/verig03.uml
Executable file
@ -0,0 +1,17 @@
|
||||
#include "verigdef.h"
|
||||
|
||||
#define FULL_SCREEN
|
||||
|
||||
#define MASK_TITLE1 "Spese di tipo (Quantita'/Prezzo)"
|
||||
|
||||
DEFINE_FIELD(CODSPQ)
|
||||
DEFINE_FIELD(DESCRSPQ)
|
||||
DEFINE_FIELD(UMQTASP)
|
||||
DEFINE_FIELD(QTA)
|
||||
DEFINE_FIELD(PREZZO)
|
||||
DEFINE_FIELD(SCONTO)
|
||||
DEFINE_FIELD(CODIVA)
|
||||
DEFINE_FIELD(DESIVA)
|
||||
|
||||
#include "verig.uml"
|
||||
|
14
ve/verig04.uml
Executable file
14
ve/verig04.uml
Executable file
@ -0,0 +1,14 @@
|
||||
#include "verigdef.h"
|
||||
|
||||
#define FULL_SCREEN
|
||||
|
||||
#define MASK_TITLE1 "Spese di tipo (Percentuale)"
|
||||
|
||||
DEFINE_FIELD(CODSPP)
|
||||
DEFINE_FIELD(DESCRSPP)
|
||||
DEFINE_FIELD(PERCSP)
|
||||
DEFINE_FIELD(CODIVA)
|
||||
DEFINE_FIELD(DESIVA)
|
||||
|
||||
#include "verig.uml"
|
||||
|
17
ve/verigdef.h
Executable file
17
ve/verigdef.h
Executable file
@ -0,0 +1,17 @@
|
||||
#define INCLDEF(file) !include file
|
||||
#define IFDEF(name) !ifdef name
|
||||
#define IF(cond) !if cond
|
||||
#define ENDIF !endif
|
||||
#define ELSEIF !else
|
||||
|
||||
#define DEFINE_FIELD(name) !define F_##name ;
|
||||
|
||||
#define F_POS(name, row, col, prompt) !define X_##name row ;\
|
||||
!define Y_##name col ;\
|
||||
!define PR_##name prompt ;
|
||||
|
||||
#define F_FLG(name, flags) !define FL_##name flags ;
|
||||
|
||||
#define F_CHK(name, type) !define CH_##name type ;
|
||||
INCLDEF("verig.h")
|
||||
|
Loading…
x
Reference in New Issue
Block a user