Create le maschere e il programma per la configurazione delle vendite
git-svn-id: svn://10.65.10.50/trunk@1825 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
416f1d589f
commit
2a2192541b
447
ve/tclifor.cpp
447
ve/tclifor.cpp
@ -1,182 +1,265 @@
|
||||
#ifndef __TCLIFOR_H
|
||||
#include "tclifor.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML1_H
|
||||
#include "veuml1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE1000O_H
|
||||
#include "ve1000o.h"
|
||||
#endif
|
||||
|
||||
const TString& TData_picker::get( const TString& table, const TString& codtab, const TString& field )
|
||||
{
|
||||
if( table != _tablename )
|
||||
{
|
||||
delete _table;
|
||||
_table = new TTable( table );
|
||||
_tablename = table;
|
||||
}
|
||||
if( codtab != _table->curr( ).get( "CODTAB" ) )
|
||||
{
|
||||
_table->zero( );
|
||||
_table->put( "CODTAB", codtab );
|
||||
_table->read( );
|
||||
}
|
||||
return _table->get( field );
|
||||
};
|
||||
|
||||
void TData_picker::set( TMask& m, const int mskfield, const TString& value )
|
||||
{
|
||||
if( present( m, mskfield ) )
|
||||
{
|
||||
m.set( mskfield, value, TRUE );
|
||||
m.field( mskfield ).check( );
|
||||
}
|
||||
};
|
||||
|
||||
const TString& TData_picker::get( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get( fieldname );
|
||||
}
|
||||
|
||||
int TData_picker::get_int( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_int( fieldname );
|
||||
}
|
||||
|
||||
long TData_picker::get_long( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_long( fieldname );
|
||||
}
|
||||
|
||||
bool TData_picker::get_bool( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_bool( fieldname );
|
||||
}
|
||||
|
||||
int TCliFor::write_occas( )
|
||||
{
|
||||
if( !occasionale( ) )
|
||||
return NOERR;
|
||||
TRelation occas( LF_OCCAS );
|
||||
occas_mask( ).autosave( &occas );
|
||||
return occas.write( );
|
||||
}
|
||||
|
||||
TCliFor::TCliFor( ) : TData_picker( LF_CLIFO ), _occas_mask( "ve1000o" )
|
||||
{
|
||||
_occas_mask.set_handler( O_CODICE, occas_code_handler );
|
||||
add( LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF" );
|
||||
}
|
||||
|
||||
void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
|
||||
{
|
||||
_tipocf = tipocf;
|
||||
_codcf = codcf;
|
||||
zero( );
|
||||
curr( ).put( "TIPOCF", tipocf );
|
||||
curr( ).put( "CODCF", codcf );
|
||||
lfile( ).setkey( 1 );
|
||||
if( read( ) != NOERR )
|
||||
yesnofatal_box( "Il %s %d non è stato trovato!", tipocf == 'C'?"cliente":"fornitore", codcf );
|
||||
_occas = curr().get_bool( "OCCAS" );
|
||||
if ( occasionale( ) )
|
||||
{
|
||||
TRelation occrel( LF_OCCAS );
|
||||
occrel.curr( ).zero( );
|
||||
occrel.curr( ).put( "CFPI", ocfpi );
|
||||
occrel.read( );
|
||||
occas_mask( ).autoload( &occrel );
|
||||
}
|
||||
}
|
||||
|
||||
void TCliForVendite::update_mask( TMask& m, bool onload )
|
||||
{
|
||||
// Setta i campi che appartengono al file LF_CLIFO
|
||||
bool occas = occasionale( );
|
||||
show( m, F_OCFPI, occas );
|
||||
show( m, F_OCCASEDIT, occas );
|
||||
// In forse per l'Occasionale, sicuri per il Normale
|
||||
m.show( F_COFI, !occas );
|
||||
m.show( F_STATOPAIVA, !occas );
|
||||
m.show( F_PAIVA, !occas );
|
||||
set( m, F_RAGSOC, LF_CLIFO, "RAGSOC" );
|
||||
if( !onload )
|
||||
{
|
||||
set( m, F_CODVAL, LF_CLIFO, "CODVAL" );
|
||||
set( m, F_CODLIN, LF_CLIFO, "CODLIN" );
|
||||
set( m, F_CODPAG, LF_CLIFO, "CODPAG" );
|
||||
// Questo nonb va qua, ma nella read
|
||||
set( m, F_DATAINSC, m.get( F_DATADOC ) );
|
||||
set( m, F_CODABIA, LF_CLIFO, "CODABI" );
|
||||
set( m, F_CODCABA, LF_CLIFO, "CODCAB" );
|
||||
// Setta i campi che appartengono al file LF_CFVEN
|
||||
set( m, F_CODABIP, LF_CFVEN, "CODABIPR" );
|
||||
set( m, F_CODCABP, LF_CFVEN, "CODCABPR" );
|
||||
set( m, F_RAGGR, LF_CFVEN, "RAGGDOC" );
|
||||
set( m, F_CODINDSP, LF_CFVEN, "CODINDSP" );
|
||||
set( m, F_CODAG, LF_CFVEN, "CODAG" );
|
||||
set( m, F_CODSPMEZZO, LF_CFVEN, "CODSPMEZZO" );
|
||||
set( m, F_CODPORTO, LF_CFVEN, "CODPORTO" );
|
||||
set( m, F_CODNOTESP1, LF_CFVEN, "CODNOTESP1" );
|
||||
set( m, F_CODNOTESP2, LF_CFVEN, "CODNOTESP2" );
|
||||
set( m, F_CODVETT1, LF_CFVEN, "CODVETT1" );
|
||||
set( m, F_CODVETT2, LF_CFVEN, "CODVETT2" );
|
||||
set( m, F_CODVETT3, LF_CFVEN, "CODVETT3" );
|
||||
set( m, F_SPESEINC, LF_CFVEN, "ADDSPINC" );
|
||||
set( m, F_ADDBRB, LF_CFVEN, "ADDBOLLIRB" );
|
||||
set( m, F_ADDBTR, LF_CFVEN, "ADDBOLLITR" );
|
||||
}
|
||||
if ( occasionale ( ) )
|
||||
{
|
||||
// set( m, F_COFI, "" );
|
||||
// set( m, F_PAIVA, "" );
|
||||
set( m, F_OCFPI, occas_mask( ).get( O_CODICE ) );
|
||||
set( m, F_RAGSOC, occas_mask( ).get( O_RAGSOC ) );
|
||||
set( m, F_INDCF, occas_mask( ).get( O_INDIRIZZO ) );
|
||||
set( m, F_CIVCF, occas_mask( ).get( O_NUMERO ) );
|
||||
set( m, F_CAPCF, occas_mask( ).get( O_CAP ) );
|
||||
set( m, F_COMCF, occas_mask( ).get( O_COMUNE ) );
|
||||
set( m, F_STATOCF, occas_mask( ).get( O_STATO ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
set( m, F_COFI, LF_CLIFO, "COMCF" );
|
||||
set( m, F_INDCF, LF_CLIFO, "INDCF" );
|
||||
set( m, F_CIVCF, LF_CLIFO, "CIVCF" );
|
||||
set( m, F_STATOPAIVA, LF_CLIFO, "STATOPAIV" );
|
||||
set( m, F_PAIVA, LF_CLIFO, "PAIV" );
|
||||
set( m, F_LOCALITACF, LF_CLIFO, "LOCALITACF" );
|
||||
set( m, F_CAPCF, LF_CLIFO, "CAPCF" );
|
||||
set( m, F_COMCF, LF_CLIFO, "COMCF" );
|
||||
set( m, F_STATOCF, LF_CLIFO, "STATOCF" );
|
||||
}
|
||||
}
|
||||
|
||||
void TCliFor::edita_occasionale( )
|
||||
{
|
||||
CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" );
|
||||
_occas_mask.run( );
|
||||
};
|
||||
|
||||
bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
const char* code = f.get();
|
||||
if (*code)
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
occas.lfile().put("CFPI", code);
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
f.mask().autoload(&occas);
|
||||
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
f.mask().send_key(K_TAB, O_COMUNENAS);
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#ifndef __TCLIFOR_H
|
||||
#include "tclifor.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML1_H
|
||||
#include "veuml1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE1000O_H
|
||||
#include "ve1000o.h"
|
||||
#endif
|
||||
|
||||
const TString& TData_picker::get( const TString& table, const TString& codtab, const TString& field )
|
||||
{
|
||||
if( table != _tablename )
|
||||
{
|
||||
delete _table;
|
||||
_table = new TTable( table );
|
||||
_tablename = table;
|
||||
}
|
||||
if( codtab != _table->curr( ).get( "CODTAB" ) )
|
||||
{
|
||||
_table->zero( );
|
||||
_table->put( "CODTAB", codtab );
|
||||
_table->read( );
|
||||
}
|
||||
return _table->get( field );
|
||||
};
|
||||
|
||||
const TString& TData_picker::get( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get( fieldname );
|
||||
}
|
||||
|
||||
int TData_picker::get_int( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_int( fieldname );
|
||||
}
|
||||
|
||||
long TData_picker::get_long( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_long( fieldname );
|
||||
}
|
||||
|
||||
bool TData_picker::get_bool( const int file, const TString& fieldname )
|
||||
{
|
||||
return lfile( file ).get_bool( fieldname );
|
||||
}
|
||||
|
||||
int TCliFor::write_occas( )
|
||||
{
|
||||
if( !occasionale( ) )
|
||||
return NOERR;
|
||||
TRelation occas( LF_OCCAS );
|
||||
occas_mask( ).autosave( &occas );
|
||||
return occas.write( );
|
||||
}
|
||||
|
||||
TCliFor::TCliFor( ) : TData_picker( LF_CLIFO ), _occas_mask( "ve1000o" )
|
||||
{
|
||||
_occas_mask.set_handler( O_CODICE, occas_code_handler );
|
||||
add( LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF" );
|
||||
}
|
||||
|
||||
void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
|
||||
{
|
||||
_tipocf = tipocf;
|
||||
_codcf = codcf;
|
||||
zero( );
|
||||
curr( ).put( "TIPOCF", tipocf );
|
||||
curr( ).put( "CODCF", codcf );
|
||||
lfile( ).setkey( 1 );
|
||||
if( read( ) != NOERR )
|
||||
yesnofatal_box( "Il %s %d non è stato trovato!", tipocf == 'C'?"cliente":"fornitore", codcf );
|
||||
_occas = curr().get_bool( "OCCAS" );
|
||||
if ( occasionale( ) )
|
||||
{
|
||||
TRelation occrel( LF_OCCAS );
|
||||
occrel.curr( ).zero( );
|
||||
occrel.curr( ).put( "CFPI", ocfpi );
|
||||
occrel.read( );
|
||||
occas_mask( ).autoload( &occrel );
|
||||
}
|
||||
}
|
||||
|
||||
void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
|
||||
{
|
||||
TString16 stato;
|
||||
|
||||
// Setta i campi che appartengono al file LF_CLIFO
|
||||
bool occas = occasionale( );
|
||||
m.show( F_OCFPI, occas );
|
||||
m.show( F_OCCASEDIT, occas );
|
||||
// In forse per l'Occasionale, sicuri per il Normale
|
||||
m.show( F_COFI, !occas );
|
||||
m.show( F_STATOPAIVA, !occas );
|
||||
m.show( F_PAIVA, !occas );
|
||||
set( m, F_RAGSOC, LF_CLIFO, "RAGSOC" );
|
||||
if( !onload )
|
||||
{
|
||||
set( m, F_CODVAL, LF_CLIFO, "CODVAL" );
|
||||
set( m, F_CODLIN, LF_CLIFO, "CODLIN" );
|
||||
set( m, F_CODPAG, LF_CLIFO, "CODPAG" );
|
||||
set( m, F_CODABIA, LF_CLIFO, "CODABI" );
|
||||
set( m, F_CODCABA, LF_CLIFO, "CODCAB" );
|
||||
// Setta i campi che appartengono al file LF_CFVEN
|
||||
set( m, F_CODABIP, LF_CFVEN, "CODABIPR" );
|
||||
set( m, F_CODCABP, LF_CFVEN, "CODCABPR" );
|
||||
set( m, F_RAGGR, LF_CFVEN, "RAGGDOC" );
|
||||
set( m, F_CODINDSP, LF_CFVEN, "CODINDSP" );
|
||||
set( m, F_CODAG, LF_CFVEN, "CODAG" );
|
||||
set( m, F_CODSPMEZZO, LF_CFVEN, "CODSPMEZZO" );
|
||||
set( m, F_CODPORTO, LF_CFVEN, "CODPORTO" );
|
||||
set( m, F_CODNOTESP1, LF_CFVEN, "CODNOTESP1" );
|
||||
set( m, F_CODNOTESP2, LF_CFVEN, "CODNOTESP2" );
|
||||
set( m, F_CODVETT1, LF_CFVEN, "CODVETT1" );
|
||||
set( m, F_CODVETT2, LF_CFVEN, "CODVETT2" );
|
||||
set( m, F_CODVETT3, LF_CFVEN, "CODVETT3" );
|
||||
set( m, F_SPESEINC, LF_CFVEN, "ADDSPINC" );
|
||||
set( m, F_ADDBRB, LF_CFVEN, "ADDBOLLIRB" );
|
||||
set( m, F_ADDBTR, LF_CFVEN, "ADDBOLLITR" );
|
||||
}
|
||||
if ( occasionale ( ) )
|
||||
{
|
||||
m.set( F_COFI, "" );
|
||||
m.set( F_PAIVA, "" );
|
||||
m.set( F_OCFPI, occas_mask( ).get( O_CODICE ) );
|
||||
m.set( F_RAGSOC, occas_mask( ).get( O_RAGSOC ) );
|
||||
m.set( F_INDCF, occas_mask( ).get( O_INDIRIZZO ) );
|
||||
m.set( F_CIVCF, occas_mask( ).get( O_NUMERO ) );
|
||||
m.set( F_CAPCF, occas_mask( ).get( O_CAP ) );
|
||||
m.set( F_COMCF, occas_mask( ).get( O_COMUNE ) );
|
||||
m.set( F_STATOCF, stato = occas_mask( ).get( O_STATO ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
set( m, F_COFI, LF_CLIFO, "COFI" );
|
||||
set( m, F_INDCF, LF_CLIFO, "INDCF" );
|
||||
set( m, F_CIVCF, LF_CLIFO, "CIVCF" );
|
||||
set( m, F_STATOPAIVA, LF_CLIFO, "STATOPAIV" );
|
||||
set( m, F_PAIVA, LF_CLIFO, "PAIV" );
|
||||
set( m, F_LOCALITACF, LF_CLIFO, "LOCALITACF" );
|
||||
set( m, F_CAPCF, LF_CLIFO, "CAPCF" );
|
||||
set( m, F_COMCF, LF_CLIFO, "COMCF" );
|
||||
stato = get( LF_CLIFO, "STATOCF" );
|
||||
m.set( F_STATOCF, stato );
|
||||
}
|
||||
if ( !stato.blank( ) )
|
||||
m.set( F_DESSTATOCF, get( "%STA", stato, "S0" ) );
|
||||
TString16 tmpstr( m.get( F_CODPAG ) );
|
||||
if( !tmpstr.blank( ) )
|
||||
{
|
||||
m.field( F_CODPAG ).on_hit( );
|
||||
m.field( F_CODPAG ).check( );
|
||||
}
|
||||
tmpstr = m.get( F_CODLIN );
|
||||
if( !tmpstr.blank( ) )
|
||||
m.field( F_CODLIN ).check( );
|
||||
imposta_dati_comune( m );
|
||||
imposta_indirizzo_spedizione( m );
|
||||
}
|
||||
|
||||
void TCliFor::edita_occasionale( )
|
||||
{
|
||||
CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" );
|
||||
_occas_mask.run( );
|
||||
};
|
||||
|
||||
bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
const char* code = f.get();
|
||||
if (*code)
|
||||
{
|
||||
TRelation occas(LF_OCCAS);
|
||||
occas.lfile().put("CFPI", code);
|
||||
if (occas.read(_isequal) == NOERR)
|
||||
{
|
||||
f.mask().autoload(&occas);
|
||||
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
||||
f.mask().send_key(K_TAB, O_COMUNENAS);
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_dati_comune( TMask_vendite& m )
|
||||
{
|
||||
TLocalisamfile comuni(LF_COMUNI);
|
||||
comuni.setkey( 1 );
|
||||
if( occasionale( ) )
|
||||
{
|
||||
comuni.put( "COM", occas_mask( ).get( O_COMUNE ));
|
||||
comuni.put( "STATO", occas_mask( ).get( O_STATO ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
comuni.put( "COM", get( LF_CLIFO, "COMCF" ));
|
||||
comuni.put( "STATO", get( LF_CLIFO, "STATOCF" ) );
|
||||
}
|
||||
comuni.read( );
|
||||
m.set( F_DENCOM, comuni.get( "DENCOM" ) );
|
||||
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
|
||||
}
|
||||
|
||||
void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
|
||||
{
|
||||
TString16 stato;
|
||||
if( occasionale( ) )
|
||||
{
|
||||
m.set( F_CODINDSP, "" );
|
||||
m.disable( F_CODINDSP );
|
||||
m.set( F_RAGSOCSP, occas_mask( ).get( O_RAGSOC ) );
|
||||
m.set( F_INDSP, occas_mask( ).get( O_INDIRIZZO ) );
|
||||
m.set( F_CIVSP, occas_mask( ).get( O_NUMERO ) );
|
||||
// Sugli occasionali non c'è la località
|
||||
m.set( F_LOCALITASP, "" );
|
||||
m.set( F_CAPSP, occas_mask( ).get( O_CAP ) );
|
||||
m.set( F_COMSP, occas_mask( ).get( O_COMUNE ) );
|
||||
m.set( F_STATOSP, stato = occas_mask( ).get( O_STATO ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
TString16 codindsp( m.get( F_CODINDSP ) );
|
||||
if( codindsp.blank( ) )
|
||||
{
|
||||
m.set( F_RAGSOCSP, "" );
|
||||
m.set( F_INDSP, "" );
|
||||
m.set( F_CIVSP, "" );
|
||||
m.set( F_LOCALITASP, "" );
|
||||
m.set( F_CAPSP, "" );
|
||||
m.set( F_COMSP, "" );
|
||||
m.set( F_STATOSP, "" );
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLocalisamfile indsped( LF_INDSP );
|
||||
indsped.setkey( 1 );
|
||||
indsped.put( "TIPOCF", _tipocf );
|
||||
indsped.put( "CODCF", _codcf );
|
||||
indsped.put( "CODIND", atoi( codindsp ) );
|
||||
if( indsped.read( ) != NOERR )
|
||||
yesnofatal_box( "Indirizzo di spedizione non trovato!" );
|
||||
m.set( F_RAGSOCSP, indsped.get( "RAGSOC" ) );
|
||||
m.set( F_INDSP, indsped.get( "INDIR" ) );
|
||||
m.set( F_CIVSP, indsped.get( "CIV" ) );
|
||||
m.set( F_LOCALITASP, indsped.get( "LOCALITA" ) );
|
||||
m.set( F_CAPSP, indsped.get( "CAP" ) );
|
||||
m.set( F_COMSP, indsped.get( "COM" ) );
|
||||
m.set( F_STATOSP, stato = indsped.get( "STATO" ) );
|
||||
}
|
||||
}
|
||||
if ( !stato.blank( ) )
|
||||
m.set( F_DESSTATOSP, get( "%STA", stato, "S0" ) );
|
||||
TLocalisamfile comuni(LF_COMUNI);
|
||||
comuni.setkey( 1 );
|
||||
comuni.put( "COM", m.get( F_COMSP ) );
|
||||
comuni.put( "STATO", m.get( F_STATOSP ) );
|
||||
comuni.read( );
|
||||
m.set( F_DENCOMSP, comuni.get( "DENCOM" ) );
|
||||
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
|
||||
}
|
142
ve/tclifor.h
142
ve/tclifor.h
@ -1,70 +1,72 @@
|
||||
#ifndef __TCLIFOR_H
|
||||
#define __TCLIFOR_H
|
||||
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
class TData_picker : public TRelation
|
||||
{
|
||||
private:
|
||||
|
||||
TTable* _table;
|
||||
TString16 _tablename;
|
||||
|
||||
public:
|
||||
TData_picker( const int mainfile ) : TRelation ( mainfile ) { }
|
||||
const TString& get( const TString& table, const TString& codtab, const TString& field );
|
||||
const TString& get( const int file, const TString& fieldname );
|
||||
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 );
|
||||
bool present( TMask& m, const int mskfield ){ return ( m.id2pos( mskfield ) >= 0 ); }
|
||||
void set( TMask& m, const int mskfield, const int file, const TString& filefield ){ set( m, mskfield, get( file, filefield ) ); };
|
||||
void set( TMask& m, const int mskfield, const TString& value );
|
||||
void show( TMask& m, const int mskfield, const bool show = TRUE ){ if( present( m, mskfield ) ) m.show( mskfield, show ); };
|
||||
void hide( TMask& m, const int mskfield ){ show( m, mskfield, FALSE ); };
|
||||
};
|
||||
|
||||
class TCliFor : public TData_picker
|
||||
{
|
||||
private:
|
||||
|
||||
char _tipocf;
|
||||
long _codcf;
|
||||
bool _occas;
|
||||
TMask _occas_mask;
|
||||
|
||||
public:
|
||||
|
||||
TCliFor( );
|
||||
void load( const char tipocf, const long codcf, const TString& ocfpi );
|
||||
bool occasionale( ){ return get_bool( LF_CLIFO, "OCCAS" ); };
|
||||
TMask& occas_mask( ){ return _occas_mask; };
|
||||
static bool occas_code_handler(TMask_field& f, KEY key);
|
||||
int write_occas( );
|
||||
void edita_occasionale( );
|
||||
|
||||
};
|
||||
|
||||
class TCliForVendite : public TCliFor
|
||||
{
|
||||
public:
|
||||
|
||||
void update_mask( TMask& m, bool onload = FALSE );
|
||||
};
|
||||
|
||||
#endif
|
||||
#ifndef __TCLIFOR_H
|
||||
#define __TCLIFOR_H
|
||||
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __TMASKVEN_H
|
||||
#include "tmaskven.h"
|
||||
#endif
|
||||
|
||||
class TData_picker : public TRelation
|
||||
{
|
||||
private:
|
||||
|
||||
TTable* _table;
|
||||
TString16 _tablename;
|
||||
|
||||
public:
|
||||
TData_picker( const int mainfile ) : TRelation ( mainfile ) { }
|
||||
const TString& get( const TString& table, const TString& codtab, const TString& field );
|
||||
const TString& get( const int file, const TString& fieldname );
|
||||
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( TMask_vendite& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
|
||||
};
|
||||
|
||||
class TCliFor : public TData_picker
|
||||
{
|
||||
private:
|
||||
|
||||
bool _occas;
|
||||
TMask _occas_mask;
|
||||
|
||||
protected:
|
||||
|
||||
char _tipocf;
|
||||
long _codcf;
|
||||
|
||||
public:
|
||||
|
||||
TCliFor( );
|
||||
void load( const char tipocf, const long codcf, const TString& ocfpi );
|
||||
bool occasionale( ){ return get_bool( LF_CLIFO, "OCCAS" ); };
|
||||
TMask& occas_mask( ){ return _occas_mask; };
|
||||
static bool occas_code_handler(TMask_field& f, KEY key);
|
||||
int write_occas( );
|
||||
void edita_occasionale( );
|
||||
};
|
||||
|
||||
class TCliForVendite : public TCliFor
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
void update_mask( TMask_vendite& m, bool onload = FALSE );
|
||||
void imposta_dati_comune( TMask_vendite& m );
|
||||
void imposta_indirizzo_spedizione( TMask_vendite& m );
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -73,7 +73,7 @@ TIPOCF = 2
|
||||
CODCF = 3
|
||||
RAGSOC = 2
|
||||
OCCAS = 0
|
||||
OCFPI = 0
|
||||
OCFPI = 1
|
||||
COFI = 1
|
||||
STATOPAIV = 1
|
||||
PAIVA = 1
|
||||
@ -177,6 +177,7 @@ DESUMPNETTO = 2
|
||||
DESUMTARA = 2
|
||||
DESCRMAG1 = 2
|
||||
DESCRMAG2 = 2
|
||||
OCCASEDIT = 2
|
||||
|
||||
[SHEET]
|
||||
NCOLS=4
|
||||
@ -208,6 +209,23 @@ NHANDLER=0
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
=
|
||||
1000 = 0
|
||||
2000 = 0
|
||||
1400 = 0
|
||||
2400 = 0
|
||||
1800 = 0
|
||||
2800 =
|
||||
1100 = 0
|
||||
2100 = 0
|
||||
1500 = 0
|
||||
2500 = 0
|
||||
1900 = 0
|
||||
2900 =
|
||||
1200 = 0
|
||||
2200 = 0
|
||||
29 =
|
||||
1600 = 0
|
||||
2600 = 0
|
||||
101 = 0
|
||||
100 = 2
|
||||
200 = 2
|
||||
@ -215,24 +233,11 @@ NHANDLER=0
|
||||
400 = 2
|
||||
500 = 2
|
||||
600 = 2
|
||||
1300 = 0
|
||||
700 = 2
|
||||
2300 = 0
|
||||
800 = 2
|
||||
900 = 2
|
||||
1000 = 2
|
||||
1100 = 2
|
||||
1200 = 2
|
||||
1300 = 2
|
||||
1400 = 2
|
||||
1500 = 2
|
||||
1600 = 2
|
||||
1700 = 2
|
||||
1800 = 2
|
||||
1900 = 2
|
||||
2000 = 2
|
||||
2100 = 2
|
||||
2200 = 2
|
||||
2300 = 2
|
||||
2400 = 2
|
||||
2500 = 2
|
||||
2600 = 2
|
||||
1700 = 0
|
||||
2700 =
|
||||
|
||||
|
2408
ve/ve0100.cpp
2408
ve/ve0100.cpp
File diff suppressed because it is too large
Load Diff
@ -14,4 +14,5 @@
|
||||
#define NO_DOC_STATUS -2
|
||||
|
||||
#define F_SHEET 500
|
||||
#define F_MEMORIGA 501
|
||||
#define BASE_PIEDE 600
|
||||
|
220
ve/ve0100c.cpp
220
ve/ve0100c.cpp
@ -1,95 +1,125 @@
|
||||
// Handler di marco sui campi delle maschere
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASKFLD_H
|
||||
#include <maskfld.h>
|
||||
#endif
|
||||
|
||||
#ifndef __KEYS_H
|
||||
#include <keys.h>
|
||||
#endif
|
||||
|
||||
#ifndef __STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML_H
|
||||
#include "VeUML.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML1_H
|
||||
#include "VeUML1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#endif
|
||||
|
||||
bool ora_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
if (field.to_check(key))
|
||||
{
|
||||
TFixed_string ora(field.get(),6);
|
||||
ora.trim();
|
||||
if (ora.not_empty() || field.required())
|
||||
{
|
||||
// bool changed = FALSE;
|
||||
if (isdigit(ora[0]))
|
||||
{
|
||||
if (ora[2] != ':')
|
||||
{
|
||||
if (ora.len()>4) ora.overwrite(":",2);
|
||||
else ora.insert(":", 2);
|
||||
// changed = TRUE;
|
||||
}
|
||||
}
|
||||
bool ok;
|
||||
ok = ((isdigit(ora[0]))&&(isdigit(ora[1]))&&(isdigit(ora[3]))&&(isdigit(ora[4])));
|
||||
ok &= ((atoi(&(ora[0]))<24)&&(atoi(&(ora[3]))<60));
|
||||
if (!ok)
|
||||
{
|
||||
error_box("Ora errata o formato non valido");
|
||||
return FALSE;
|
||||
}
|
||||
else /* if (changed) */
|
||||
{
|
||||
field.set((ora));
|
||||
// field.picture_data((ora),TRUE);
|
||||
// field.picture_data((ora.strip(":")),FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool codcli_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
if (field.to_check(key))
|
||||
{
|
||||
field.send_key(K_TAB,F_CODVAL);
|
||||
field.send_key(K_TAB,F_CODLIN);
|
||||
field.send_key(K_TAB,F_CODPAG);
|
||||
field.send_key(K_TAB,F_CODABIA);
|
||||
field.send_key(K_TAB,F_CODCABA);
|
||||
field.send_key(K_TAB,F_INDSP);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool dummy_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
warning_box("Al campo %d è arrivato un KEY %d",field.dlg(),key);
|
||||
return TRUE;
|
||||
}
|
||||
// Handler di marco sui campi delle maschere
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASKFLD_H
|
||||
#include <maskfld.h>
|
||||
#endif
|
||||
|
||||
#ifndef __KEYS_H
|
||||
#include <keys.h>
|
||||
#endif
|
||||
|
||||
#ifndef __STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML_H
|
||||
#include "VeUML.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VEUML1_H
|
||||
#include "VeUML1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PAGAMENT_H
|
||||
#include "..\cg\pagament.h"
|
||||
#endif
|
||||
|
||||
bool ora_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
if (field.to_check(key))
|
||||
{
|
||||
TFixed_string ora(field.get(),6);
|
||||
ora.trim();
|
||||
if (ora.not_empty() || field.required())
|
||||
{
|
||||
// bool changed = FALSE;
|
||||
if (isdigit(ora[0]))
|
||||
{
|
||||
if (ora[2] != ':')
|
||||
{
|
||||
if (ora.len()>4) ora.overwrite(":",2);
|
||||
else ora.insert(":", 2);
|
||||
// changed = TRUE;
|
||||
}
|
||||
}
|
||||
bool ok;
|
||||
ok = ((isdigit(ora[0]))&&(isdigit(ora[1]))&&(isdigit(ora[3]))&&(isdigit(ora[4])));
|
||||
ok &= ((atoi(&(ora[0]))<24)&&(atoi(&(ora[3]))<60));
|
||||
if (!ok)
|
||||
{
|
||||
error_box("Ora errata o formato non valido");
|
||||
return FALSE;
|
||||
}
|
||||
else /* if (changed) */
|
||||
{
|
||||
field.set((ora));
|
||||
// field.picture_data((ora),TRUE);
|
||||
// field.picture_data((ora.strip(":")),FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool codcli_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
if (field.to_check(key))
|
||||
{
|
||||
field.send_key(K_TAB,F_CODVAL);
|
||||
field.send_key(K_TAB,F_CODLIN);
|
||||
field.send_key(K_TAB,F_CODPAG);
|
||||
field.send_key(K_TAB,F_CODABIA);
|
||||
field.send_key(K_TAB,F_CODCABA);
|
||||
field.send_key(K_TAB,F_INDSP);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool dummy_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
warning_box("Al campo %d è arrivato un KEY %d",field.dlg(),key);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool condpag_hndl(TMask_field& field, KEY key)
|
||||
{
|
||||
|
||||
if (key == K_TAB)
|
||||
{
|
||||
if (field.to_check(key))
|
||||
{
|
||||
TMask& m = field.mask( );
|
||||
TString16 condpag( m.get( F_CODPAG ) );
|
||||
TString16 data( m.get( F_DATAINSC ) );
|
||||
if ( condpag.blank( ) || data.blank( ) )
|
||||
return TRUE;
|
||||
TPagamento pag( condpag, data );
|
||||
pag.set_total( 100, 10, 10 );
|
||||
pag.set_rate_auto( );
|
||||
int numrate = pag.n_rate( );
|
||||
for( int i = 0; i < numrate; i ++ )
|
||||
m.set( F_DATASCAD1 + i, pag.data_rata( i ).string( ) );
|
||||
for( ; i < 5; i ++ )
|
||||
m.hide( F_DATASCAD1 + i );
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
15
ve/ve0100c.h
15
ve/ve0100c.h
@ -1,7 +1,8 @@
|
||||
#define __VE0100C_H
|
||||
|
||||
// Handlers per i campi delle bolle
|
||||
|
||||
extern bool ora_hndl(TMask_field& field, KEY key);
|
||||
extern bool codcli_hndl(TMask_field& field, KEY key);
|
||||
extern bool dummy_hndl(TMask_field& field, KEY key);
|
||||
#define __VE0100C_H
|
||||
|
||||
// Handlers per i campi delle bolle
|
||||
|
||||
extern bool ora_hndl(TMask_field& field, KEY key);
|
||||
extern bool codcli_hndl(TMask_field& field, KEY key);
|
||||
extern bool dummy_hndl(TMask_field& field, KEY key);
|
||||
extern bool condpag_hndl(TMask_field& field, KEY key);
|
182
ve/ve0200.cpp
182
ve/ve0200.cpp
@ -1,67 +1,115 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CONFAPP_H
|
||||
#include <confapp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __EXECP_H
|
||||
#include <execp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
// #include "ve5.h"
|
||||
|
||||
class Conf_vendite_app : public TConfig_application
|
||||
{
|
||||
|
||||
public:
|
||||
virtual bool preprocess_config (TMask& mask, TConfig& config);
|
||||
virtual bool postprocess_config (TMask& mask, TConfig& config);
|
||||
|
||||
Conf_vendite_app() : TConfig_application(CONFIG_DITTA) {}
|
||||
virtual ~Conf_vendite_app() {}
|
||||
};
|
||||
|
||||
bool Conf_vendite_app::preprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
disable_menu_item(M_FILE_NEW);
|
||||
disable_menu_item(M_FILE_REVERT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool Conf_vendite_app::postprocess_config(TMask& mask, TConfig& config)
|
||||
{ TExternal_app *cl;
|
||||
TTable t("TIP");
|
||||
t.first();
|
||||
while( ! t.eof() )
|
||||
{
|
||||
TString s( "Eseguirò \"vegenmsk " );
|
||||
s << t.get( "S1" );
|
||||
s << "\"!";
|
||||
message_box( s );
|
||||
s = "vegenmsk ";
|
||||
s << t.get( "S1" );
|
||||
cl = new TExternal_app( s );
|
||||
cl->run( );
|
||||
delete cl;
|
||||
t.next();
|
||||
}
|
||||
enable_menu_item(M_FILE_NEW);
|
||||
enable_menu_item(M_FILE_REVERT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ve0200(int argc, char** argv)
|
||||
{
|
||||
Conf_vendite_app appc;
|
||||
|
||||
appc.run(argc, argv, "Parametri gestione vendite");
|
||||
return 0;
|
||||
}
|
||||
#include <xvt.h>
|
||||
|
||||
#ifndef __CHECKS_H
|
||||
#include <checks.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CONFAPP_H
|
||||
#include <confapp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __EXECP_H
|
||||
#include <execp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
class TConf_vendite : public TConfig_application
|
||||
{
|
||||
private:
|
||||
|
||||
bool _changed;
|
||||
|
||||
public:
|
||||
virtual bool preprocess_config (TMask& mask, TConfig& config);
|
||||
virtual bool postprocess_config_changed (const char* par, const char* var,
|
||||
const char* oldv, const char* newv);
|
||||
virtual bool postprocess_config (TMask& mask, TConfig& config);
|
||||
virtual bool user_create( );
|
||||
virtual bool user_destroy( );
|
||||
|
||||
TConf_vendite() : TConfig_application( CONFIG_DITTA ){ }
|
||||
virtual ~TConf_vendite( ){ }
|
||||
};
|
||||
|
||||
bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
disable_menu_item(M_FILE_NEW);
|
||||
disable_menu_item(M_FILE_REVERT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
_changed = FALSE;
|
||||
enable_menu_item(M_FILE_NEW);
|
||||
enable_menu_item(M_FILE_REVERT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool TConf_vendite::postprocess_config_changed (const char* par, const char* var,
|
||||
const char* oldv, const char* newv)
|
||||
{
|
||||
// Notifica al motore che la configurazione è cambiata: occorre rigenerare le maschere
|
||||
_changed = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TConf_vendite::user_create( )
|
||||
{
|
||||
char msk = argv(2)[0];
|
||||
// Devo usare un puntatore così deletandolo si registra
|
||||
TConfig confditta( CONFIG_DITTA );
|
||||
switch( msk )
|
||||
{
|
||||
case 'a':
|
||||
case 'A':
|
||||
confditta.set( "EdMask", "ve0200a" "ve" );
|
||||
break;
|
||||
case 'b':
|
||||
case 'B':
|
||||
confditta.set( "EdMask", "ve0200b" "ve" );
|
||||
break;
|
||||
case 'c':
|
||||
case 'C':
|
||||
confditta.set( "EdMask", "ve0200c" "ve" );
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
confditta.set( "EdMask", "ve0200d" "ve" );
|
||||
break;
|
||||
case 'e':
|
||||
case 'E':
|
||||
confditta.set( "EdMask", "ve0200e" "ve" );
|
||||
break;
|
||||
default:
|
||||
fatal_box( "Sintassi: VE0 -2 [a|b|c|d|e]" );
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TConf_vendite::user_destroy( )
|
||||
{
|
||||
if( _changed )
|
||||
{
|
||||
TConfig confditta( CONFIG_DITTA );
|
||||
confditta.set( "EdMask", "", "ve" );
|
||||
confditta.set( "CHANGED", "X", "ve" );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ve0200(int argc, char** argv)
|
||||
{
|
||||
TConf_vendite appc;
|
||||
|
||||
if( argc < 3 )
|
||||
fatal_box( "Sintassi: VE0 -2 [a|b|c|d|e]" );
|
||||
appc.run(argc, argv, "Parametri gestione vendite");
|
||||
return 0;
|
||||
}
|
||||
|
270
ve/ve0200a.uml
Executable file
270
ve/ve0200a.uml
Executable file
@ -0,0 +1,270 @@
|
||||
/* toolbar */
|
||||
#include "ve0200b.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 15
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione listini/contratti/campagne 1/2"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cumula articolo/listino/listino"
|
||||
FIELD CUMULAALC
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione archivio listini"
|
||||
MESSAGE FALSE DISABLE,1@
|
||||
MESSAGE TRUE ENABLE,1@
|
||||
FIELD GESLIS
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione codice categoria vendite+codice listino"
|
||||
FIELD GESLISCV
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 5 "Gestione listini per unita di misura"
|
||||
FIELD GESLISUM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione listino a scaglioni"
|
||||
FIELD GESLISSCA
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESLISSO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gestione archivio contratti"
|
||||
MESSAGE FALSE DISABLE,2@
|
||||
MESSAGE TRUE ENABLE,2@
|
||||
FIELD GESCON
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 10 "Gestione codice contratto"
|
||||
FIELD GESCONCC
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 11 "Gestione contratti per unita di misura"
|
||||
FIELD GESCONUM
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione contratto a scaglioni"
|
||||
FIELD GESCONSCA
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESCONSO
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 15
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione listini/contratti/campagne 2/2"
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gestione archivio campagne"
|
||||
MESSAGE TRUE ENABLE,3@
|
||||
MESSAGE FALSE DISABLE,3@
|
||||
FIELD GESCAM
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione campagne per unita di misura"
|
||||
FIELD GESCAMUM
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione campagne a scaglioni"
|
||||
FIELD GESCAMSCA
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 5 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESCAMSO
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
LIST DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 7 "Sequenza di ricerca righe"
|
||||
ITEM "A|Codice articolo"
|
||||
ITEM "L|Codice linea"
|
||||
ITEM "C|Codice linea/categoria"
|
||||
ITEM "R|Codice raggruppamento fiscale"
|
||||
ITEM " | "
|
||||
FIELD SEQRICRIGHE[ 1 ]
|
||||
END
|
||||
|
||||
LIST DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 8 " "
|
||||
ITEM "A|Codice articolo"
|
||||
ITEM "L|Codice linea"
|
||||
ITEM "C|Codice linea/categoria"
|
||||
ITEM "R|Codice raggruppamento fiscale"
|
||||
ITEM " | "
|
||||
FIELD SEQRICRIGHE[ 2 ]
|
||||
END
|
||||
|
||||
LIST DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 9 " "
|
||||
ITEM "A|Codice articolo"
|
||||
ITEM "L|Codice linea"
|
||||
ITEM "C|Codice linea/categoria"
|
||||
ITEM "R|Codice raggruppamento fiscale"
|
||||
ITEM " | "
|
||||
FIELD SEQRICRIGHE[ 3 ]
|
||||
END
|
||||
|
||||
LIST DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 10 " "
|
||||
ITEM "A|Codice articolo"
|
||||
ITEM "L|Codice linea"
|
||||
ITEM "C|Codice linea/categoria"
|
||||
ITEM "R|Codice raggruppamento fiscale"
|
||||
ITEM " | "
|
||||
FIELD SEQRICRIGHE[ 4 ]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione sconti " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 10
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione Sconti"
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo gestione sconti documenti "
|
||||
ITEM "N|Non gestire"
|
||||
ITEM "P|Percentuale su anagrafica "
|
||||
ITEM "T|Gestione tabella sconti "
|
||||
ITEM "A|Gestione archivio sconti "
|
||||
FIELD GESSCO
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 2 "Chiave archivio sconti "
|
||||
ITEM "V|Tab. categorie vendite "
|
||||
ITEM "C|Tab. sconti clienti "
|
||||
ITEM "Z|Tab. zone "
|
||||
ITEM "M|Tab. modalità di pagamento "
|
||||
FIELD SCOKEY
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 3 "Tipo calcolo sconti documento "
|
||||
ITEM "R|Sconti sulle righe merci "
|
||||
ITEM "G|Sconti sul valore globale merci "
|
||||
FIELD SCOTIPCAL
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione sconti ad importo "
|
||||
FIELD GESSCOIMP
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 5 "Tipo gestione sconti riga "
|
||||
ITEM "N|Non gestire"
|
||||
ITEM "L|Perc. su anagrafica/listini/contratti "
|
||||
ITEM "A|Gest. arch. sconti "
|
||||
ITEM "V|Gest. arch. con cat. vendita cliente "
|
||||
ITEM "C|Perc. indicata su anagrafica cliente "
|
||||
FIELD GESSCORIGA
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 6 "Chiave archivio sconti di riga "
|
||||
ITEM "A|Codice articolo "
|
||||
ITEM "L|Codice linea "
|
||||
ITEM "C|Codice linea/categoria "
|
||||
ITEM "R|Codice raggruppamento fiscale "
|
||||
FIELD
|
||||
SCORIGAKEY
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Gestione archivio sconti a scaglioni "
|
||||
GESSCOSCA
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 8 "Gestione archivio sconti unità di misura "
|
||||
GESSCOUM
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
12
ve/ve0200b.h
Executable file
12
ve/ve0200b.h
Executable file
@ -0,0 +1,12 @@
|
||||
#define F_TIPOPERC 101
|
||||
#define F_GESARCHPROV 102
|
||||
#define F_ARCHPROV1 103
|
||||
#define F_ARCHPROV2 104
|
||||
#define F_ARCHPROV3 105
|
||||
#define F_ARCHPROV4 106
|
||||
#define F_TIPOLIQPROV 107
|
||||
#define F_GESVAL 108
|
||||
#define F_GESLIN 109
|
||||
#define F_GESSOSPIMP 110
|
||||
#define F_GESOCCAS 111
|
||||
#define F_GESOCCHK 112
|
509
ve/ve0200b.uml
Executable file
509
ve/ve0200b.uml
Executable file
@ -0,0 +1,509 @@
|
||||
/* toolbar */
|
||||
#include "ve0200b.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 10
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione degli agenti"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Gestione agenti "
|
||||
MESSAGE FALSE DISABLE,8@
|
||||
MESSAGE TRUE ENABLE,8@
|
||||
FIELD GESAGE
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gestione subagenti "
|
||||
FIELD GESSUBAGE
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
LIST F_TIPOPERC 33
|
||||
BEGIN
|
||||
FIELD AGETIPOPERC
|
||||
PROMPT 2 3 "Tipo percentuale da proporre "
|
||||
ITEM "V|Tab. categorie vendite agenti "
|
||||
ITEM "A|Tab. agenti "
|
||||
ITEM "C|Archivio clienti "
|
||||
ITEM "L|Archivio listini o contratti "
|
||||
ITEM "P|Provvigioni sulla tabella agenti "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_GESARCHPROV
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione archivio provvigioni "
|
||||
FIELD AGEARCPROVV
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_ARCHPROV1 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Chiavi archivio provvigioni "
|
||||
FIELD AGEKEYPROVV[1]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_ARCHPROV2 4
|
||||
BEGIN
|
||||
PROMPT 2 6 " "
|
||||
FIELD AGEKEYPROVV[2]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_ARCHPROV3 4
|
||||
BEGIN
|
||||
PROMPT 2 7 " "
|
||||
FIELD AGEKEYPROVV[3]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_ARCHPROV4 4
|
||||
BEGIN
|
||||
PROMPT 2 8 " "
|
||||
FIELD AGEKEYPROVV[4]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST F_TIPOLIQPROV 41
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tipo liquidazione provvigione "
|
||||
ITEM "F|Liquidate sul valore del fatturato "
|
||||
ITEM "M|Liq. sul valore fatt. e sul valore merce "
|
||||
FIELD AGELIQPROVV
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 10
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione dati generali"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gestione documenti in valuta"
|
||||
MESSAGE TRUE ENABLE,@7
|
||||
MESSAGE FALSE DISABLE,@7
|
||||
FIELD GESVAL
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione archivio cambi "
|
||||
FIELD GESVALAC
|
||||
END
|
||||
|
||||
BOOLEAN F_GESLIN
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione documenti in lingua"
|
||||
FIELD GESLIN
|
||||
END
|
||||
|
||||
BOOLEAN F_GESSOSPIMP
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione documenti in sospensione di imposta"
|
||||
FIELD GESSOSPIMP
|
||||
END
|
||||
|
||||
BOOLEAN F_GESOCCAS
|
||||
BEGIN
|
||||
PROMPT 2 8 "Gestione archivio clienti occasionali"
|
||||
FIELD GESOCCAS
|
||||
MESSAGE FALSE DISABLE,F_GESOCCHK
|
||||
END
|
||||
|
||||
BOOLEAN F_GESOCCHK
|
||||
BEGIN
|
||||
PROMPT 2 10 "Controllo p.iva/cod.fiscale cliente occasionale"
|
||||
FIELD GESOCCCHK
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 2
|
||||
|
||||
GROUPBOX DLG_NULL 78 16
|
||||
BEGIN
|
||||
PROMPT 0 0 "Etichette totalizzatori piede documento 1/4"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 2 " 1:"
|
||||
FIELD PIEDE[ 1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 3 " 2:"
|
||||
FIELD PIEDE[ 2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 4 " 3:"
|
||||
FIELD PIEDE[ 3]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 5 " 4:"
|
||||
FIELD PIEDE[ 4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 6 " 5:"
|
||||
FIELD PIEDE[ 5]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 7 " 6:"
|
||||
FIELD PIEDE[ 6]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 8 " 7:"
|
||||
FIELD PIEDE[ 7]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 9 " 8:"
|
||||
FIELD PIEDE[ 8]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 10 " 9:"
|
||||
FIELD PIEDE[ 9]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 11 "10:"
|
||||
FIELD PIEDE[10]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 2
|
||||
|
||||
GROUPBOX DLG_NULL 78 16
|
||||
BEGIN
|
||||
PROMPT 0 0 "Etichette totalizzatori piede documento 2/4"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 2 "11:"
|
||||
FIELD PIEDE[11]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 3 "12:"
|
||||
FIELD PIEDE[12]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "13:"
|
||||
FIELD PIEDE[13]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 5 "14:"
|
||||
FIELD PIEDE[14]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 6 "15:"
|
||||
FIELD PIEDE[15]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 7 "16:"
|
||||
FIELD PIEDE[16]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 8 "17:"
|
||||
FIELD PIEDE[17]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 9 "18:"
|
||||
FIELD PIEDE[18]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 10 "19:"
|
||||
FIELD PIEDE[19]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 11 "20:"
|
||||
FIELD PIEDE[20]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 2
|
||||
|
||||
GROUPBOX DLG_NULL 78 16
|
||||
BEGIN
|
||||
PROMPT 0 0 "Etichette totalizzatori piede documento 3/4"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 2 "21:"
|
||||
FIELD PIEDE[21]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 3 "22:"
|
||||
FIELD PIEDE[22]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "23:"
|
||||
FIELD PIEDE[23]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 5 "24:"
|
||||
FIELD PIEDE[24]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 6 "25:"
|
||||
FIELD PIEDE[25]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 7 "26:"
|
||||
FIELD PIEDE[26]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 8 "27:"
|
||||
FIELD PIEDE[27]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 9 "28:"
|
||||
FIELD PIEDE[28]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 10 "29:"
|
||||
FIELD PIEDE[29]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 11 "30:"
|
||||
FIELD PIEDE[30]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabelle di installazione" 1 1 60 2
|
||||
|
||||
GROUPBOX DLG_NULL 78 16
|
||||
BEGIN
|
||||
PROMPT 0 0 "Etichette totalizzatori piede documento 4/4"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 2 "31:"
|
||||
FIELD PIEDE[31]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 3 "32:"
|
||||
FIELD PIEDE[32]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "33:"
|
||||
FIELD PIEDE[33]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 5 "34:"
|
||||
FIELD PIEDE[34]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 6 "35:"
|
||||
FIELD PIEDE[35]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 7 "36:"
|
||||
FIELD PIEDE[36]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 8 "37:"
|
||||
FIELD PIEDE[37]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 9 "38:"
|
||||
FIELD PIEDE[38]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 10 "39:"
|
||||
FIELD PIEDE[39]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 40
|
||||
BEGIN
|
||||
PROMPT 2 11 "40:"
|
||||
FIELD PIEDE[40]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella arrotondamenti " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
BEGIN
|
||||
PROMPT 0 0 "Dati anagrafici ditta "
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 1 "Arrot. prezzi: fino a lire "
|
||||
FIELD ARRLIV[ 1 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 1 ""
|
||||
FIELD ARRARG[ 1 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 2 ""
|
||||
FIELD ARRLIV[ 2 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 2 ""
|
||||
FIELD ARRARG[ 2 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 3 ""
|
||||
FIELD ARRLIV[ 3 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 3 ""
|
||||
FIELD ARRARG[ 3 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
FIELD ARRLIV[ 4 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 4 ""
|
||||
FIELD ARRARG[ 4 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD ARRLIV[ 5 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 5 ""
|
||||
FIELD ARRARG[ 5 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 6 ""
|
||||
FIELD ARRLIV[ 6 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 42 6 ""
|
||||
FIELD ARRARG[ 6 ]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 29 7 "oltre "
|
||||
FIELD ARRARG[ 7 ]
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
130
ve/ve0200c.uml
Executable file
130
ve/ve0200c.uml
Executable file
@ -0,0 +1,130 @@
|
||||
/* toolbar */
|
||||
#include "ve0200b.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
PAGE "Tabella gestione sconto a percentuale " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione spese/sconti "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice tabella sconto cliente "
|
||||
FIELD SCOPRCOD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SCOPRCODCON[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SCOPRCODCON[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SCOPRCODCON[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SCOPRNPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione sconto ad importo " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione sconto ad importo "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice tabella sconto ad importo "
|
||||
FIELD SCOIMCOD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SCOIMCODCON[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SCOIMCODCON[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SCOIMCODCON[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SCOIMNPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
630
ve/ve0200d.uml
Executable file
630
ve/ve0200d.uml
Executable file
@ -0,0 +1,630 @@
|
||||
|
||||
/* toolbar */
|
||||
#include "ve0200b.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione spese d'incasso " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 17
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione spese d'incasso"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Addebito spese d'incasso "
|
||||
FIELD SPINADD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice tabelle spese "
|
||||
FIELD SPINCODSP
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. Iva "
|
||||
FIELD SPINCODIVA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SPINCODCON[ 1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SPINCODCON[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SPINCODCON[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Incasso prima rata "
|
||||
FIELD SPININCPR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SPINNPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 8 "Importo spese per rimesse dirette "
|
||||
FIELD SPINIMRD
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo spese per tratte "
|
||||
FIELD SPINIMTR
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 10 "Importo spese per ricevute bancarie "
|
||||
FIELD SPINIMRB
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 11 "Importo spese per cessioni "
|
||||
FIELD SPINIMCES
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 12 "Importo spese per pagherò "
|
||||
FIELD SPINIMPAG
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 12 "Importo spese per lettere di credito "
|
||||
FIELD SPINIMLET
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 13 "Importo spese per tratte accettate "
|
||||
FIELD SPINIMTA
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 14 "Importo spese per R.I.D. "
|
||||
FIELD SPINIMRID
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 15 "Importo spese per bonifici "
|
||||
FIELD SPINIMBON
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione spese d'incasso " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 19
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione spese bolli ricevute bancarie"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Addebito spese bolli ricevute bancarie "
|
||||
FIELD SPBRBADD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice tabelle spese "
|
||||
FIELD SPBRBCODSP
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. Iva "
|
||||
FIELD SPBRBCODIVA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SPBRBCODCONT[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SPBRBCODCONT[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SPBRBCODCONT[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Incasso prima rata "
|
||||
FIELD SPBRBINCPR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SPBRBNPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 8 "Scaglione "
|
||||
FIELD SPBRBSCA[1]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 8 "Importo "
|
||||
FIELD SPBRBIMP[1]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 9 "Scaglione "
|
||||
FIELD SPBRBSCA[2]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 9 "Importo "
|
||||
FIELD SPBRBIMP[2]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 10 "Scaglione "
|
||||
FIELD SPBRBSCA[3]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 10 "Importo "
|
||||
FIELD SPBRBIMP[3]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 11 "Scaglione "
|
||||
FIELD SPBRBSCA[4]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 11 "Importo "
|
||||
FIELD SPBRBIMP[4]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 12 "Scaglione "
|
||||
FIELD SPBRBSCA[5]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 12 "Importo "
|
||||
FIELD SPBRBIMP[5]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 13 "Scaglione "
|
||||
FIELD SPBRBSCA[6]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 13 "Importo "
|
||||
FIELD SPBRBIMP[6]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 14 "Scaglione "
|
||||
FIELD SPBRBSCA[7]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 25 14 "Importo "
|
||||
FIELD SPBRBIMP[7]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 5
|
||||
BEGIN
|
||||
PROMPT 2 15 "Importo minimo R.B./1000 "
|
||||
FIELD SPBRBIMPMINRB
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 16 "Cod. pag. alternativo "
|
||||
FIELD SPBRBCODPAGALT
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 36 16 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 17 "Classif. pag. RB a richiesta "
|
||||
FIELD SPBRBCLAPAGRB
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 36 17 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione spese d'incasso " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione bolli fatture esenti"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Addebito bolli fatture esenti "
|
||||
FIELD SPBFEADD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice tabelle spese "
|
||||
FIELD SPBFECODSP
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. Iva "
|
||||
FIELD SPBFECODIVA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SPBFECODCONT[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SPBFECODCONT[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SPBFECODCONT[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Incasso prima rata "
|
||||
FIELD SPBFEINCPR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SPBFENPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 9
|
||||
BEGIN
|
||||
PROMPT 2 8 "Importo minimo fattura "
|
||||
FIELD SPBFEIMPMINFAT
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo bollo "
|
||||
FIELD SPBFEIMPBOLLO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione bolli tratte Italia " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 14
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione bolli su tratte Italia"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Addebito bolli su tratte Italia "
|
||||
FIELD SPTRADD
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice tabelle spese "
|
||||
FIELD SPTRCODSP
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 3 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. Iva "
|
||||
FIELD SPTRCODIVA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cod. contabilità "
|
||||
FIELD SPTRCODCON[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FIELD SPTRCODCON[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
FIELD SPTRCODCON[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Incasso prima rata "
|
||||
FIELD SPTRINCPR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Num. campo piede documento "
|
||||
FIELD SPTRNPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 7 ""
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 5 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Percentuale spese tratte "
|
||||
FIELD SPTRPERCSPTR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 5
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo minimo bollo "
|
||||
FIELD SPTRIMPMINBOL
|
||||
END
|
||||
|
||||
STRING DLG_NULL 5
|
||||
BEGIN
|
||||
PROMPT 2 10 "Importo minimo tratte /1000 "
|
||||
FIELD SPTRIMPMINTR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 11 "Condizione pagam. alternativa "
|
||||
FIELD SPTRCODPAGALT
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 42 11 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 12 "Classif. pagamento TR a richiesta "
|
||||
FIELD SPTRCLASPAG
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 42 12 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gestione bolli tratte estero " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 10
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione spese tratta estera"
|
||||
END
|
||||
|
||||
STRING DLG_NULL 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice tabella spesa tratta estera "
|
||||
FIELD SPTECODSP
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 2 2 "Descrizione "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cod. Iva "
|
||||
FIELD SPTECODIVA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 29 3 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. contabilità "
|
||||
FIELD SPTECODCON[1,2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 29 4 ""
|
||||
FIELD SPTECODCON[3,4]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 6
|
||||
BEGIN
|
||||
PROMPT 35 4 ""
|
||||
FIELD SPTECODCON[5,10]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 47 4 ""
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 5 "Incasso prima rata "
|
||||
FIELD SPTEINCPR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Num. campo piede documento "
|
||||
FIELD SPTENPIEDE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 26
|
||||
BEGIN
|
||||
PROMPT 34 6 ""
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 5 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Percentuale spese tratte "
|
||||
FIELD SPTEPERCSPTR
|
||||
END
|
||||
|
||||
STRING DLG_NULL 5
|
||||
BEGIN
|
||||
PROMPT 2 8 "Importo minimo bollo "
|
||||
FIELD SPTEIMPMINBOL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
305
ve/ve0200e.uml
Executable file
305
ve/ve0200e.uml
Executable file
@ -0,0 +1,305 @@
|
||||
/* toolbar */
|
||||
#include "ve0200b.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella descrizione codice articolo " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 18
|
||||
BEGIN
|
||||
PROMPT 0 0 "Personalizzazione procedura"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Descr. Cod. "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 14 1 "Descrizione "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 48 1 "Lungh. campi "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 63 1 "Tipo campi "
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cod. art. "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 14 2 ""
|
||||
FIELD CODARTDES
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 48 2 ""
|
||||
FIELD CODARTLUN[1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 52 2 ""
|
||||
FIELD CODARTLUN[2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 56 2 ""
|
||||
FIELD CODARTLUN[3]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 63 2 ""
|
||||
FIELD CODARTPIC[1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 67 2 ""
|
||||
FIELD CODARTPIC[2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 71 2 ""
|
||||
FIELD CODARTPIC[3]
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "I° indice "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 14 3 ""
|
||||
FIELD INDARTDES[1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 48 3 ""
|
||||
FIELD INDARTLUN[1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 63 3 ""
|
||||
FIELD INDARTPIC[1]
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "II° indice "
|
||||
END
|
||||
|
||||
STRING DLG_NULL 30
|
||||
BEGIN
|
||||
PROMPT 14 4 ""
|
||||
FIELD INDARTDES[2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 48 4 ""
|
||||
FIELD INDARTLUN[2]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 2
|
||||
BEGIN
|
||||
PROMPT 63 4 ""
|
||||
FIELD INDARTPIC[2]
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione articoli in lingua "
|
||||
FIELD ARTGESLIN
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 5 7 "Codice lingua n.1 "
|
||||
FIELD ARTCODLIN[1]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 5 8 "Codice lingua n.2 "
|
||||
FIELD ARTCODLIN[2]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 5 9 "Codice lingua n.3 "
|
||||
FIELD ARTCODLIN[3]
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 5 10 "Codice lingua n.4 "
|
||||
FIELD ARTCODLIN[4]
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 11 "Gestione più magazzini "
|
||||
FIELD ARTGESMAG
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione depositi "
|
||||
FIELD ARTGESDEP
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Gestione commesse "
|
||||
FIELD ARTGESCOMM
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 14 "Gestione quantità in decimali "
|
||||
FIELD ARTGESQDEC
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 15 "Gestione valuta "
|
||||
FIELD ARTGESVAL
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 16 "Ripetizione primo indice "
|
||||
FIELD ARTRIPIND
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella personalizzazione anagrafico articoli " 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 18
|
||||
BEGIN
|
||||
PROMPT 0 0 "Gestione archivio articoli"
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 1 "Gestione descrizioni estese "
|
||||
FIELD ARTGESDESCEST
|
||||
END
|
||||
|
||||
LIST DLG_NULL 35
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gestione art. per lotti "
|
||||
ITEM "N|Non gestire"
|
||||
ITEM "D|Gestiti con lotto data "
|
||||
ITEM "Q|Gestiti con lotto descr. qualità "
|
||||
FIELD ARTGESLOTTI
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione articoli per taglia "
|
||||
FIELD ARTGESTAGLIA
|
||||
END
|
||||
|
||||
STRING DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione campi chiave "
|
||||
FIELD ARTDESCHI[1]
|
||||
END
|
||||
|
||||
STRING DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione campi chiave "
|
||||
FIELD ARTDESCHI[2]
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione più unità di misura "
|
||||
FIELD ARTGESUM
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Gestione secondo codice iva "
|
||||
FIELD ARTGESCODIVA
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 8 "Gestione campi peso lordo/netto "
|
||||
FIELD ARTGESPLN
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gestione campo aspetto dei beni "
|
||||
FIELD ARTGESASPBEN
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 10 "Gestione campo codice gruppo articolo "
|
||||
FIELD ARTGESCODGR
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 11 "Gestione campo distinta base "
|
||||
FIELD ARTGESDB
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione campo categorie vendite "
|
||||
FIELD ARTGESCATVEN
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Gestione campo categorie acquisti "
|
||||
FIELD ARTGESCATACQ
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 14 "Gestione codice fornitore "
|
||||
FIELD ARTGESCODFOR
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
2440
ve/ve0300.cpp
2440
ve/ve0300.cpp
File diff suppressed because it is too large
Load Diff
@ -362,6 +362,7 @@ DISPLAY="Codice" CODTAB~"Descrizione@50" S0
|
||||
OUTPUT=F_CODPAG CODTAB~F_DESCODPAG S0
|
||||
WARNING=Codice tipo pagamento non trovato
|
||||
HELP=Inserisci il codice del tipo di pagamento
|
||||
SPECIAL=ADD RU BA3 -6
|
||||
|
||||
[DESCODPAG]
|
||||
GROUP=400
|
||||
@ -578,12 +579,12 @@ HELP=Inserisci il codice dell'indirizzo di spedizione
|
||||
GROUP=900
|
||||
X=24
|
||||
Y=0
|
||||
MSKID=F_RAGSOC
|
||||
MSKID=F_RAGSOCSP
|
||||
TYPE=T_STRINGA
|
||||
SIZE=50
|
||||
FLAG=U
|
||||
USE=20 KE 2
|
||||
INPUT=RAGSOC 301
|
||||
INPUT=RAGSOC F_RAGSOCSP
|
||||
DISPLAY="Ragione sociale@50" 20->RAGSOC~"Codice" 20->CODCF~"Indrizzo@35" 20->INDCF
|
||||
SPECIAL=JO 17 TO 20 KE 1 INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
WARNING=Ragione sociale non trovata
|
||||
|
200
ve/ve2100.cpp
200
ve/ve2100.cpp
@ -1,100 +1,100 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
short _sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
bool _sci_k_enabled[4]; // vettore di abilitazione dei campi chiave per la maschera degli sconti incondizionati
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TTabelle_sconti() {}
|
||||
virtual ~TTabelle_sconti() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_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
|
||||
}
|
||||
switch (_sconti) {
|
||||
case 'D': { // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
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
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'I': { // sconti incondizionati
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
TConfig prassid(CONFIG_DITTA); // apre il file di configurazione di ditta
|
||||
_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 (int i=0; i<4; i++) {
|
||||
if (prassid.get("K_SCONTI_INC", "ve", i).empty()) _sci_k_enabled[i]= FALSE; // se nel file di config. il campo non è abilitato, viene indicato nel vettore di abilitazione
|
||||
else _sci_k_enabled[i]= gotcha= TRUE; // se c'è almeno un campo abilitato "gotcha" esce TRUE dal ciclo
|
||||
}
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
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() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TTabelle_sconti::init_query_mode(TMask &m) {
|
||||
for (int i=0; i<4; i++) {
|
||||
if (_sci_k_enabled[i]) { // se il campo deve essere abilitato...
|
||||
m.enable(_sci_k_id[i]); // ...lo abilita...
|
||||
m.efield(_sci_k_id[i]).check_type(CHECK_REQUIRED); // ...e lo rende richiesto...
|
||||
} else { // ...altrimenti...
|
||||
m.disable(_sci_k_id[i]); // ...lo disabilita...
|
||||
m.efield(_sci_k_id[i]).check_type(CHECK_NORMAL); // ...e lo rende non richiesto
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ve2100(int argc, char* argv[]) {
|
||||
TTabelle_sconti a;
|
||||
|
||||
a.run(argc, argv, "Tabella sconti ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
short _sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
bool _sci_k_enabled[4]; // vettore di abilitazione dei campi chiave per la maschera degli sconti incondizionati
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TTabelle_sconti() {}
|
||||
virtual ~TTabelle_sconti() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_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
|
||||
}
|
||||
switch (_sconti) {
|
||||
case 'D': { // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
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
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'I': { // sconti incondizionati
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
TConfig prassid(CONFIG_DITTA); // apre il file di configurazione di ditta
|
||||
_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 (int i=0; i<4; i++) {
|
||||
if (prassid.get("K_SCONTI_INC", "ve", i).empty()) _sci_k_enabled[i]= FALSE; // se nel file di config. il campo non è abilitato, viene indicato nel vettore di abilitazione
|
||||
else _sci_k_enabled[i]= gotcha= TRUE; // se c'è almeno un campo abilitato "gotcha" esce TRUE dal ciclo
|
||||
}
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
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() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TTabelle_sconti::init_query_mode(TMask &m) {
|
||||
for (int i=0; i<4; i++) {
|
||||
if (_sci_k_enabled[i]) { // se il campo deve essere abilitato...
|
||||
m.enable(_sci_k_id[i]); // ...lo abilita...
|
||||
m.efield(_sci_k_id[i]).check_type(CHECK_REQUIRED); // ...e lo rende richiesto...
|
||||
} else { // ...altrimenti...
|
||||
m.disable(_sci_k_id[i]); // ...lo disabilita...
|
||||
m.efield(_sci_k_id[i]).check_type(CHECK_NORMAL); // ...e lo rende non richiesto
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ve2100(int argc, char* argv[]) {
|
||||
TTabelle_sconti a;
|
||||
|
||||
a.run(argc, argv, "Tabella sconti ");
|
||||
return 0;
|
||||
}
|
||||
|
536
ve/ve2200.cpp
536
ve/ve2200.cpp
@ -1,268 +1,268 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
#include <tabutil.h>
|
||||
#include <mailbox.h>
|
||||
#include <execp.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ve2200.h"
|
||||
#include "ve2300x.h" // include anche il file dei campi della maschera delle righe
|
||||
|
||||
#define RCONDVEN_APP "ve2 -2 " // nome dell'applicazione di gestione delle righe
|
||||
|
||||
|
||||
|
||||
class TCondizioni_vendita: public TRelation_application {
|
||||
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
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
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_codlissucc(TMask_field &, KEY); // handler del campo CODLISSUCC (codice listino successivo)
|
||||
static bool handle_seqric(TMask_field &, KEY); // handler del campo SEQRIC (sequenza di ricerca)
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TCondizioni_vendita() {}
|
||||
virtual ~TCondizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TCondizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TCondizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
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");
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= (toupper(prassid.get("CATVEN_ON")[0])!='T'); // setta il booleano di abilitazione di CATVEN
|
||||
_msk->set_handler(F_L_CODLISSUCC, handle_codlissucc); // setta l'handler per il campo di codice successivo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
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_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à
|
||||
_msk->set_handler(F_SEQRIC, handle_seqric); // imposta l'handler per il campo di sequenza di ricerca
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
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 &_catven_on= app()._catven_on; // 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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_L_CATVEN << "="; // appende il filtro sulla categoria di vendita...
|
||||
if (_catven_on) body << m.get(F_L_CATVEN); // ...
|
||||
body << "|"; // appende il separatore
|
||||
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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_C_TIPOCF << "=" << m.get(F_C_TIPOCF); // appende il filtro sul campo tipo cliente/fornitore
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_C_CODCF << "=" << m.get(F_C_CODCF); // appende il filtro sul campo codice cliente/fornitore
|
||||
body << "|"; // appende il separatore
|
||||
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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_codlissucc(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TString codlissucc(fld.get()); // prende il codice listino successivo dal campo corrente
|
||||
if (codlissucc.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString cod(m.get(F_L_COD)); // prende il codice listino corrente dalla maschera
|
||||
if (codlissucc == cod) {
|
||||
error_box("Il codice del listino successivo deve essere diverso dal codice del listino corrente");
|
||||
return FALSE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_seqric(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TString &seqric= fld.get(); // prende la stringa contenenta la sequenza di ricerca dal campo corrente
|
||||
if (seqric.not_empty()) {
|
||||
bool gotcha= TRUE; // flag di validità della sequenza
|
||||
for (int i=0; i<seqric.len(); i++) {
|
||||
char c= toupper(seqric[i]); // prende la lettera corrente della sequenza
|
||||
if ((c!='A') && (c!='G') && (c!='R')) gotcha= FALSE; // se la lettera non rientra tra quelle possibili abbassa il flag di validità
|
||||
for (int j= i+1; j<seqric.len(); j++) if (c== toupper(seqric[j])) gotcha= FALSE; // se la lettera compare anche più avanti nella sequenza abbassa il flag di validitià
|
||||
if (!gotcha) break; // se il flag di validità è basso esce anticipatamente
|
||||
}
|
||||
if (!gotcha) error_box("La sequenza di ricerca deve essere una combinazine di 'A' (Articoli), 'G' (Gruppi merceologici) e 'R' (Raggruppamenti fiscali), in cui ogni lettera compare al massimo una volta");
|
||||
return (gotcha);
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TCondizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_condven != "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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_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
|
||||
if (_condven != "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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
void TCondizioni_vendita::init_query_mode(TMask &m) {
|
||||
for (short i=(short)_tohide.first_one(); i<=(short)_tohide.last_one(); i++) {
|
||||
if (_tohide[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NORMAL); // disabilita il checking sul campo se è editabile
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
||||
int ve2200(int argc, char* argv[]) {
|
||||
TCondizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Condizioni di vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
#include <tabutil.h>
|
||||
#include <mailbox.h>
|
||||
#include <execp.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ve2200.h"
|
||||
#include "ve2300x.h" // include anche il file dei campi della maschera delle righe
|
||||
|
||||
#define RCONDVEN_APP "ve2 -2 " // nome dell'applicazione di gestione delle righe
|
||||
|
||||
|
||||
|
||||
class TCondizioni_vendita: public TRelation_application {
|
||||
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
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
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_codlissucc(TMask_field &, KEY); // handler del campo CODLISSUCC (codice listino successivo)
|
||||
static bool handle_seqric(TMask_field &, KEY); // handler del campo SEQRIC (sequenza di ricerca)
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TCondizioni_vendita() {}
|
||||
virtual ~TCondizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TCondizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TCondizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
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");
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= (prassid.get_bool("CODLISCV")); // setta il booleano di abilitazione di CATVEN
|
||||
_msk->set_handler(F_L_CODLISSUCC, handle_codlissucc); // setta l'handler per il campo di codice successivo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_O_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
// settaggio dei campi da eliminare
|
||||
_tohide.set(F_L_COD);
|
||||
_tohide.set(F_C_COD);
|
||||
_tohide.set(F_L_CATVEN);
|
||||
_tohide.set(F_C_TIPOCF);
|
||||
_tohide.set(F_C_CODCF);
|
||||
_tohide.set(F_C_OBBLIG);
|
||||
_tohide.set(F_L_CODLISSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
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_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à
|
||||
_msk->set_handler(F_SEQRIC, handle_seqric); // imposta l'handler per il campo di sequenza di ricerca
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
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 &_catven_on= app()._catven_on; // 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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_L_CATVEN << "="; // appende il filtro sulla categoria di vendita...
|
||||
if (_catven_on) body << m.get(F_L_CATVEN); // ...
|
||||
body << "|"; // appende il separatore
|
||||
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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_C_TIPOCF << "=" << m.get(F_C_TIPOCF); // appende il filtro sul campo tipo cliente/fornitore
|
||||
body << "|"; // appende il separatore
|
||||
body << F_R_C_CODCF << "=" << m.get(F_C_CODCF); // appende il filtro sul campo codice cliente/fornitore
|
||||
body << "|"; // appende il separatore
|
||||
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 << "|"; // appende il separatore
|
||||
body << F_R_TIPO << "=" << _condven; // appende il filtro sul tipo
|
||||
body << "|"; // appende il separatore
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_codlissucc(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TString codlissucc(fld.get()); // prende il codice listino successivo dal campo corrente
|
||||
if (codlissucc.not_empty()) {
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TString cod(m.get(F_L_COD)); // prende il codice listino corrente dalla maschera
|
||||
if (codlissucc == cod) {
|
||||
error_box("Il codice del listino successivo deve essere diverso dal codice del listino corrente");
|
||||
return FALSE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
bool TCondizioni_vendita::handle_seqric(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) {
|
||||
TString &seqric= fld.get(); // prende la stringa contenenta la sequenza di ricerca dal campo corrente
|
||||
if (seqric.not_empty()) {
|
||||
bool gotcha= TRUE; // flag di validità della sequenza
|
||||
for (int i=0; i<seqric.len(); i++) {
|
||||
char c= toupper(seqric[i]); // prende la lettera corrente della sequenza
|
||||
if ((c!='A') && (c!='G') && (c!='R')) gotcha= FALSE; // se la lettera non rientra tra quelle possibili abbassa il flag di validità
|
||||
for (int j= i+1; j<seqric.len(); j++) if (c== toupper(seqric[j])) gotcha= FALSE; // se la lettera compare anche più avanti nella sequenza abbassa il flag di validitià
|
||||
if (!gotcha) break; // se il flag di validità è basso esce anticipatamente
|
||||
}
|
||||
if (!gotcha) error_box("La sequenza di ricerca deve essere una combinazine di 'A' (Articoli), 'G' (Gruppi merceologici) e 'R' (Raggruppamenti fiscali), in cui ogni lettera compare al massimo una volta");
|
||||
return (gotcha);
|
||||
} else return TRUE;
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TCondizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_condven != "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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_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
|
||||
if (_condven != "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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
void TCondizioni_vendita::init_query_mode(TMask &m) {
|
||||
for (short i=(short)_tohide.first_one(); i<=(short)_tohide.last_one(); i++) {
|
||||
if (_tohide[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NORMAL); // disabilita il checking sul campo se è editabile
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
||||
int ve2200(int argc, char* argv[]) {
|
||||
TCondizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Condizioni di vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
506
ve/ve2300.cpp
506
ve/ve2300.cpp
@ -1,253 +1,253 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2300.h"
|
||||
|
||||
|
||||
|
||||
class TRighe_condizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
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 void hide_and_show_codriga(TMask &); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
|
||||
|
||||
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
|
||||
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TString16 _rcondven; // stringa che indica il tipo di archivio
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
|
||||
TRighe_condizioni_vendita() {}
|
||||
virtual ~TRighe_condizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TRighe_condizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
TString temp(argv(2));
|
||||
_rcondven= temp.left(1); // prende solo il primo carattere
|
||||
} else {
|
||||
TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_rcondven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2300X");
|
||||
_tohide.reset(); // resetta il vettore dei campi da eliminare
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': { // listini
|
||||
_tohide.set(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_C_CODCF);
|
||||
_tohide.set(F_R_C_COD);
|
||||
_tohide.set(F_R_O_COD);
|
||||
_tohide.set(F_R_C_RICERCA);
|
||||
_tohide.set(F_R_O_RICERCA);
|
||||
_tohide.set(F_R_CO_CODLOTTO);
|
||||
_tohide.set(F_R_O_ARTES);
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= (toupper(prassid.get("CATVEN_ON")[0])!='T'); // setta il booleano di abilitazione di CATVEN
|
||||
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
|
||||
_tohide.set(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_L_COD);
|
||||
_tohide.set(F_R_O_COD);
|
||||
_tohide.set(F_R_LO_UM);
|
||||
_tohide.set(F_R_L_RICERCA);
|
||||
_tohide.set(F_R_O_RICERCA);
|
||||
_tohide.set(F_R_O_ARTES);
|
||||
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
|
||||
_tohide.set(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_C_TIPOCF);
|
||||
_tohide.set(F_R_C_CODCF);
|
||||
_tohide.set(F_R_L_COD);
|
||||
_tohide.set(F_R_C_COD);
|
||||
_tohide.set(F_R_L_RICERCA);
|
||||
_tohide.set(F_R_C_RICERCA);
|
||||
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;
|
||||
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_RCONDV); // apre la relazione (un unico file)
|
||||
_msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
hide_and_show_codriga(*_msk); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::hide_and_show_codriga(TMask &m) {
|
||||
short id_campi[3]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
char tag_campi[3]= { 'A', 'G', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
|
||||
char tag_campo= m.get(F_R_TIPORIGA)[0]; // prende il tag in TIPORIGA del campo da abilitare
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
|
||||
TBit_array &_tohide= app()._tohide; // prende il riferimento all'array di campi da eliminare
|
||||
for (int i=0; i<3; i++) { // ciclo sui tre campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene...
|
||||
m.efield(id_campi[i]).check_type(CHECK_REQUIRED); // ...abilitato al checking...
|
||||
m.show(id_campi[i]); // ...mostrato...
|
||||
_tohide.reset(id_campi[i]); // ...e rimosso dal vettore di eliminazione...
|
||||
} else { // ...mentre gli altri vengono...
|
||||
m.efield(id_campi[i]).check_type(CHECK_NONE); // ...disabilitati dal checking...
|
||||
m.hide(id_campi[i]); // ...nascosti...
|
||||
_tohide.set(id_campi[i]); // ...e aggiunti al vettore di eliminazione
|
||||
}
|
||||
}
|
||||
if (_rcondven != "C") { // se non stiamo lavorando sui contratti...
|
||||
if (tag_campo=='A') { // ...ed è stata selezionata una riga di articoli...
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_REQUIRED); // ...l'unità di misura viene attivata al checking...
|
||||
m.enable(F_R_LO_UM); // ...e abilitata...
|
||||
} else { // ...altrimenti, se è stata selezionata una riga non di articoli...
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_NONE); // ...l'unità di misura viene rimossa dal checking...
|
||||
m.disable(F_R_LO_UM); // ...e disabilitata
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) hide_and_show_codriga(fld.mask()); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if ((k==K_TAB) && fld.get().not_empty()) {
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
|
||||
condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // riempie il resto della chiave dei listini
|
||||
condv.put("CATVEN", m.get(F_R_L_CATVEN));
|
||||
condv.put("COD", m.get(F_R_L_COD));
|
||||
break;
|
||||
case 'C': // riempie il resto della chiave dei contratti
|
||||
condv.put("TIPOCF", m.get(F_R_C_TIPOCF));
|
||||
condv.put("CODCF", m.get(F_R_C_CODCF));
|
||||
condv.put("COD", m.get(F_R_C_COD));
|
||||
break;
|
||||
case 'O': // riempie il resto della chiave delle offerte
|
||||
condv.put("COD", m.get(F_R_O_COD));
|
||||
break;
|
||||
}
|
||||
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
|
||||
if (!condv.get_bool("GESTUM")) {
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_NONE); // disabilita il checking sul campo "unità di misura"
|
||||
m.disable(F_R_LO_UM); // disabilita il campo "unità di misura"
|
||||
} else {
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_REQUIRED); // abilita il checking sul campo "unità di misura"
|
||||
m.enable(F_R_LO_UM); // abilita il campo "unità di misura"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
m.efield(F_R_NSCAGL).check_type(CHECK_NONE); // disabilita il checking sul campo "quantità limite scaglione"
|
||||
m.disable(F_R_NSCAGL); // disabilita il campo "quantità limite scaglione"
|
||||
m.disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
m.efield(F_R_NSCAGL).check_type(CHECK_REQUIRED); // abilita il checking sul campo "quantità limite scaglione"
|
||||
m.enable(F_R_NSCAGL); // abilita il campo "quantità limite scaglione"
|
||||
m.enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCO")) {
|
||||
m.disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
m.disable(F_R_QOM); // disabilita il campo "quantità art. omaggio"
|
||||
m.disable(F_R_QBASE); // disabilita il campo "quantità base x sconto"
|
||||
m.disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio"
|
||||
m.disable(F_R_PROMAGGIO); // disabilita il campo "prezzo omaggio"
|
||||
m.disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio"
|
||||
} else {
|
||||
m.enable(F_R_SCONTO); // abilita il campo "sconto"
|
||||
m.enable(F_R_QOM); // abilita il campo "quantità art. omaggio"
|
||||
m.enable(F_R_QBASE); // abilita il campo "quantità base x sconto"
|
||||
m.enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio"
|
||||
m.enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio"
|
||||
m.enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio"
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
error_box("Non esiste una testata corrispondente alla chiave specificata");
|
||||
return FALSE;
|
||||
}
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->write(); // invoca la scrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::rewrite(const TMask &m) {
|
||||
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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::init_query_mode(TMask &m) {
|
||||
for (short i=(short)_tohide.first_one(); i<=(short)_tohide.last_one(); i++) { // ciclo sul vettore dei campi da eliminare
|
||||
if (_tohide[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NONE); // disabilita il checking sul campo se è editabile
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_R_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_R_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
||||
int ve2300(int argc, char* argv[]) {
|
||||
TRighe_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Righe condizioni vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2300.h"
|
||||
|
||||
|
||||
|
||||
class TRighe_condizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
bool _catven_on; // booleano di abilitazione del campo CATVEN
|
||||
|
||||
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 void hide_and_show_codriga(TMask &); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
|
||||
|
||||
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
|
||||
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
|
||||
|
||||
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 void init_query_mode(TMask &); // handler chiamato quando la maschera passa in modo ricerca
|
||||
|
||||
public:
|
||||
TString16 _rcondven; // stringa che indica il tipo di archivio
|
||||
TBit_array _tohide; // vettore degli identificatori di campi che devono essere nascosti
|
||||
|
||||
TRighe_condizioni_vendita() {}
|
||||
virtual ~TRighe_condizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TRighe_condizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
TString temp(argv(2));
|
||||
_rcondven= temp.left(1); // prende solo il primo carattere
|
||||
} else {
|
||||
TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_rcondven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2300X");
|
||||
_tohide.reset(); // resetta il vettore dei campi da eliminare
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': { // listini
|
||||
_tohide.set(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_C_CODCF);
|
||||
_tohide.set(F_R_C_COD);
|
||||
_tohide.set(F_R_O_COD);
|
||||
_tohide.set(F_R_C_RICERCA);
|
||||
_tohide.set(F_R_O_RICERCA);
|
||||
_tohide.set(F_R_CO_CODLOTTO);
|
||||
_tohide.set(F_R_O_ARTES);
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
_catven_on= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN
|
||||
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
|
||||
_tohide.set(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_L_COD);
|
||||
_tohide.set(F_R_O_COD);
|
||||
_tohide.set(F_R_LO_UM);
|
||||
_tohide.set(F_R_L_RICERCA);
|
||||
_tohide.set(F_R_O_RICERCA);
|
||||
_tohide.set(F_R_O_ARTES);
|
||||
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
|
||||
_tohide.set(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
_tohide.set(F_R_C_TIPOCF);
|
||||
_tohide.set(F_R_C_CODCF);
|
||||
_tohide.set(F_R_L_COD);
|
||||
_tohide.set(F_R_C_COD);
|
||||
_tohide.set(F_R_L_RICERCA);
|
||||
_tohide.set(F_R_C_RICERCA);
|
||||
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;
|
||||
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_RCONDV); // apre la relazione (un unico file)
|
||||
_msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
hide_and_show_codriga(*_msk); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::hide_and_show_codriga(TMask &m) {
|
||||
short id_campi[3]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
char tag_campi[3]= { 'A', 'G', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
|
||||
char tag_campo= m.get(F_R_TIPORIGA)[0]; // prende il tag in TIPORIGA del campo da abilitare
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
|
||||
TBit_array &_tohide= app()._tohide; // prende il riferimento all'array di campi da eliminare
|
||||
for (int i=0; i<3; i++) { // ciclo sui tre campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene...
|
||||
m.efield(id_campi[i]).check_type(CHECK_REQUIRED); // ...abilitato al checking...
|
||||
m.show(id_campi[i]); // ...mostrato...
|
||||
_tohide.reset(id_campi[i]); // ...e rimosso dal vettore di eliminazione...
|
||||
} else { // ...mentre gli altri vengono...
|
||||
m.efield(id_campi[i]).check_type(CHECK_NONE); // ...disabilitati dal checking...
|
||||
m.hide(id_campi[i]); // ...nascosti...
|
||||
_tohide.set(id_campi[i]); // ...e aggiunti al vettore di eliminazione
|
||||
}
|
||||
}
|
||||
if (_rcondven != "C") { // se non stiamo lavorando sui contratti...
|
||||
if (tag_campo=='A') { // ...ed è stata selezionata una riga di articoli...
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_REQUIRED); // ...l'unità di misura viene attivata al checking...
|
||||
m.enable(F_R_LO_UM); // ...e abilitata...
|
||||
} else { // ...altrimenti, se è stata selezionata una riga non di articoli...
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_NONE); // ...l'unità di misura viene rimossa dal checking...
|
||||
m.disable(F_R_LO_UM); // ...e disabilitata
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
|
||||
if (k==K_TAB) hide_and_show_codriga(fld.mask()); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if ((k==K_TAB) && fld.get().not_empty()) {
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
TMask &m= fld.mask(); // prende la maschera principale
|
||||
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
|
||||
condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // riempie il resto della chiave dei listini
|
||||
condv.put("CATVEN", m.get(F_R_L_CATVEN));
|
||||
condv.put("COD", m.get(F_R_L_COD));
|
||||
break;
|
||||
case 'C': // riempie il resto della chiave dei contratti
|
||||
condv.put("TIPOCF", m.get(F_R_C_TIPOCF));
|
||||
condv.put("CODCF", m.get(F_R_C_CODCF));
|
||||
condv.put("COD", m.get(F_R_C_COD));
|
||||
break;
|
||||
case 'O': // riempie il resto della chiave delle offerte
|
||||
condv.put("COD", m.get(F_R_O_COD));
|
||||
break;
|
||||
}
|
||||
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
|
||||
if (!condv.get_bool("GESTUM")) {
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_NONE); // disabilita il checking sul campo "unità di misura"
|
||||
m.disable(F_R_LO_UM); // disabilita il campo "unità di misura"
|
||||
} else {
|
||||
m.efield(F_R_LO_UM).check_type(CHECK_REQUIRED); // abilita il checking sul campo "unità di misura"
|
||||
m.enable(F_R_LO_UM); // abilita il campo "unità di misura"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
m.efield(F_R_NSCAGL).check_type(CHECK_NONE); // disabilita il checking sul campo "quantità limite scaglione"
|
||||
m.disable(F_R_NSCAGL); // disabilita il campo "quantità limite scaglione"
|
||||
m.disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
m.efield(F_R_NSCAGL).check_type(CHECK_REQUIRED); // abilita il checking sul campo "quantità limite scaglione"
|
||||
m.enable(F_R_NSCAGL); // abilita il campo "quantità limite scaglione"
|
||||
m.enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCO")) {
|
||||
m.disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
m.disable(F_R_QOM); // disabilita il campo "quantità art. omaggio"
|
||||
m.disable(F_R_QBASE); // disabilita il campo "quantità base x sconto"
|
||||
m.disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio"
|
||||
m.disable(F_R_PROMAGGIO); // disabilita il campo "prezzo omaggio"
|
||||
m.disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio"
|
||||
} else {
|
||||
m.enable(F_R_SCONTO); // abilita il campo "sconto"
|
||||
m.enable(F_R_QOM); // abilita il campo "quantità art. omaggio"
|
||||
m.enable(F_R_QBASE); // abilita il campo "quantità base x sconto"
|
||||
m.enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio"
|
||||
m.enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio"
|
||||
m.enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio"
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
error_box("Non esiste una testata corrispondente alla chiave specificata");
|
||||
return FALSE;
|
||||
}
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->write(); // invoca la scrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::rewrite(const TMask &m) {
|
||||
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
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::init_query_mode(TMask &m) {
|
||||
for (short i=(short)_tohide.first_one(); i<=(short)_tohide.last_one(); i++) { // ciclo sul vettore dei campi da eliminare
|
||||
if (_tohide[i]) {
|
||||
if (_msk->field(i).is_edit()) _msk->efield(i).check_type(CHECK_NONE); // disabilita il checking sul campo se è editabile
|
||||
_msk->hide(i); // rende invisibile il campo
|
||||
}
|
||||
}
|
||||
if (!_catven_on) { // se il booleano di abil. di CATVEN è falso...
|
||||
_msk->efield(F_R_L_CATVEN).check_type(CHECK_NONE); // ...viene rimosso dal checking...
|
||||
_msk->disable(F_R_L_CATVEN); // ...e disabilitato
|
||||
}
|
||||
_msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
}
|
||||
|
||||
int ve2300(int argc, char* argv[]) {
|
||||
TRighe_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Righe condizioni vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
127
ve/veuml1.h
127
ve/veuml1.h
@ -1,62 +1,65 @@
|
||||
#ifndef __VEUML1_H
|
||||
#define __VEUML1_H
|
||||
|
||||
#ifndef __VEUML_H
|
||||
#include "VEUML.H"
|
||||
#endif
|
||||
|
||||
// gruppo dei vettori
|
||||
|
||||
#define GR_VETTORI 15
|
||||
|
||||
// campi della maschera totale
|
||||
|
||||
#define F_RAGSOC 301
|
||||
#define F_INDCF 302
|
||||
#define F_CIVCF 303
|
||||
#define F_NOME_VAL 304
|
||||
#define F_DESCODPAG 305
|
||||
#define F_DATASCAD1 306
|
||||
#define F_DATASCAD2 307
|
||||
#define F_DATASCAD3 308
|
||||
#define F_DATASCAD4 309
|
||||
#define F_DATASCAD5 310
|
||||
#define F_BANCA_APP 311
|
||||
#define F_BANCA_PRE 312
|
||||
#define F_INDSP 313
|
||||
#define F_CIVSP 314
|
||||
#define F_CAPSP 315
|
||||
#define F_LOCALITASP 316
|
||||
#define F_PORTO 317
|
||||
#define F_DENCAUSTRASP 318
|
||||
#define F_NOMEVETT1 319
|
||||
#define F_NOMEVETT2 320
|
||||
#define F_NOMEVETT3 321
|
||||
#define F_DESCRBENI1 322
|
||||
#define F_DESCRBENI2 323
|
||||
#define F_DESUMTARA 324
|
||||
#define F_DESUMPNETTO 325
|
||||
#define F_DESCRMAG1 326
|
||||
#define F_DESCRMAG2 327
|
||||
#define F_COFI 328
|
||||
#define F_STATOPAIVA 329
|
||||
#define F_LOCALITACF 330
|
||||
#define F_CAPCF 331
|
||||
#define F_COMCF 332
|
||||
#define F_PROVCOM 333
|
||||
#define F_STATOCF 334
|
||||
#define F_DATACAMBIO 335
|
||||
#define F_DESBANAPP 336
|
||||
#define F_DESLIN 337
|
||||
#define F_DESBANPRE 338
|
||||
#define F_NOMEVAL 339
|
||||
#define F_PAIVA 340
|
||||
#define F_DENCOM 341
|
||||
#define F_DESSTATOCF 342
|
||||
#define F_COMSP 343
|
||||
#define F_DENCOMSP 344
|
||||
#define F_PROVCOMSP 345
|
||||
#define F_STATOSP 346
|
||||
#define F_DESSTATOSP 347
|
||||
#define F_DESLIST 348
|
||||
#endif // __VEUML1_H
|
||||
#ifndef __VEUML1_H
|
||||
#define __VEUML1_H
|
||||
|
||||
#ifndef __VEUML_H
|
||||
#include "VEUML.H"
|
||||
#endif
|
||||
|
||||
// gruppo dei vettori
|
||||
|
||||
#define GR_VETTORI 15
|
||||
|
||||
// campi della maschera totale
|
||||
|
||||
#define F_RAGSOC 301
|
||||
#define F_INDCF 302
|
||||
#define F_CIVCF 303
|
||||
#define F_NOME_VAL 304
|
||||
#define F_DESCODPAG 305
|
||||
// I prossimi 5 campi devono essere consecutivi come numerazione
|
||||
// perchè faccio un ciclo per settarli
|
||||
#define F_DATASCAD1 306
|
||||
#define F_DATASCAD2 307
|
||||
#define F_DATASCAD3 308
|
||||
#define F_DATASCAD4 309
|
||||
#define F_DATASCAD5 310
|
||||
#define F_BANCA_APP 311
|
||||
#define F_BANCA_PRE 312
|
||||
#define F_INDSP 313
|
||||
#define F_CIVSP 314
|
||||
#define F_CAPSP 315
|
||||
#define F_LOCALITASP 316
|
||||
#define F_PORTO 317
|
||||
#define F_DENCAUSTRASP 318
|
||||
#define F_NOMEVETT1 319
|
||||
#define F_NOMEVETT2 320
|
||||
#define F_NOMEVETT3 321
|
||||
#define F_DESCRBENI1 322
|
||||
#define F_DESCRBENI2 323
|
||||
#define F_DESUMTARA 324
|
||||
#define F_DESUMPNETTO 325
|
||||
#define F_DESCRMAG1 326
|
||||
#define F_DESCRMAG2 327
|
||||
#define F_COFI 328
|
||||
#define F_STATOPAIVA 329
|
||||
#define F_LOCALITACF 330
|
||||
#define F_CAPCF 331
|
||||
#define F_COMCF 332
|
||||
#define F_PROVCOM 333
|
||||
#define F_STATOCF 334
|
||||
#define F_DATACAMBIO 335
|
||||
#define F_DESBANAPP 336
|
||||
#define F_DESLIN 337
|
||||
#define F_DESBANPRE 338
|
||||
#define F_NOMEVAL 339
|
||||
#define F_PAIVA 340
|
||||
#define F_DENCOM 341
|
||||
#define F_DESSTATOCF 342
|
||||
#define F_COMSP 343
|
||||
#define F_DENCOMSP 344
|
||||
#define F_PROVCOMSP 345
|
||||
#define F_STATOSP 346
|
||||
#define F_DESSTATOSP 347
|
||||
#define F_DESLIST 348
|
||||
#define F_RAGSOCSP 349
|
||||
#endif // __VEUML1_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user