Modifiche generali alle vendite.

git-svn-id: svn://10.65.10.50/trunk@2237 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
matteo 1995-12-04 17:41:06 +00:00
parent ce0a332775
commit 407c8a6a87
18 changed files with 4109 additions and 3660 deletions

View File

@ -1,116 +1,319 @@
#ifndef __SCONTI_H #ifndef __SCONTI_H
#include "sconti.h" #include "sconti.h"
#endif #endif
const real TSconto::cento( "100" ); #ifndef __VEUML_H
#include "veuml.h"
void TSconto::set( const TString& exp, bool signal ) #endif
{
TString work( exp ); #ifndef __VEUML2_H
TString goodexp; #include "veuml2.h"
TString num; #endif
// Elimina gli spazi molesti #ifndef __TCLIFOR_H
work.strip_spaces( ); #include "tclifor.h"
// Per ora nessun errore #endif
_errorpos = -1;
#ifndef __CONFIG_H
int i = 0; #include "config.h"
_part = 1.0; #endif
const int wlen = work.len( );
// Flag che indica se sono nella parte decimale di un numero #ifndef __VECONF_H
bool dec = FALSE; #include "veconf.h"
// Flag che indica se si attende l'inizio di un numero #endif
bool startnum = TRUE;
// Flag che indica se siamo all'inizio di un numero #define A_ANAMAG 0
while ( i < wlen && _errorpos < 0 )
{ const real TSconto::cento( "100" );
char c = work[ i++ ];
switch( c ) void TSconto::set( const TString& exp, bool signal )
{ {
case '+': TString work( exp );
case '-': TString goodexp;
// Se ero in in numero ... TString num;
if( !startnum )
{ // Elimina gli spazi molesti
// Aggiunge il numero alla sequenza work.strip_spaces( );
real newval( num ); // Per ora nessun errore
_part = _part * ( cento + newval ) / cento; _errorpos = -1;
if( newval >= 0 )
goodexp << '+'; int i = 0;
goodexp << num; _part = 1.0;
} const int wlen = work.len( );
// Inizia il nuovo numero // Flag che indica se sono nella parte decimale di un numero
num = ( c == '-' )?"-":""; bool dec = FALSE;
startnum = TRUE; // Flag che indica se si attende l'inizio di un numero
dec = FALSE; bool startnum = TRUE;
break; // Flag che indica se siamo all'inizio di un numero
case '0': while ( i < wlen && _errorpos < 0 )
case '1': {
case '2': char c = work[ i++ ];
case '3': switch( c )
case '4': {
case '5': case '+':
case '6': case '-':
case '7': // Se ero in in numero ...
case '8': if( !startnum )
case '9': {
num << c; // Aggiunge il numero alla sequenza
startnum = FALSE; real newval( num );
break; _part = _part * ( cento + newval ) / cento;
case '.': if( newval >= 0 )
case ',': goodexp << '+';
// Se siamo già nella parte decimale ... goodexp << num;
if( dec ) }
{ // Inizia il nuovo numero
// Segnala un errore num = ( c == '-' )?"-":"";
_errorpos = i; startnum = TRUE;
break; dec = FALSE;
} break;
// Se occorrenva un numero ci metto lo 0 case '0':
if( startnum ) case '1':
num << '0'; case '2':
// Interpreto la virgola come punto case '3':
num << '.'; case '4':
dec = TRUE; case '5':
startnum = TRUE; case '6':
break; case '7':
default: case '8':
_errorpos = i; case '9':
break; num << c;
} startnum = FALSE;
} break;
// Controlla la validità case '.':
_valid = ( _errorpos < 0 ); case ',':
// Se richiesto segnala l'errore // Se siamo già nella parte decimale ...
if( !_valid && signal ) if( dec )
warning_box( "Espressione di sconto non valida. Errore sul carattere %d.", _errorpos + 1 ); {
if( _valid ) // Segnala un errore
{ _errorpos = i;
// Aggiunge l'ultimo numero preso break;
real lastval( num ); }
_part = _part * ( cento + lastval ) / cento; // Se occorreva un numero ci metto lo 0
if( lastval >= 0 ) if( startnum )
goodexp << '+'; num << '0';
goodexp << num; // Interpreto la virgola come punto
// Assegna la nuova espressione formattata bene num << '.';
_exp = goodexp; dec = TRUE;
} startnum = TRUE;
else break;
{ default:
// Azzera la sequenza di percentuali _errorpos = i;
_part = 1.0; break;
} }
} }
// Controlla la validità
real TSconto::sconto( ) _valid = ( _errorpos < 0 );
{ // Se richiesto segnala l'errore
CHECK(is_valid( ),"Tentativo di usare uno sconto non valido!" ); if( !_valid && signal )
return ( ( _part * cento ) - cento ); warning_box( "Espressione di sconto non valida. Errore sul carattere %d.", _errorpos + 1 );
} if( _valid )
{
void calcola_sconto_riga( TRectype riga ) // Aggiunge l'ultimo numero preso
{ real lastval( num );
_part = _part * ( cento + lastval ) / cento;
if( lastval >= 0 )
} goodexp << '+';
goodexp << num;
// Assegna la nuova espressione formattata bene
_exp = goodexp;
}
else
{
// Azzera la sequenza di percentuali
_part = 1.0;
}
}
real TSconto::sconto( )
{
CHECK(is_valid( ),"Tentativo di usare uno sconto non valido!" );
return ( ( _part * cento ) - cento );
}
TSconto_riga::TSconto_riga( TCliFor& clifo, TMask * testa, TMask * riga ) : _condv( LF_CONDV ), _rcondv( LF_RCONDV ), _anamag( LF_ANAGR ), _sconti( LF_SCONTI ), _ditta( CONFIG_DITTA )
{
_clifo = &clifo;
_testa = testa;
_riga = riga;
}
bool TSconto_riga::cerca_condv( int tiporicerca )
{
TString s1 = _anamag.get( "CODART" );
TString s2 = riga( ).get( FS_CODART );
if( s1 != s2 )
{
_anamag.setkey( 1 );
_anamag.zero( );
_anamag.put( "CODART", riga( ).get( FS_CODART ) );
int ret = _anamag.read( );
CHECK( ret == NOERR, "Articolo non trovato in anagrafica di magazzino!" );
}
if( tiporicerca == A_ANAMAG )
// Se ricercavo per anagrafica, ho già finito
return TRUE;
if( _ditta.get_bool( "GES", "ve", tiporicerca ) )
{
// Se è attiva la gestione contratti ...
_condv.setkey( 1 );
_condv.zero( );
switch( tiporicerca )
{
case A_CONTRATTI:
_condv.put( "TIPO", "C" );
_condv.blank( "CATVEN" );
if( _ditta.get_bool( "GESSCONCC", "ve" ) )
{
// Se in ditta è abilitata la gestione del cliente in chiave
// al contratto, lo carico con gioia
_condv.put( "TIPOCF", clifo( ).tipocf( ) );
_condv.put( "CODCF", clifo( ).codcf( ) );
}
else
{
_condv.blank( "TIPOCF" );
_condv.blank( "CODCF" );
}
_condv.put( "COD", testa( ).get( F_CODCONT ) );
break;
case A_LISTINI:
_condv.put( "TIPO", "L" );
if( _ditta.get_bool( "GESLISCV", "ve" ) )
{
// Se in ditta è abilitata la gestione del cliente in chiave
// al contratto, lo carico con gioia
_condv.put( "TIPOCF", clifo( ).tipocf( ) );
_condv.put( "CODCF", clifo( ).codcf( ) );
}
else
{
_condv.blank( "TIPOCF" );
_condv.blank( "CODCF" );
}
_condv.blank( "CATVEN" );
_condv.put( "COD", testa( ).get( F_CODLIST ) );
break;
case A_OFFERTE:
_condv.put( "TIPO", "O" );
_condv.blank( "CATVEN" );
_condv.blank( "TIPOCF" );
_condv.blank( "CODCF" );
_condv.put( "COD", testa( ).get( F_CODCAMP ) );
break;
}
if( _condv.read( ) == NOERR )
{
_rcondv.setkey( 2 );
_rcondv.zero( );
_rcondv.put( "TIPO", _condv.get( "TIPO" ) );
_rcondv.put( "CATVEN", _condv.get( "CATVEN" ) );
_rcondv.put( "TIPOCF", _condv.get( "TIPOCF" ) );
_rcondv.put( "CODCF", _condv.get( "CODCF" ) );
if( _condv.get_bool( "GESTUM" ) )
{
_rcondv.put( "UM", riga( ).get( FS_UMQTA ) );
}
else
{
_rcondv.blank( "UM" );
}
if( _condv.get_bool( "GESTSCA" ) )
{
_rcondv.put( "QLIM", riga( ).get( FS_QTA ) );
}
else
{
_rcondv.blank( "QLIM" );
}
const TString16 seqricrighe( _condv.get( "SEQRIC" ) );
for( int i = 0; i < seqricrighe.len( ); i ++ )
{
char ricerca = seqricrighe[ i ];
_rcondv.put( "TIPORIGA", ricerca );
switch( ricerca )
{
case 'A':
_rcondv.put( "CODRIGA", _anamag.get( "CODART" ) );
if( _rcondv.read( ) == NOERR ) return TRUE;
break;
case 'R':
_rcondv.put( "CODRIGA", _anamag.get( "RAGGFIS" ) );
if( _rcondv.read( ) == NOERR ) return TRUE;
break;
case 'G':
_rcondv.put( "CODRIGA", _anamag.get( "GRMERC1" ) );
if( _rcondv.read( ) == NOERR ) return TRUE;
_rcondv.put( "CODRIGA", _anamag.get( "GRMERC2" ) );
if( _rcondv.read( ) == NOERR ) return TRUE;
_rcondv.put( "CODRIGA", _anamag.get( "GRMERC3" ) );
if( _rcondv.read( ) == NOERR ) return TRUE;
break;
default:
CHECK( FALSE, "Tipo di ricerca righe non valido!" );
}
}
// Ricerca fallita
return FALSE;
}
else
// Ricerca fallita
return FALSE;
}
else
// La ricerca non è gestita, impossibile trovarlo ...
return FALSE;
}
// Probabilmente dovrebbe lavorare sulla maschera, ma per ora la lasciamo così
void TSconto_riga::calcola( )
{
char gestione = _ditta.get_char( "GESSCORIGA", "ve" );
bool trovato = TRUE;
switch( gestione )
{
case 'N':
// Sconti di riga non gestiti
set( "" );
break;
case 'L':
// Percentuale su contratti/offerte/listini/anagrafica
trovato = cerca_condv( A_CONTRATTI );
if( !trovato ) trovato = cerca_condv( A_OFFERTE );
if( !trovato ) trovato = cerca_condv( A_LISTINI );
if( !trovato )
set( _rcondv.get( "SCONTO" ) );
else
{
if( cerca_condv( A_ANAMAG ) )
set( _anamag.get( "SCONTO" ) );
else
CHECK( FALSE, "Sconto non trovato!( 1 )" );
}
break;
case 'A':
// Posiziono l'anagrafica
cerca_condv( A_ANAMAG );
_sconti.setkey( 1 );
_sconti.put( "TIPO", "R" );
_sconti.put( "CODART", _anamag.get( "CODART" ) );
if( _ditta.get_bool( "GESSCORIGACV", "ve" ) )
{
_sconti.put( "CODCAT", clifo( ).get( LF_CFVEN, "SCONTO" ) );
}
if( _ditta.get_bool( "GESSCORIGAUM", "ve" ) )
{
_sconti.put( "UM", riga( ).get( FS_UMQTA ) );
}
if( _sconti.read( ) == NOERR )
// Bravo, hai vinto una bambolina
set( _sconti.get( "SCONTO" ) );
else
CHECK( FALSE, "Sconto non trovato!( 2 )" );
break;
case 'C':
set( clifo( ).get( LF_CFVEN, "SCONTO" ) );
}
}

View File

@ -5,6 +5,19 @@
#include <real.h> #include <real.h>
#endif #endif
#ifndef __TCLIFOR_H
#include "tclifor.h"
#endif
#ifndef __MASK_H
#include <mask.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#define CHKVALID CHECK( _valid, "Tentativo di usare uno sconto non valido!" ) #define CHKVALID CHECK( _valid, "Tentativo di usare uno sconto non valido!" )
class TSconto : public TObject class TSconto : public TObject
@ -28,4 +41,35 @@ public:
}; };
#undef CHKVALID #undef CHKVALID
class TSconto_riga : public TSconto
{
private:
TCliFor* _clifo;
// TRelation _condv;
// Invece che la relazione uso i due files, poichè mi interessa sempre
// solo una delle righe
TLocalisamfile _condv;
TLocalisamfile _rcondv;
TLocalisamfile _anamag;
TLocalisamfile _sconti;
TConfig _ditta;
TMask* _testa;
TMask* _riga;
protected:
public:
TSconto_riga( TCliFor& clifo, TMask * testa = NULL, TMask * riga = NULL );
TCliFor& clifo( ){ return *_clifo; }
void set_testa( TMask& testa ){ _testa = &testa; }
TMask& testa( ){ return *_testa; }
void set_riga( TMask& riga ){ _riga = &riga; }
TMask& riga( ){ return *_riga; }
bool cerca_condv( int tiporicerca );
void calcola( );
};
#endif #endif

View File

@ -1,335 +1,384 @@
#ifndef __TCLIFOR_H #ifndef __TCLIFOR_H
#include "tclifor.h" #include "tclifor.h"
#endif #endif
#ifndef __CONFIG_H #ifndef __CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
#ifndef __VEUML1_H #ifndef __VEUML1_H
#include "veuml1.h" #include "veuml1.h"
#endif #endif
#ifndef __VE1000O_H #ifndef __VE1000O_H
#include "ve1000o.h" #include "ve1000o.h"
#endif #endif
const TString& TData_picker::get( const TString& table, const TString& codtab, const TString& field ) const TString& TData_picker::get( const TString& table, const TString& codtab, const TString& field )
{ {
if( table != _tablename ) if( table != _tablename )
{ {
delete _table; delete _table;
_table = new TTable( table ); _table = new TTable( table );
_tablename = table; _tablename = table;
} }
if( codtab != _table->curr( ).get( "CODTAB" ) ) if( codtab != _table->curr( ).get( "CODTAB" ) )
{ {
_table->zero( ); _table->zero( );
_table->put( "CODTAB", codtab ); _table->put( "CODTAB", codtab );
_table->read( ); _table->read( );
} }
return _table->get( field ); return _table->get( field );
}; };
const TString& TData_picker::get( const int file, const TString& fieldname ) const TString& TData_picker::get( const int file, const TString& fieldname )
{ {
return lfile( file ).get( fieldname ); return lfile( file ).get( fieldname );
} }
int TData_picker::get_int( const int file, const TString& fieldname ) int TData_picker::get_int( const int file, const TString& fieldname )
{ {
return lfile( file ).get_int( fieldname ); return lfile( file ).get_int( fieldname );
} }
long TData_picker::get_long( const int file, const TString& fieldname ) long TData_picker::get_long( const int file, const TString& fieldname )
{ {
return lfile( file ).get_long( fieldname ); return lfile( file ).get_long( fieldname );
} }
bool TData_picker::get_bool( const int file, const TString& fieldname ) bool TData_picker::get_bool( const int file, const TString& fieldname )
{ {
return lfile( file ).get_bool( fieldname ); return lfile( file ).get_bool( fieldname );
} }
int TCliFor::write_occas( ) int TCliFor::write_occas( )
{ {
if( !occasionale( ) ) if( !occasionale( ) )
return NOERR; return NOERR;
TRelation occas( LF_OCCAS ); TRelation occas( LF_OCCAS );
occas_mask( ).autosave( &occas ); occas_mask( ).autosave( &occas );
return occas.write( ); return occas.write( );
} }
TCliFor::TCliFor( ) : TData_picker( LF_CLIFO ), _occas_mask( "ve1000o" ) TCliFor::TCliFor( ) : TData_picker( LF_CLIFO ), _occas_mask( "ve1000o" )
{ {
_occas_mask.set_handler( O_CODICE, occas_code_handler ); _occas_mask.set_handler( O_CODICE, occas_code_handler );
add( LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF" ); add( LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF" );
} }
void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi ) void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
{ {
_tipocf = tipocf; _tipocf = tipocf;
_codcf = codcf; _codcf = codcf;
zero( ); zero( );
curr( ).put( "TIPOCF", tipocf ); curr( ).put( "TIPOCF", tipocf );
curr( ).put( "CODCF", codcf ); curr( ).put( "CODCF", codcf );
lfile( ).setkey( 1 ); lfile( ).setkey( 1 );
if( read( ) != NOERR ) if( read( ) != NOERR )
yesnofatal_box( "Il %s %d non è stato trovato!", tipocf == 'C'?"cliente":"fornitore", codcf ); yesnofatal_box( "Il %s %d non è stato trovato!", tipocf == 'C'?"cliente":"fornitore", codcf );
_occas = curr().get_bool( "OCCAS" ); _occas = curr().get_bool( "OCCAS" );
if ( occasionale( ) ) if ( occasionale( ) )
{ {
TRelation occrel( LF_OCCAS ); TRelation occrel( LF_OCCAS );
occrel.curr( ).zero( ); occrel.curr( ).zero( );
occrel.curr( ).put( "CFPI", ocfpi ); occrel.curr( ).put( "CFPI", ocfpi );
occrel.read( ); occrel.read( );
occas_mask( ).autoload( &occrel ); occas_mask( ).autoload( &occrel );
} }
} }
void TCliForVendite::update_mask( TMask_vendite& m, bool onload ) void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
{ {
TString16 stato; TString16 stato;
// Setta i campi che appartengono al file LF_CLIFO // Setta i campi che appartengono al file LF_CLIFO
bool occas = occasionale( ); bool occas = occasionale( );
m.show( F_OCFPI, occas ); m.show( F_OCFPI, occas );
m.show( F_OCCASEDIT, occas ); m.show( F_OCCASEDIT, occas );
// In forse per l'Occasionale, sicuri per il Normale // In forse per l'Occasionale, sicuri per il Normale
m.show( F_COFI, !occas ); m.show( F_COFI, !occas );
m.show( F_STATOPAIVA, !occas ); m.show( F_STATOPAIVA, !occas );
m.show( F_PAIVA, !occas ); m.show( F_PAIVA, !occas );
set( m, F_RAGSOC, LF_CLIFO, "RAGSOC" ); set( m, F_RAGSOC, LF_CLIFO, "RAGSOC" );
if( !onload ) if( !onload )
{ {
set( m, F_CODVAL, LF_CLIFO, "CODVAL" ); set( m, F_CODVAL, LF_CLIFO, "CODVAL" );
set( m, F_CODLIN, LF_CLIFO, "CODLIN" ); set( m, F_CODLIN, LF_CLIFO, "CODLIN" );
set( m, F_CODPAG, LF_CLIFO, "CODPAG" ); set( m, F_CODPAG, LF_CLIFO, "CODPAG" );
set( m, F_CODABIA, LF_CLIFO, "CODABI" ); set( m, F_CODABIA, LF_CLIFO, "CODABI" );
set( m, F_CODCABA, LF_CLIFO, "CODCAB" ); set( m, F_CODCABA, LF_CLIFO, "CODCAB" );
// Setta i campi che appartengono al file LF_CFVEN // Setta i campi che appartengono al file LF_CFVEN
set( m, F_CODABIP, LF_CFVEN, "CODABIPR" ); set( m, F_CODABIP, LF_CFVEN, "CODABIPR" );
set( m, F_CODCABP, LF_CFVEN, "CODCABPR" ); set( m, F_CODCABP, LF_CFVEN, "CODCABPR" );
set( m, F_RAGGR, LF_CFVEN, "RAGGDOC" ); set( m, F_RAGGR, LF_CFVEN, "RAGGDOC" );
set( m, F_CODINDSP, LF_CFVEN, "CODINDSP" ); set( m, F_CODINDSP, LF_CFVEN, "CODINDSP" );
set( m, F_CODAG, LF_CFVEN, "CODAG" ); set( m, F_CODAG, LF_CFVEN, "CODAG" );
set( m, F_CODSPMEZZO, LF_CFVEN, "CODSPMEZZO" ); set( m, F_CODSPMEZZO, LF_CFVEN, "CODSPMEZZO" );
set( m, F_CODPORTO, LF_CFVEN, "CODPORTO" ); set( m, F_CODPORTO, LF_CFVEN, "CODPORTO" );
set( m, F_CODNOTESP1, LF_CFVEN, "CODNOTESP1" ); set( m, F_CODNOTESP1, LF_CFVEN, "CODNOTESP1" );
set( m, F_CODNOTESP2, LF_CFVEN, "CODNOTESP2" ); set( m, F_CODNOTESP2, LF_CFVEN, "CODNOTESP2" );
set( m, F_CODVETT1, LF_CFVEN, "CODVETT1" ); set( m, F_CODVETT1, LF_CFVEN, "CODVETT1" );
set( m, F_CODVETT2, LF_CFVEN, "CODVETT2" ); set( m, F_CODVETT2, LF_CFVEN, "CODVETT2" );
set( m, F_CODVETT3, LF_CFVEN, "CODVETT3" ); set( m, F_CODVETT3, LF_CFVEN, "CODVETT3" );
set( m, F_SPESEINC, LF_CFVEN, "ADDSPINC" ); set( m, F_SPESEINC, LF_CFVEN, "ADDSPINC" );
set( m, F_ADDBRB, LF_CFVEN, "ADDBOLLIRB" ); set( m, F_ADDBRB, LF_CFVEN, "ADDBOLLIRB" );
set( m, F_ADDBTR, LF_CFVEN, "ADDBOLLITR" ); set( m, F_ADDBTR, LF_CFVEN, "ADDBOLLITR" );
} }
if ( occasionale ( ) ) if ( occasionale ( ) )
{ {
m.set( F_COFI, "" ); m.set( F_COFI, "" );
m.set( F_PAIVA, "" ); m.set( F_PAIVA, "" );
m.set( F_OCFPI, occas_mask( ).get( O_CODICE ) ); m.set( F_OCFPI, occas_mask( ).get( O_CODICE ) );
m.set( F_RAGSOC, occas_mask( ).get( O_RAGSOC ) ); m.set( F_RAGSOC, occas_mask( ).get( O_RAGSOC ) );
m.set( F_INDCF, occas_mask( ).get( O_INDIRIZZO ) ); m.set( F_INDCF, occas_mask( ).get( O_INDIRIZZO ) );
m.set( F_CIVCF, occas_mask( ).get( O_NUMERO ) ); m.set( F_CIVCF, occas_mask( ).get( O_NUMERO ) );
m.set( F_CAPCF, occas_mask( ).get( O_CAP ) ); m.set( F_CAPCF, occas_mask( ).get( O_CAP ) );
m.set( F_COMCF, occas_mask( ).get( O_COMUNE ) ); m.set( F_COMCF, occas_mask( ).get( O_COMUNE ) );
m.set( F_STATOCF, stato = occas_mask( ).get( O_STATO ) ); m.set( F_STATOCF, stato = occas_mask( ).get( O_STATO ) );
} }
else else
{ {
set( m, F_COFI, LF_CLIFO, "COFI" ); set( m, F_COFI, LF_CLIFO, "COFI" );
set( m, F_INDCF, LF_CLIFO, "INDCF" ); set( m, F_INDCF, LF_CLIFO, "INDCF" );
set( m, F_CIVCF, LF_CLIFO, "CIVCF" ); set( m, F_CIVCF, LF_CLIFO, "CIVCF" );
set( m, F_STATOPAIVA, LF_CLIFO, "STATOPAIV" ); set( m, F_STATOPAIVA, LF_CLIFO, "STATOPAIV" );
set( m, F_PAIVA, LF_CLIFO, "PAIV" ); set( m, F_PAIVA, LF_CLIFO, "PAIV" );
set( m, F_LOCALITACF, LF_CLIFO, "LOCALITACF" ); set( m, F_LOCALITACF, LF_CLIFO, "LOCALITACF" );
set( m, F_CAPCF, LF_CLIFO, "CAPCF" ); set( m, F_CAPCF, LF_CLIFO, "CAPCF" );
set( m, F_COMCF, LF_CLIFO, "COMCF" ); set( m, F_COMCF, LF_CLIFO, "COMCF" );
stato = get( LF_CLIFO, "STATOCF" ); stato = get( LF_CLIFO, "STATOCF" );
m.set( F_STATOCF, stato ); m.set( F_STATOCF, stato );
} }
if ( !stato.blank( ) ) if ( !stato.blank( ) )
m.set( F_DESSTATOCF, get( "%STA", stato, "S0" ) ); m.set( F_DESSTATOCF, get( "%STA", stato, "S0" ) );
TString16 tmpstr( m.get( F_CODPAG ) ); m.check_field( F_CODPAG );
if( !tmpstr.blank( ) ) m.check_field( F_CODLIN );
{ // m.check_field( F_CODABIA );
m.field( F_CODPAG ).on_hit( ); m.check_field( F_CODCABA );
m.field( F_CODPAG ).check( ); // m.check_field( F_CODABIP );
} m.check_field( F_CODCABP );
tmpstr = m.get( F_CODLIN ); m.check_field( F_CODINDSP );
if( !tmpstr.blank( ) ) m.check_field( F_CODAG );
m.field( F_CODLIN ).check( ); m.check_field( F_CODSPMEZZO );
imposta_dati_comune( m ); m.check_field( F_CODPORTO );
imposta_indirizzo_spedizione( m ); m.check_field( F_CODNOTESP1 );
imposta_sconto_testa( m ); m.check_field( F_CODNOTESP2 );
} m.check_field( F_CODVETT1 );
m.check_field( F_CODVETT2 );
void TCliFor::edita_occasionale( ) m.check_field( F_CODVETT3 );
{ imposta_dati_comune( m );
CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" ); imposta_indirizzo_spedizione( m );
_occas_mask.run( ); imposta_sconto_testa( m );
}; imposta_valuta( m );
}
bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
{ void TCliFor::edita_occasionale( )
if (key == K_TAB) {
{ CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" );
const char* code = f.get(); _occas_mask.run( );
if (*code) };
{
TRelation occas(LF_OCCAS); bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
occas.lfile().put("CFPI", code); {
if (occas.read(_isequal) == NOERR) if (key == K_TAB)
{ {
f.mask().autoload(&occas); const char* code = f.get();
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni if (*code)
f.mask().send_key(K_TAB, O_COMUNENAS); {
} TRelation occas(LF_OCCAS);
} occas.lfile().put("CFPI", code);
} if (occas.read(_isequal) == NOERR)
return TRUE; {
} f.mask().autoload(&occas);
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
void TCliForVendite::imposta_dati_comune( TMask_vendite& m ) f.mask().send_key(K_TAB, O_COMUNENAS);
{ }
TLocalisamfile comuni(LF_COMUNI); }
comuni.setkey( 1 ); }
if( occasionale( ) ) return TRUE;
{ }
comuni.put( "COM", occas_mask( ).get( O_COMUNE ));
comuni.put( "STATO", occas_mask( ).get( O_STATO ) ); void TCliForVendite::imposta_dati_comune( TMask_vendite& m )
} {
else TLocalisamfile comuni(LF_COMUNI);
{ comuni.setkey( 1 );
comuni.put( "COM", get( LF_CLIFO, "COMCF" )); if( occasionale( ) )
comuni.put( "STATO", get( LF_CLIFO, "STATOCF" ) ); {
} comuni.put( "COM", occas_mask( ).get( O_COMUNE ));
comuni.read( ); comuni.put( "STATO", occas_mask( ).get( O_STATO ) );
m.set( F_DENCOM, comuni.get( "DENCOM" ) ); }
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) ); else
} {
comuni.put( "COM", get( LF_CLIFO, "COMCF" ));
void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m ) comuni.put( "STATO", get( LF_CLIFO, "STATOCF" ) );
{ }
TString16 stato; comuni.read( );
if( occasionale( ) ) m.set( F_DENCOM, comuni.get( "DENCOM" ) );
{ m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
m.set( F_CODINDSP, "" ); }
m.disable( F_CODINDSP );
m.set( F_RAGSOCSP, occas_mask( ).get( O_RAGSOC ) ); void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
m.set( F_INDSP, occas_mask( ).get( O_INDIRIZZO ) ); {
m.set( F_CIVSP, occas_mask( ).get( O_NUMERO ) ); TString16 stato;
// Sugli occasionali non c'è la località if( occasionale( ) )
m.set( F_LOCALITASP, "" ); {
m.set( F_CAPSP, occas_mask( ).get( O_CAP ) ); m.set( F_CODINDSP, "" );
m.set( F_COMSP, occas_mask( ).get( O_COMUNE ) ); m.disable( F_CODINDSP );
m.set( F_STATOSP, stato = occas_mask( ).get( O_STATO ) ); m.set( F_RAGSOCSP, occas_mask( ).get( O_RAGSOC ) );
} m.set( F_INDSP, occas_mask( ).get( O_INDIRIZZO ) );
else m.set( F_CIVSP, occas_mask( ).get( O_NUMERO ) );
{ // Sugli occasionali non c'è la località
TString16 codindsp( m.get( F_CODINDSP ) ); m.set( F_LOCALITASP, "" );
if( codindsp.blank( ) ) m.set( F_CAPSP, occas_mask( ).get( O_CAP ) );
{ m.set( F_COMSP, occas_mask( ).get( O_COMUNE ) );
m.set( F_RAGSOCSP, "" ); m.set( F_STATOSP, stato = occas_mask( ).get( O_STATO ) );
m.set( F_INDSP, "" ); }
m.set( F_CIVSP, "" ); else
m.set( F_LOCALITASP, "" ); {
m.set( F_CAPSP, "" ); TString16 codindsp( m.get( F_CODINDSP ) );
m.set( F_COMSP, "" ); if( codindsp.blank( ) )
m.set( F_STATOSP, "" ); {
return; m.set( F_RAGSOCSP, "" );
} m.set( F_INDSP, "" );
else m.set( F_CIVSP, "" );
{ m.set( F_LOCALITASP, "" );
TLocalisamfile indsped( LF_INDSP ); m.set( F_CAPSP, "" );
indsped.setkey( 1 ); m.set( F_COMSP, "" );
indsped.put( "TIPOCF", _tipocf ); m.set( F_STATOSP, "" );
indsped.put( "CODCF", _codcf ); return;
indsped.put( "CODIND", atoi( codindsp ) ); }
if( indsped.read( ) != NOERR ) else
yesnofatal_box( "Indirizzo di spedizione non trovato!" ); {
m.set( F_RAGSOCSP, indsped.get( "RAGSOC" ) ); TLocalisamfile indsped( LF_INDSP );
m.set( F_INDSP, indsped.get( "INDIR" ) ); indsped.setkey( 1 );
m.set( F_CIVSP, indsped.get( "CIV" ) ); indsped.put( "TIPOCF", _tipocf );
m.set( F_LOCALITASP, indsped.get( "LOCALITA" ) ); indsped.put( "CODCF", _codcf );
m.set( F_CAPSP, indsped.get( "CAP" ) ); indsped.put( "CODIND", atoi( codindsp ) );
m.set( F_COMSP, indsped.get( "COM" ) ); if( indsped.read( ) != NOERR )
m.set( F_STATOSP, stato = indsped.get( "STATO" ) ); yesnofatal_box( "Indirizzo di spedizione non trovato!" );
} m.set( F_RAGSOCSP, indsped.get( "RAGSOC" ) );
} m.set( F_INDSP, indsped.get( "INDIR" ) );
if ( !stato.blank( ) ) m.set( F_CIVSP, indsped.get( "CIV" ) );
m.set( F_DESSTATOSP, get( "%STA", stato, "S0" ) ); m.set( F_LOCALITASP, indsped.get( "LOCALITA" ) );
TLocalisamfile comuni(LF_COMUNI); m.set( F_CAPSP, indsped.get( "CAP" ) );
comuni.setkey( 1 ); m.set( F_COMSP, indsped.get( "COM" ) );
comuni.put( "COM", m.get( F_COMSP ) ); m.set( F_STATOSP, stato = indsped.get( "STATO" ) );
comuni.put( "STATO", m.get( F_STATOSP ) ); }
comuni.read( ); }
m.set( F_DENCOMSP, comuni.get( "DENCOM" ) ); if ( !stato.blank( ) )
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) ); m.set( F_DESSTATOSP, get( "%STA", stato, "S0" ) );
} TLocalisamfile comuni(LF_COMUNI);
comuni.setkey( 1 );
void TCliForVendite::imposta_sconto_testa( TMask_vendite& m ) comuni.put( "COM", m.get( F_COMSP ) );
{ comuni.put( "STATO", m.get( F_STATOSP ) );
TConfig ditta( CONFIG_DITTA ); comuni.read( );
TString16 codsconto; m.set( F_DENCOMSP, comuni.get( "DENCOM" ) );
TString16 codart; m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
}
char tipogestione = ditta.get( "GESSCO", "ve" )[ 0 ];
switch( tipogestione ) void TCliForVendite::imposta_sconto_testa( TMask_vendite& m )
{ {
case 'N': // Sconti non gestiti: pussa via! TConfig ditta( CONFIG_DITTA );
return; TString16 codsconto;
break; TString16 codart;
case 'P': // Percentuale su anagrafica cliente
m.set( F_SCONTOPERC, get( LF_CFVEN, "SCONTO" ) ); char tipogestione = ditta.get( "GESSCO", "ve" )[ 0 ];
return; switch( tipogestione )
break; {
case 'T': // Gestione tabella sconti case 'N': // Sconti non gestiti: pussa via!
codsconto = get( LF_CFVEN, "CODSCC" ); return;
if( !codsconto.blank( ) ) break;
{ case 'P': // Percentuale su anagrafica cliente
TLocalisamfile sconti( LF_SCONTI ); m.set( F_SCONTOPERC, get( LF_CFVEN, "SCONTO" ) );
sconti.setkey( 1 ); return;
sconti.zero( ); break;
sconti.put( "TIPO", "D" ); case 'T': // Gestione tabella sconti
sconti.put( "CODCAT", codsconto ); codsconto = get( LF_CFVEN, "CODSCC" );
if( sconti.read( ) == NOERR ) if( !codsconto.blank( ) )
m.set( F_SCONTOPERC, sconti.get( "SCONTO" ) ); {
else // ARCHIVIO SVCONTI PER SCONTO CLIENTE
message_box( "Sconto non trovato nella tabella sconti!" ); // TLocalisamfile sconti( LF_SCONTI );
} // sconti.setkey( 1 );
return; // sconti.zero( );
break; // sconti.put( "TIPO", "D" );
case 'A': // Gestione archivio sconti // sconti.put( "CODCAT", codsconto );
TLocalisamfile sconti( LF_SCONTI ); // if( sconti.read( ) == NOERR )
sconti.setkey( 1 ); // m.set( F_SCONTOPERC, sconti.get( "SCONTO" ) );
sconti.zero( ); // else
sconti.put( "TIPO", "I" ); // message_box( "Sconto non trovato nella tabella sconti!" );
if( ditta.get_bool( "SCOKEY", "ve", 1 ) ) TTable sconti( "%SCC" );
{ sconti.setkey( 1 );
sconti.put( "CODCAT", get( LF_CFVEN, "CATVEN" ) ); sconti.zero( );
if( ditta.get_bool( "SCOKEY", "ve", 2 ) ) // sconti.put( "TIPO", "D" );
{ sconti.put( "CODTAB", codsconto );
codart= get( LF_CFVEN, "CODSCC" ); if( sconti.read( ) == NOERR )
if( ditta.get_bool( "SCOKEY", "ve", 3 ) ) m.set( F_SCONTOPERC, sconti.get( "S1" ) );
{ #ifdef DBG
codart << get( LF_CFVEN, "CODZONA" ); else
if( ditta.get_bool( "SCOKEY", "ve", 4 ) ) message_box( "Sconto non trovato nella tabella sconti!" );
codart << get( LF_CLIFO, "CODPAG" ); #endif
} }
} return;
} break;
sconti.put( "CODART", codart ); case 'A': // Gestione archivio sconti
if( sconti.read( ) == NOERR ) TLocalisamfile sconti( LF_SCONTI );
{ sconti.setkey( 1 );
m.set( F_SCONTOPERC, sconti.get( "SCONTO" ) ); sconti.zero( );
} sconti.put( "TIPO", "I" );
else if( ditta.get_bool( "SCOKEY", "ve", 1 ) )
{ sconti.put( "CODCAT", get( LF_CFVEN, "CATVEN" ) );
message_box( "Sconto non trovato nell'archivio sconti!" ); if( ditta.get_bool( "SCOKEY", "ve", 2 ) )
} codart << get( LF_CFVEN, "CODSCC" );
return; else
break; codart << " ";
} if( ditta.get_bool( "SCOKEY", "ve", 3 ) )
} codart << get( LF_CFVEN, "CODZONA" );
else
codart << " ";
if( ditta.get_bool( "SCOKEY", "ve", 4 ) )
codart << get( LF_CLIFO, "CODPAG" );
sconti.put( "CODART", codart );
if( sconti.read( ) == NOERR )
m.set( F_SCONTOPERC, sconti.get( "SCONTO" ) );
#ifdef DBG
else
message_box( FALSE, "Sconto non trovato nell'archivio sconti!" );
#endif
return;
break;
}
}
void TCliForVendite::imposta_valuta( TMask_vendite& m )
{
TConfig ditta( CONFIG_DITTA );
if( ditta.get_bool( "GESVALAC", "ve" ) )
{
TTable cambi( "%CAM" );
cambi.zero( );
TString16 val( m.get( F_CODVAL ) );
TString16 codtab( ( const char * ) val );
codtab << m.get( F_DATADOC );
cambi.put( "CODTAB", codtab );
const int result = cambi.read( _isgteq );
if( result == _iseof )
cambi.prev( );
codtab = cambi.get( "CODTAB" );
if ( codtab.sub( 0, 2 ) == val )
{
m.set( F_CAMBIO, cambi.get( "R10" ) );
m.set( F_DATACAMBIO, cambi.get( "D0" ) );
return;
}
}
TTable valuta( "VAL" );
valuta.zero( );
valuta.put( "CODTAB", m.get( F_CODVAL ) );
if( valuta.read( ) == NOERR )
{
m.set( F_CAMBIO, valuta.get( "R10" ) );
m.set( F_DATACAMBIO, valuta.get( "D0" ) );
}
}

View File

@ -1,73 +1,76 @@
#ifndef __TCLIFOR_H #ifndef __TCLIFOR_H
#define __TCLIFOR_H #define __TCLIFOR_H
#ifndef __CHECKS_H #ifndef __CHECKS_H
#include <checks.h> #include <checks.h>
#endif #endif
#ifndef __RELATION_H #ifndef __RELATION_H
#include <relation.h> #include <relation.h>
#endif #endif
#ifndef __TABUTIL_H #ifndef __TABUTIL_H
#include <tabutil.h> #include <tabutil.h>
#endif #endif
#ifndef __TMASKVEN_H #ifndef __TMASKVEN_H
#include "tmaskven.h" #include "tmaskven.h"
#endif #endif
class TData_picker : public TRelation class TData_picker : public TRelation
{ {
private: private:
TTable* _table; TTable* _table;
TString16 _tablename; TString16 _tablename;
public: public:
TData_picker( const int mainfile ) : TRelation ( mainfile ) { } TData_picker( const int mainfile ) : TRelation ( mainfile ) { }
const TString& get( const TString& table, const TString& codtab, const TString& field ); const TString& get( const TString& table, const TString& codtab, const TString& field );
const TString& get( const int file, const TString& fieldname ); const TString& get( const int file, const TString& fieldname );
int get_int( const int file, const TString& fieldname ); int get_int( const int file, const TString& fieldname );
long get_long( const int file, const TString& fieldname ); long get_long( const int file, const TString& fieldname );
bool get_bool( const int file, const TString& fieldname ); bool get_bool( const int file, const TString& fieldname );
void set( TMask_vendite& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); }; void set( TMask_vendite& m, const int mskfield, const int file, const TString& filefield ){ m.set( mskfield, get( file, filefield ) ); };
}; };
class TCliFor : public TData_picker class TCliFor : public TData_picker
{ {
private: private:
bool _occas; bool _occas;
TMask _occas_mask; TMask _occas_mask;
protected: protected:
char _tipocf; char _tipocf;
long _codcf; long _codcf;
public: public:
TCliFor( ); TCliFor( );
void load( const char tipocf, const long codcf, const TString& ocfpi ); void load( const char tipocf, const long codcf, const TString& ocfpi );
bool occasionale( ){ return get_bool( LF_CLIFO, "OCCAS" ); }; bool occasionale( ){ return get_bool( LF_CLIFO, "OCCAS" ); };
TMask& occas_mask( ){ return _occas_mask; }; TMask& occas_mask( ){ return _occas_mask; };
static bool occas_code_handler(TMask_field& f, KEY key); static bool occas_code_handler(TMask_field& f, KEY key);
int write_occas( ); int write_occas( );
void edita_occasionale( ); void edita_occasionale( );
}; char tipocf( ){ return _tipocf; }
long codcf( ){ return _codcf; }
class TCliForVendite : public TCliFor };
{
class TCliForVendite : public TCliFor
public: {
void update_mask( TMask_vendite& m, bool onload = FALSE ); public:
void imposta_dati_comune( TMask_vendite& m );
void imposta_indirizzo_spedizione( TMask_vendite& m ); void update_mask( TMask_vendite& m, bool onload = FALSE );
void imposta_sconto_testa( TMask_vendite& m ); void imposta_dati_comune( TMask_vendite& m );
void imposta_valuta( TMask_vendite& m );
}; void imposta_indirizzo_spedizione( TMask_vendite& m );
void imposta_sconto_testa( TMask_vendite& m );
#endif
};
#endif

View File

@ -1,243 +1,243 @@
# Esempio di profilo documento : Profilo Bolla Vendita # Esempio di profilo documento : Profilo Bolla Vendita
[MAIN] [MAIN]
# Descrizione a caratteri del documento # Descrizione a caratteri del documento
TYPE=Bolla Base TYPE=Bolla Base
# Dove sono le risorse per il documento # Dove sono le risorse per il documento
MSKFILE=VEBOLLAC MSKFILE=VEBOLLAC
FRMFILE=BOLLAC.FRM FRMFILE=BOLLAC.FRM
PROGPIEDE=31|35 PROGPIEDE=31|35
# Procedure utente da chiamare per il documento ( preprocessarle? ) # Procedure utente da chiamare per il documento ( preprocessarle? )
NUOVO=1 NUOVO=1
MODIFICA=5 MODIFICA=5
CANCELLA=12 CANCELLA=12
STAMPA=4 STAMPA=4
RAGGRUPPA=3 RAGGRUPPA=3
USER=2 USER=2
# Indica se il documento è indirizzato ad un cliente o ad un fornitore # Indica se il documento è indirizzato ad un cliente o ad un fornitore
TIPOCF=C TIPOCF=C
# Quali progressivi appaiono in stampa o visualizzazione del documento # Quali progressivi appaiono in stampa o visualizzazione del documento
ProgPiede=1,7,23,12 ProgPiede=1,7,23,12
[INSERIMENTO] [INSERIMENTO]
# Stati in cui è possibile effettuare la operazione # Stati in cui è possibile effettuare la operazione
STATIVALIDI=1,2,3,4,5,6,7,8,9 STATIVALIDI=1,2,3,4,5,6,7,8,9
# Stato finale del documento dopo la operazione # Stato finale del documento dopo la operazione
STATOFINALE=1 STATOFINALE=1
[MODIFICA] [MODIFICA]
# Stati in cui è possibile effettuare la operazione # Stati in cui è possibile effettuare la operazione
STATIVALIDI=1,2,3,4,5 STATIVALIDI=1,2,3,4,5
# Stato finale del documento dopo la operazione # Stato finale del documento dopo la operazione
STATOFINALE=N STATOFINALE=N
[CANCELLAZIONE] [CANCELLAZIONE]
STATIVALIDI = 6,7 STATIVALIDI = 6,7
STATOFINALE = 4 STATOFINALE = 4
REMOVE = 0 REMOVE = 0
[STAMPA] [STAMPA]
# Stati in cui è possibile effettuare la operazione # Stati in cui è possibile effettuare la operazione
STATIVALIDI=1,2,3,4,5 STATIVALIDI=1,2,3,4,5
# Stato finale del documento dopo la operazione # Stato finale del documento dopo la operazione
STATOFINALE=6 STATOFINALE=6
[RAGGRUPPA] [RAGGRUPPA]
# Stati in cui è possibile effettuare la operazione # Stati in cui è possibile effettuare la operazione
STATIVALIDI=6,7,8,9 STATIVALIDI=6,7,8,9
# Stato finale del documento dopo la operazione # Stato finale del documento dopo la operazione
STATOFINALE=1 STATOFINALE=1
[SPECIALE] [SPECIALE]
# Stati in cui è possibile effettuare la operazione # Stati in cui è possibile effettuare la operazione
STATIVALIDI=1,2,3,4,5,6,7,8,9 STATIVALIDI=1,2,3,4,5,6,7,8,9
# Stato finale del documento dopo la operazione # Stato finale del documento dopo la operazione
STATOFINALE=9 STATOFINALE=9
[PROFILO] [PROFILO]
TIPOCF = 2 TIPOCF = 2
CODCF = 3 CODCF = 3
RAGSOC = 2 RAGSOC = 2
OCCAS = 0 OCCAS = 0
OCFPI = 1 OCFPI = 1
COFI = 1 COFI = 1
STATOPAIV = 1 STATOPAIV = 1
PAIVA = 1 PAIVA = 1
INDCF = 1 INDCF = 1
CIVCF = 1 CIVCF = 1
LOCALITACF = 1 LOCALITACF = 1
CAPCF = 1 CAPCF = 1
PROVCOM = 1 PROVCOM = 1
COMCF = 1 COMCF = 1
DENCOM = 1 DENCOM = 1
STATOCF = 1 STATOCF = 1
DESSTATOCF = 1 DESSTATOCF = 1
CODVAL = 2 CODVAL = 2
NOME_VAL = 1 NOME_VAL = 1
CAMBIO = 3 CAMBIO = 3
DATA_CAMBIO = 1 DATA_CAMBIO = 1
CODLIN = 2 CODLIN = 2
DESLIN = 1 DESLIN = 1
CODPAG = 3 CODPAG = 3
DESCODPAG = 1 DESCODPAG = 1
DATAINSC = 2 DATAINSC = 2
DATASCAD1 = 1 DATASCAD1 = 1
DATASCAD2 = 1 DATASCAD2 = 1
DATASCAD3 = 1 DATASCAD3 = 1
DATASCAD4 = 1 DATASCAD4 = 1
DATASCAD5 = 1 DATASCAD5 = 1
CODABIA = 3 CODABIA = 3
CODCABA = 3 CODCABA = 3
DESBANAPP = 2 DESBANAPP = 2
CODABIP = 2 CODABIP = 2
CODCABP = 2 CODCABP = 2
DESBANPRE = 2 DESBANPRE = 2
CODLIST = 2 CODLIST = 2
CODCONT = 2 CODCONT = 2
CODCAMP = 2 CODCAMP = 2
SCONTOPERC = 2 SCONTOPERC = 2
CODINDSP = 2 CODINDSP = 2
INDSP = 2 INDSP = 2
CIVSP = 2 CIVSP = 2
LOCALITASP = 2 LOCALITASP = 2
CAPSP = 2 CAPSP = 2
COMSP = 2 COMSP = 2
DENCOMSP = 2 DENCOMSP = 2
PROVCOMSP = 2 PROVCOMSP = 2
STATOSP = 2 STATOSP = 2
DESSTATOSP = 2 DESSTATOSP = 2
DATADOCRIF = 2 DATADOCRIF = 2
NUMDOCRIF = 2 NUMDOCRIF = 2
CODAGVIS = 2 CODAGVIS = 2
CODAG = 2 CODAG = 2
CODSPMEZZO = 2 CODSPMEZZO = 2
CODPORTO = 2 CODPORTO = 2
PORTO = 2 PORTO = 2
CODNOTESP1 = 2 CODNOTESP1 = 2
CODNOTESP2 = 2 CODNOTESP2 = 2
CAUSTRASP = 2 CAUSTRASP = 2
DENCAUSTRASP = 2 DENCAUSTRASP = 2
CODVETT1 = 2 CODVETT1 = 2
CODVETT2 = 2 CODVETT2 = 2
CODVETT3 = 2 CODVETT3 = 2
NOMEVETT1 = 2 NOMEVETT1 = 2
NOMEVETT2 = 2 NOMEVETT2 = 2
NOMEVETT3 = 2 NOMEVETT3 = 2
NCOPIE = 2 NCOPIE = 2
DATAPART = 2 DATAPART = 2
ORAPART = 2 ORAPART = 2
IMPPAGATO = 2 IMPPAGATO = 2
ACCSALDO = 2 ACCSALDO = 2
DOC1 = 2 DOC1 = 2
DOC2 = 2 DOC2 = 2
DOC3 = 2 DOC3 = 2
DATACONS = 2 DATACONS = 2
ASPBENI1 = 2 ASPBENI1 = 2
DESCRBENI1 = 2 DESCRBENI1 = 2
ASPBENI2 = 2 ASPBENI2 = 2
DESCRBENI2 = 2 DESCRBENI2 = 2
IMPNETTI = 2 IMPNETTI = 2
RAGGREFF = 2 RAGGREFF = 2
SPESEINC = 2 SPESEINC = 2
ADDBRB = 2 ADDBRB = 2
ADDBTR = 2 ADDBTR = 2
ADDBDE = 2 ADDBDE = 2
CODIVABRB = 2 CODIVABRB = 2
CODIVABTR = 2 CODIVABTR = 2
CODIVABTRE = 2 CODIVABTRE = 2
CODIVABDE = 2 CODIVABDE = 2
# fine modifiche # fine modifiche
CAUSMAG2 = 2 CAUSMAG2 = 2
TARA = 2 TARA = 2
PNETTO = 2 PNETTO = 2
UMTARA = 2 UMTARA = 2
RAGGR = 2 RAGGR = 2
CAUSMAG1 = 2 CAUSMAG1 = 2
NCOLLI = 2 NCOLLI = 2
RAGSOCSP = 2 RAGSOCSP = 2
CODIVAABRB = 3 CODIVAABRB = 3
UMPNETTO = 2 UMPNETTO = 2
DESUMPNETTO = 2 DESUMPNETTO = 2
DESUMTARA = 2 DESUMTARA = 2
DESCRMAG1 = 2 DESCRMAG1 = 2
DESCRMAG2 = 2 DESCRMAG2 = 2
OCCASEDIT = 2 OCCASEDIT = 2
[SHEET] [SHEET]
NCOLS=4 NCOLS=4
1=2 1=2
2=5 2=5
3=6||30 3=6||30
4=9 4=9
5=10 5=10
6=13 6=13
7=8 7=8
[RIGHE] [RIGHE]
NTIPIRIGA=3 NTIPIRIGA=3
1=01 1=01
2=02 2=02
3=03 3=03
[HANDLERS] [HANDLERS]
NHANDLER=0 NHANDLER=0
1 = 140|1 1 = 140|1
2 = 108|2 2 = 108|2
3 = 111|3 3 = 111|3
3 = 113|3 3 = 113|3
3 = 115|3 3 = 115|3
3 = 117|3 3 = 117|3
3 = 118|3 3 = 118|3
[PROFILOGRUPPO] [PROFILOGRUPPO]
= =
1000 = 0 1000 = 0
2000 = 0 2000 = 0
1400 = 0 1400 = 0
2400 = 0 2400 = 0
1800 = 0 1800 = 0
2800 = 2800 =
1100 = 0 1100 = 0
2100 = 0 2100 = 0
1500 = 0 1500 = 0
2500 = 0 2500 = 0
1900 = 0 1900 = 0
2900 = 2900 =
1200 = 0 1200 = 0
2200 = 0 2200 = 0
29 = 29 =
1600 = 0 1600 = 0
2600 = 0 2600 = 0
101 = 0 101 = 0
100 = 2 100 = 2
200 = 2 200 = 2
300 = 2 300 = 2
400 = 2 400 = 2
500 = 2 500 = 2
600 = 2 600 = 2
1300 = 0 1300 = 0
700 = 2 700 = 2
2300 = 0 2300 = 0
800 = 2 800 = 2
900 = 2 900 = 2
1700 = 0 1700 = 0
2700 = 2700 =

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
#define _VE0100_H #ifndef __VE0100_H
#define __VE0100_H
// Operazioni che può fare il motore su un documento // Operazioni che può fare il motore su un documento
#define OP_NUOVO 1 #define OP_NUOVO 1
@ -16,3 +17,252 @@
#define F_SHEET 500 #define F_SHEET 500
#define F_MEMORIGA 501 #define F_MEMORIGA 501
#define BASE_PIEDE 600 #define BASE_PIEDE 600
#define CHANGE_MESSAGE "Sono state effettuate modifiche alla configurazione.\nPrima di eseguire la gestione documenti occorrerà rigenerare le maschere.\nDesideri farlo ora ?"
// Modifiche pianificate per il dopo/cattolica:
// Rorganizzazione del codice come:
// Oggetto documento
// che contiene:
// Array di oggetti riga
// Oggetto Cliente
// Oggetto Cambio
// Oggetto Sconto testa
#define F_LBTIPORIGA 175
#define NPIEDI 40
#include <xvt_defs.h>
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __EXPR_H
#include <expr.h>
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __BRWAPP_H
#include <brwapp.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
#ifndef __DEFMASK_H
#include "defmask.h"
#endif
#ifndef __VEUML_H
#include "veuml.h"
#endif
#ifndef __VEUML1_H
#include "veuml1.h"
#endif
#ifndef __VEUML2_H
#include "veuml2.h"
#endif
#ifndef __SHEET_H
#include <sheet.h>
#endif
#ifndef __REAL_H
#include <real.h>
#endif
#ifndef __MSKSHEET_H
#include <msksheet.h>
#endif
#ifndef __VE0100C_H
#include "ve0100c.h"
#endif
#ifndef __VE0100D_H
#include "ve0100d.h"
#endif
#ifndef __TCLIFOR_H
#include "tclifor.h"
#endif
#ifndef __RIGHEDOC_H
#include "righedoc.h"
#endif
#ifndef __VE1000O_H
#include "ve1000o.h"
#endif
#ifndef __TMASKVEN_H
#include "tmaskven.h"
#endif
#ifndef __EXECP_H
#include "execp.h"
#endif
#ifndef __SCONTI_H
#include "sconti.h"
#endif
// Definizione della classe dell'applicazione motore
class TMotore_application : public TRelation_application
{
// Array di totalizzatori
TPiede_documento _piede;
// Record array per la gestione delle righe
TRecord_array* _righe_rec;
// Puntatore al profilo del documento caricato
TConfig* _pro;
// Puntatore al nome, per evitare di ricrearlo se è uguale
TFilename* _proname;
// Puntatore alla maschera di ricerca
TMask* _msk;
// Puntatore alla maschera di modifica/inserimento ( dipende dal profilo )
TMask_vendite* _msk1;
// puntatore alla relazione
TRelation* _rel;
// Puntatore allo sheet delle righe documento
TSheet_field* _sheet;
// Oggetto cliente per il motore
TCliForVendite* _clifor;
// Indica se il documento ha come soggetto un <C>liente o un <F>ornitore
char _tipocf;
// Ridefinizione dei metodi virtuali
virtual bool user_create( );
virtual bool user_destroy( );
virtual TMask* get_mask( int mode );
virtual bool changing_mask( int mode );
virtual TRelation* get_relation( ) const { return _rel;}
virtual void init_insert_mode( TMask& m );
virtual int read( TMask& m );
virtual bool remove( void );
virtual int write( const TMask& m );
virtual int rewrite( const TMask& m );
// Punti di ingresso per le funzioni utente
// Funzioni da associare ad ogni procedura
int user_function( int index );
// Funzioni per il calcolo delle righe
real user_row_calculate( TRectype& row, int index );
void user_set_handler( int fieldid, int index, TMask* m = NULL );
long prossimo_numero( bool provv );
int avanza_numero( bool provv );
void get_edit_mask( const char * profilo );
void azzera_piedi( );
void carica_piedi( );
void somma_piedi( );
void sottrai_piedi( );
// Esegue, se c'è, la procedura utente relativa ad una certa operazione
int esegui_procedura( int operazione );
protected:
// Procedure e funzioni per la gestione della maschera e dei files
void read_rdoc( TMask& m );
// formato dipendente dallo sheet ( sono le varie colonne )
void load_riga( TSheet_field& f, int numrig, TRectype& r );
void store_riga( TSheet_field& f, int numrig, TRectype& r );
void save( TRelation* r ) const;
void set_descr ( int numrig, const char* descr );
void carica_righe_libere( int from = -1 );
bool check_key( TLocalisamfile& rdoc, TString16 codnum, bool provv, TString16 _anno, TString16 _ndoc );
// Procedure e funzioni per la gestione degli stati
// void setta_stato_corrente( int nuovostato );
const char* nome_sezione( int op );
int stato_corrente( );
int stato_finale( int operazione );
bool stato_valido( int stato, int operazione );
void segnala_stato_non_valido( int operazione );
TString& stati_validi( int operazione ){ return ( pro( ).get( "STATIVALIDI", nome_sezione( operazione ) ) );}
// Handle che ritorna la maschera per le righe
static TMask * ss_getmask( int numriga, TMask& fullmask, bool destroy );
// Handler che gestisce la richiesta del tipo riga in inserimento
static bool ss_handler( TSheet_field& ss, int r, KEY key );
// Handler per la maschera di ricerca
static bool ndoc_handler( TMask_field& f, KEY key );
static bool num_handler( TMask_field& f, KEY key );
static bool tip_handler( TMask_field& f, KEY key );
// Handler per la maschera di modifica
static bool clifo_handler( TMask_field& f, KEY key );
static bool occas_handler( TMask_field& f, KEY key );
static bool val_handler( TMask_field& f, KEY key );
// Configurazione dello sheet dato il profilo
void configura_sheet( TSheet_field& sheet, TConfig& config );
// Funzione per la sostituzione delle variabili nella decodifica
// delle espressioni di una riga
void carica_variabile( TExpression& e, const char * varname, TRectype r );
public:
// Funzioni di accesso alle variabili private
TRecord_array& righe_rec( ) { CHECK( _righe_rec, "Record array delle righe nullo!" ); return * _righe_rec; }
TConfig& pro( ) { CHECK( _pro, "Profilo del documento nullo!" ); return *_pro; }
TFilename& proname( ) { CHECK( _proname, "Nome del profilo nullo!" ); return *_proname; }
TMask& query_mask( ) { CHECK( _msk, "Maschera di ricerca nulla!" ); return *_msk; }
TMask& edit_mask( ) { CHECK( _msk1, "Maschera di modifica nulla!" ); return *_msk1; }
TRelation& rel( ) { CHECK( _rel, "Relazione nulla!" ); return *_rel; }
TSheet_field& sheet( ) { CHECK( _sheet, "Sheet nullo!" ); return *_sheet; }
TCliForVendite& clifo( ) { CHECK( _clifor, "Oggetto cliente nullo!" ); return *_clifor; }
TPiede_documento& piede( ){ return _piede; }
// Operazione
const char tipocf( ){ return _tipocf; }
void tipocf( const char tcf ){ _tipocf = tcf; }
bool valida_operazione( int operazione );
TSheet_field& ss( ) const { return *_sheet; }
TMotore_application( ) { _pro = NULL; }
virtual ~TMotore_application( ) { if ( _pro ) delete _pro; }
virtual const char* get_next_key( );
};
TMotore_application& app( );
#endif

View File

@ -1,125 +1,128 @@
// Handler di marco sui campi delle maschere // Handler di MarcoclaD sui campi delle maschere
#ifndef __CHECKS_H
#include <checks.h> #ifndef __CHECKS_H
#endif #include <checks.h>
#endif
#ifndef __MASK_H
#include <mask.h> #ifndef __MASK_H
#endif #include <mask.h>
#endif
#ifndef __MASKFLD_H
#include <maskfld.h> #ifndef __MASKFLD_H
#endif #include <maskfld.h>
#endif
#ifndef __KEYS_H
#include <keys.h> #ifndef __KEYS_H
#endif #include <keys.h>
#endif
#ifndef __STRINGS_H
#include <strings.h> #ifndef __STRINGS_H
#endif #include <strings.h>
#endif
#ifndef __VEUML_H
#include "VeUML.h" #ifndef __VEUML_H
#endif #include "VeUML.h"
#endif
#ifndef __VEUML1_H
#include "VeUML1.h" #ifndef __VEUML1_H
#endif #include "VeUML1.h"
#endif
#ifndef __VE0100C_H
#include "ve0100c.h" #ifndef __VE0100C_H
#endif #include "ve0100c.h"
#endif
#ifndef __PAGAMENT_H
#include "..\cg\pagament.h" #ifndef __PAGAMENT_H
#endif #include "..\cg\pagament.h"
#endif
bool ora_hndl(TMask_field& field, KEY key)
{ #ifndef __SCONTI_H
if (key == K_TAB) #include "sconti.h"
{ #endif
if (field.to_check(key))
{ bool ora_hndl( TMask_field& field, KEY key )
TFixed_string ora(field.get(),6); {
ora.trim(); if (key == K_TAB)
if (ora.not_empty() || field.required()) {
{ if (field.to_check(key))
// bool changed = FALSE; {
if (isdigit(ora[0])) TFixed_string ora( field.get( ), 6 );
{ ora.trim( );
if (ora[2] != ':') if (ora.not_empty( ) || field.required( ) )
{ {
if (ora.len()>4) ora.overwrite(":",2); if ( isdigit( ora[ 0 ] ) )
else ora.insert(":", 2); {
// changed = TRUE; if ( ora[ 2 ] != ':')
} {
} if ( ora.len( ) > 4 )
bool ok; ora.overwrite( ":", 2 );
ok = ((isdigit(ora[0]))&&(isdigit(ora[1]))&&(isdigit(ora[3]))&&(isdigit(ora[4]))); else
ok &= ((atoi(&(ora[0]))<24)&&(atoi(&(ora[3]))<60)); ora.insert( ":", 2 );
if (!ok) }
{ }
error_box("Ora errata o formato non valido"); bool ok;
return FALSE; ok = ((isdigit(ora[0]))&&(isdigit(ora[1]))&&(isdigit(ora[3]))&&(isdigit(ora[4])));
} ok &= ((atoi(&(ora[0]))<24)&&(atoi(&(ora[3]))<60));
else /* if (changed) */ if ( !ok )
{ {
field.set((ora)); error_box("Ora errata o formato non valido");
// field.picture_data((ora),TRUE); return FALSE;
// field.picture_data((ora.strip(":")),FALSE); }
} else
} {
} field.set((ora));
} }
return TRUE; }
} }
}
bool codcli_hndl(TMask_field& field, KEY key) return TRUE;
{ }
if (key == K_TAB)
{ bool dummy_hndl( TMask_field& field, KEY key )
if (field.to_check(key)) {
{ warning_box( "Al campo %d è arrivato un KEY %d", field.dlg( ), key );
field.send_key(K_TAB,F_CODVAL); return TRUE;
field.send_key(K_TAB,F_CODLIN); }
field.send_key(K_TAB,F_CODPAG);
field.send_key(K_TAB,F_CODABIA); // Handler per il calcolo delle date di pagamento
field.send_key(K_TAB,F_CODCABA); bool condpag_hndl( TMask_field& field, KEY key )
field.send_key(K_TAB,F_INDSP); {
} if ( key == K_TAB )
} {
return TRUE; TMask& m = field.mask( );
} TString16 condpag( m.get( F_CODPAG ) );
TString16 data( m.get( F_DATAINSC ) );
bool dummy_hndl(TMask_field& field, KEY key) if ( condpag.blank( ) || data.blank( ) )
{ return TRUE;
warning_box("Al campo %d è arrivato un KEY %d",field.dlg(),key); TPagamento pag( condpag, data );
return TRUE; pag.set_total( 100, 10, 10 );
} pag.set_rate_auto( );
int numrate = pag.n_rate( );
bool condpag_hndl(TMask_field& field, KEY key) for( int i = 0; i < numrate; i ++ )
{ m.set( F_DATASCAD1 + i, pag.data_rata( i ).string( ) );
for( ; i < 5; i ++ )
if (key == K_TAB) m.hide( F_DATASCAD1 + i );
{ }
if (field.to_check(key)) return TRUE;
{ }
TMask& m = field.mask( );
TString16 condpag( m.get( F_CODPAG ) ); // handler per la validazione di una stringa/sconto
TString16 data( m.get( F_DATAINSC ) ); bool sconto_hndl( TMask_field& field, KEY key )
if ( condpag.blank( ) || data.blank( ) ) {
return TRUE; if ( field.to_check( key, TRUE ) )
TPagamento pag( condpag, data ); {
pag.set_total( 100, 10, 10 ); if (key == K_TAB)
pag.set_rate_auto( ); {
int numrate = pag.n_rate( ); TSconto s;
for( int i = 0; i < numrate; i ++ ) s.set( field.get( ), TRUE );
m.set( F_DATASCAD1 + i, pag.data_rata( i ).string( ) ); if( s.is_valid( ) )
for( ; i < 5; i ++ ) {
m.hide( F_DATASCAD1 + i ); field.set( s.get( ) );
} return TRUE;
} }
return TRUE; else
} return FALSE;
}
}
return TRUE;
}

View File

@ -1,8 +1,8 @@
#define __VE0100C_H #define __VE0100C_H
// Handlers per i campi delle bolle // Handlers per i campi delle bolle
extern bool ora_hndl(TMask_field& field, KEY key); extern bool ora_hndl(TMask_field& field, KEY key);
extern bool codcli_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 dummy_hndl(TMask_field& field, KEY key);
extern bool condpag_hndl(TMask_field& field, KEY key); extern bool condpag_hndl(TMask_field& field, KEY key);

View File

@ -1,120 +1,120 @@
#include <xvt.h> #include <xvt.h>
#ifndef __CHECKS_H #ifndef __CHECKS_H
#include <checks.h> #include <checks.h>
#endif #endif
#ifndef __CONFAPP_H #ifndef __CONFAPP_H
#include <confapp.h> #include <confapp.h>
#endif #endif
#ifndef __EXECP_H #ifndef __EXECP_H
#include <execp.h> #include <execp.h>
#endif #endif
#ifndef __TABUTIL_H #ifndef __TABUTIL_H
#include <tabutil.h> #include <tabutil.h>
#endif #endif
#define SINTASSI "Sintassi: VE0 -2 [a|b|c|d|e]" #define SINTASSI "Sintassi: VE0 -2 -[1|2|3|4|5]"
class TConf_vendite : public TConfig_application class TConf_vendite : public TConfig_application
{ {
private: private:
bool _changed; bool _changed;
public: public:
virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config_changed (const char* par, const char* var, virtual bool postprocess_config_changed (const char* par, const char* var,
const char* oldv, const char* newv); const char* oldv, const char* newv);
virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config);
virtual bool user_create( ); virtual bool user_create( );
virtual bool user_destroy( ); virtual bool user_destroy( );
TConf_vendite() : TConfig_application( CONFIG_DITTA ){ } TConf_vendite() : TConfig_application( CONFIG_DITTA ){ }
virtual ~TConf_vendite( ){ } virtual ~TConf_vendite( ){ }
}; };
bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config) bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config)
{ {
disable_menu_item(M_FILE_NEW); disable_menu_item(M_FILE_NEW);
disable_menu_item(M_FILE_REVERT); disable_menu_item(M_FILE_REVERT);
return TRUE; return TRUE;
} }
bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config)
{ {
enable_menu_item(M_FILE_NEW); enable_menu_item(M_FILE_NEW);
enable_menu_item(M_FILE_REVERT); enable_menu_item(M_FILE_REVERT);
return TRUE; return TRUE;
} }
bool TConf_vendite::postprocess_config_changed (const char* par, const char* var, bool TConf_vendite::postprocess_config_changed (const char* par, const char* var,
const char* oldv, const char* newv) const char* oldv, const char* newv)
{ {
// Notifica al motore che la configurazione è cambiata: occorre rigenerare le maschere // Notifica al motore che la configurazione è cambiata: occorre rigenerare le maschere
_changed = TRUE; _changed = TRUE;
return TRUE; return TRUE;
} }
bool TConf_vendite::user_create( ) bool TConf_vendite::user_create( )
{ {
TString16 arg( argv(2) ); TString16 arg( argv(2) );
_changed = FALSE; _changed = FALSE;
// Il fottuto meno serve per evitare fottutamente che la fottuta confapp // Il fottuto meno serve per evitare fottutamente che la fottuta confapp
// si fotta il fottuto parametro // si fotta il fottuto parametro
if( arg[ 0 ] != '-' ) if( arg[ 0 ] != '-' )
fatal_box( SINTASSI ); fatal_box( SINTASSI );
char msk = arg[1]; char msk = arg[1];
// Devo usare un puntatore così deletandolo si registra // Devo usare un puntatore così deletandolo si registra
TConfig confditta( CONFIG_DITTA ); TConfig confditta( CONFIG_DITTA );
// Prima usavo le lettere ma la fottuta confapp si fotte il fottuto -c per i suoi fottuti // Prima usavo le lettere ma la fottuta confapp si fotte il fottuto -c per i suoi fottuti
// motivi, così uso i fottuti numeri // motivi, così uso i fottuti numeri
switch( msk ) switch( msk )
{ {
case '1': case '1':
confditta.set( "EdMask", "ve0200a", "ve" ); confditta.set( "EdMask", "ve0200a", "ve" );
break; break;
case '2': case '2':
confditta.set( "EdMask", "ve0200b", "ve" ); confditta.set( "EdMask", "ve0200b", "ve" );
break; break;
case '3': case '3':
confditta.set( "EdMask", "ve0200c", "ve" ); confditta.set( "EdMask", "ve0200c", "ve" );
break; break;
case '4': case '4':
confditta.set( "EdMask", "ve0200d", "ve" ); confditta.set( "EdMask", "ve0200d", "ve" );
break; break;
case '5': case '5':
confditta.set( "EdMask", "ve0200e", "ve" ); confditta.set( "EdMask", "ve0200e", "ve" );
break; break;
default: default:
fatal_box( SINTASSI ); fatal_box( SINTASSI );
return FALSE; return FALSE;
break; break;
} }
return TRUE; return TRUE;
} }
bool TConf_vendite::user_destroy( ) bool TConf_vendite::user_destroy( )
{ {
if( _changed ) if( _changed )
{ {
TConfig confditta( CONFIG_DITTA ); TConfig confditta( CONFIG_DITTA );
confditta.set( "EdMask", "", "ve" ); confditta.set( "EdMask", "", "ve" );
confditta.set( "CHANGED", "X", "ve" ); confditta.set( "CHANGED", "X", "ve" );
} }
return TRUE; return TRUE;
} }
int ve0200(int argc, char** argv) int ve0200(int argc, char** argv)
{ {
TConf_vendite appc; TConf_vendite appc;
if( argc < 3 ) if( argc < 3 )
fatal_box( SINTASSI ); fatal_box( SINTASSI );
appc.run(argc, argv, "Parametri gestione vendite"); appc.run(argc, argv, "Parametri gestione vendite");
return 0; return 0;
} }

View File

@ -1,12 +1,12 @@
#define F_TIPOPERC 101 #define F_TIPOPERC 101
#define F_GESARCHPROV 102 #define F_GESARCHPROV 102
#define F_ARCHPROV1 103 #define F_ARCHPROV1 103
#define F_ARCHPROV2 104 #define F_ARCHPROV2 104
#define F_ARCHPROV3 105 #define F_ARCHPROV3 105
#define F_ARCHPROV4 106 #define F_ARCHPROV4 106
#define F_TIPOLIQPROV 107 #define F_TIPOLIQPROV 107
#define F_GESVAL 108 #define F_GESVAL 108
#define F_GESLIN 109 #define F_GESLIN 109
#define F_GESSOSPIMP 110 #define F_GESSOSPIMP 110
#define F_GESOCCAS 111 #define F_GESOCCAS 111
#define F_GESOCCHK 112 #define F_GESOCCHK 112

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,4 @@
#define F_D_TIPO 111 #define F_D_TIPO 111
#define F_D_CODCAT 112 #define F_D_CODCAT 112
#define F_D_SCONTO 113 #define F_D_SCONTO 113
#define F_D_DESCR 114 #define F_D_DESCR 114


View File

@ -1,9 +1,8 @@
#define F_R_RICERCA 121 #define F_R_RICERCA 121
#define F_R_TIPO 122 #define F_R_TIPO 122
#define F_R_CODCAT 123 #define F_R_CODCAT 123
#define F_R_CODART 124 #define F_R_CODART 124
#define F_R_UM 125 #define F_R_UM 125
#define F_R_DESART 126 #define F_R_DESART 126
#define F_R_SCONTO 127 #define F_R_SCONTO 127
#define F_R_DESCAT 128 #define F_R_DESCAT 128


View File

@ -100,8 +100,8 @@ bool TCondizioni_vendita::user_create() {
DESTROY(F_L_DESSUCC); DESTROY(F_L_DESSUCC);
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF _codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config. if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
KILL(F_R_C_TIPOCF); KILL(F_C_TIPOCF);
KILL(F_R_C_CODCF); KILL(F_C_CODCF);
} }
set_search_field(F_C_COD); // impostazione del campo di ricerca set_search_field(F_C_COD); // impostazione del campo di ricerca
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura _gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura

Binary file not shown.

View File

@ -1,65 +1,64 @@
#ifndef __VEUML1_H #ifndef __VEUML1_H
#define __VEUML1_H #define __VEUML1_H
#ifndef __VEUML_H #ifndef __VEUML_H
#include "VEUML.H" #include "VEUML.H"
#endif #endif
// gruppo dei vettori // gruppo dei vettori
#define GR_VETTORI 15 #define GR_VETTORI 15
// campi della maschera totale // campi della maschera totale
#define F_RAGSOC 301 #define F_RAGSOC 301
#define F_INDCF 302 #define F_INDCF 302
#define F_CIVCF 303 #define F_CIVCF 303
#define F_NOME_VAL 304 #define F_RAGSOCSP 304
#define F_DESCODPAG 305 #define F_DESCODPAG 305
// I prossimi 5 campi devono essere consecutivi come numerazione // I prossimi 5 campi devono essere consecutivi come numerazione
// perchè faccio un ciclo per settarli // perchè faccio un ciclo per settarli
#define F_DATASCAD1 306 #define F_DATASCAD1 306
#define F_DATASCAD2 307 #define F_DATASCAD2 307
#define F_DATASCAD3 308 #define F_DATASCAD3 308
#define F_DATASCAD4 309 #define F_DATASCAD4 309
#define F_DATASCAD5 310 #define F_DATASCAD5 310
#define F_BANCA_APP 311 #define F_BANCA_APP 311
#define F_BANCA_PRE 312 #define F_BANCA_PRE 312
#define F_INDSP 313 #define F_INDSP 313
#define F_CIVSP 314 #define F_CIVSP 314
#define F_CAPSP 315 #define F_CAPSP 315
#define F_LOCALITASP 316 #define F_LOCALITASP 316
#define F_PORTO 317 #define F_PORTO 317
#define F_DENCAUSTRASP 318 #define F_DENCAUSTRASP 318
#define F_NOMEVETT1 319 #define F_NOMEVETT1 319
#define F_NOMEVETT2 320 #define F_NOMEVETT2 320
#define F_NOMEVETT3 321 #define F_NOMEVETT3 321
#define F_DESCRBENI1 322 #define F_DESCRBENI1 322
#define F_DESCRBENI2 323 #define F_DESCRBENI2 323
#define F_DESUMTARA 324 #define F_DESUMTARA 324
#define F_DESUMPNETTO 325 #define F_DESUMPNETTO 325
#define F_DESCRMAG1 326 #define F_DESCRMAG1 326
#define F_DESCRMAG2 327 #define F_DESCRMAG2 327
#define F_COFI 328 #define F_COFI 328
#define F_STATOPAIVA 329 #define F_STATOPAIVA 329
#define F_LOCALITACF 330 #define F_LOCALITACF 330
#define F_CAPCF 331 #define F_CAPCF 331
#define F_COMCF 332 #define F_COMCF 332
#define F_PROVCOM 333 #define F_PROVCOM 333
#define F_STATOCF 334 #define F_STATOCF 334
#define F_DATACAMBIO 335 #define F_DATACAMBIO 335
#define F_DESBANAPP 336 #define F_DESBANAPP 336
#define F_DESLIN 337 #define F_DESLIN 337
#define F_DESBANPRE 338 #define F_DESBANPRE 338
#define F_NOMEVAL 339 #define F_NOMEVAL 339
#define F_PAIVA 340 #define F_PAIVA 340
#define F_DENCOM 341 #define F_DENCOM 341
#define F_DESSTATOCF 342 #define F_DESSTATOCF 342
#define F_COMSP 343 #define F_COMSP 343
#define F_DENCOMSP 344 #define F_DENCOMSP 344
#define F_PROVCOMSP 345 #define F_PROVCOMSP 345
#define F_STATOSP 346 #define F_STATOSP 346
#define F_DESSTATOSP 347 #define F_DESSTATOSP 347
#define F_DESLIST 348 #define F_DESLIST 348
#define F_RAGSOCSP 349 #endif // __VEUML1_H
#endif // __VEUML1_H

View File

@ -1,28 +1,34 @@
#ifndef __SHEET_FIELDS #ifndef __SHEET_FIELDS
#define __SHEET_FIELDS #define __SHEET_FIELDS
#define FS_STATORIGA 101 #define FS_CODNUM 101
#define FS_TIPORIGA 102 #define FS_ANNO 102
#define FS_PROFRIGA 103 #define FS_PROVV 103
#define FS_CODMAG 104 #define FS_NDOC 104
#define FS_CODART 105 #define FS_STATORIGA 105
#define FS_DESCR 106 #define FS_TIPORIGA 106
#define FS_DESCLUNGA 107 #define FS_PROFRIGA 107
#define FS_PREZZO 108 #define FS_CODMAG 108
#define FS_UMQTA 109 #define FS_CODDEP 109
#define FS_QTA 110 #define FS_CODART 110
#define FS_QTAEVASA 111 #define FS_DESCR 111
#define FS_RIGAEVASA 112 #define FS_DESCLUNGA 112
#define FS_TARA 113 #define FS_PREZZO 113
#define FS_PNETTO 114 #define FS_UMQTA 114
#define FS_NCOLLI 115 #define FS_QTA 115
#define FS_DAEVADERE 116 #define FS_QTAEVASA 116
#define FS_SCONTO 117 #define FS_RIGAEVASA 117
#define FS_PERCPROV 118 #define FS_TARA 118
#define FS_IMPFISSO 119 #define FS_PNETTO 119
#define FS_IMPFISUN 120 #define FS_NCOLLI 120
#define FS_CODIVA 121 #define FS_DAEVADERE 121
#define FS_ADDIVA 122 #define FS_SCONTO 122
#define FS_ASPBENI 123 #define FS_PERCPROV 123
#define FS_IMPFISSO 124
#define FS_IMPFISUN 125
#define FS_CODIVA 126
#define FS_ADDIVA 127
#define FS_ASPBENI 128
#define FS_G1 129
#endif // __SHEET_FIELDS #endif // __SHEET_FIELDS