Ggestione sconti testa in TCliFor.CPP.

Modificati i files di GGianluca according to PRASSID.INI-----------


git-svn-id: svn://10.65.10.50/trunk@1839 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
matteo 1995-09-15 16:34:56 +00:00
parent 4276fd7c15
commit ee0c139555
6 changed files with 996 additions and 891 deletions

View File

@ -1,110 +1,111 @@
#ifndef __SCONTI_H
#include "sconti.h"
#endif
const real TSconto::cento( "100" );
void TSconto::set( const TString& exp, bool signal )
{
TString work( exp );
TString goodexp;
TString num;
// Elimina gli spazi molesti
work.strip_spaces( );
// Per ora nessun errore
_errorpos = -1;
int i = 0;
_part = 1.0;
const int wlen = work.len( );
// Flag che indica se sono nella parte decimale di un numero
bool dec = FALSE;
// Flag che indica se si attende l'inizio di un numero
bool startnum = TRUE;
// Flag che indica se siamo all'inizio di un numero
while ( i < wlen && _errorpos < 0 )
{
char c = work[ i++ ];
switch( c )
{
case '+':
case '-':
// Se ero in in numero ...
if( !startnum )
{
// Aggiunge il numero alla sequenza
real newval( num );
_part = _part * ( cento + newval ) / cento;
if( newval >= 0 )
goodexp << '+';
goodexp << num;
}
// Inizia il nuovo numero
num = ( c == '-' )?"-":"";
startnum = TRUE;
dec = FALSE;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
num << c;
startnum = FALSE;
break;
case '.':
case ',':
// Se siamo già nella parte decimale ...
if( dec )
{
// Segnala un errore
_errorpos = i;
break;
}
// Se occorrenva un numero ci metto lo 0
if( startnum )
num << '0';
// Interpreto la virgola come punto
num << '.';
dec = TRUE;
startnum = TRUE;
break;
default:
_errorpos = i;
break;
}
}
// Controlla la validità
_valid = ( _errorpos < 0 );
// Se richiesto segnala l'errore
if( !_valid && signal )
warning_box( "Espressione di sconto non valida. Errore sul carattere %d.", _errorpos + 1 );
if( _valid )
{
// 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 );
}
#ifndef __SCONTI_H
#include "sconti.h"
#endif
const real TSconto::cento( "100" );
void TSconto::set( const TString& exp, bool signal )
{
TString work( exp );
TString goodexp;
TString num;
// Elimina gli spazi molesti
work.strip_spaces( );
// Per ora nessun errore
_errorpos = -1;
int i = 0;
_part = 1.0;
const int wlen = work.len( );
// Flag che indica se sono nella parte decimale di un numero
bool dec = FALSE;
// Flag che indica se si attende l'inizio di un numero
bool startnum = TRUE;
// Flag che indica se siamo all'inizio di un numero
while ( i < wlen && _errorpos < 0 )
{
char c = work[ i++ ];
switch( c )
{
case '+':
case '-':
// Se ero in in numero ...
if( !startnum )
{
// Aggiunge il numero alla sequenza
real newval( num );
_part = _part * ( cento + newval ) / cento;
if( newval >= 0 )
goodexp << '+';
goodexp << num;
}
// Inizia il nuovo numero
num = ( c == '-' )?"-":"";
startnum = TRUE;
dec = FALSE;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
num << c;
startnum = FALSE;
break;
case '.':
case ',':
// Se siamo già nella parte decimale ...
if( dec )
{
// Segnala un errore
_errorpos = i;
break;
}
// Se occorrenva un numero ci metto lo 0
if( startnum )
num << '0';
// Interpreto la virgola come punto
num << '.';
dec = TRUE;
startnum = TRUE;
break;
default:
_errorpos = i;
break;
}
}
// Controlla la validità
_valid = ( _errorpos < 0 );
// Se richiesto segnala l'errore
if( !_valid && signal )
warning_box( "Espressione di sconto non valida. Errore sul carattere %d.", _errorpos + 1 );
if( _valid )
{
// 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 );
}

View File

@ -2,6 +2,10 @@
#include "tclifor.h"
#endif
#ifndef __CONFIG_H
#include "config.h"
#endif
#ifndef __VEUML1_H
#include "veuml1.h"
#endif
@ -158,6 +162,7 @@ void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
m.field( F_CODLIN ).check( );
imposta_dati_comune( m );
imposta_indirizzo_spedizione( m );
imposta_sconto_testa( m );
}
void TCliFor::edita_occasionale( )
@ -262,4 +267,69 @@ void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
comuni.read( );
m.set( F_DENCOMSP, comuni.get( "DENCOM" ) );
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
}
}
void TCliForVendite::imposta_sconto_testa( TMask_vendite& m )
{
TConfig ditta( CONFIG_DITTA );
TString16 codsconto;
TString16 codart;
char tipogestione = ditta.get( "GESSCO", "ve" )[ 0 ];
switch( tipogestione )
{
case 'N': // Sconti non gestiti: pussa via!
return;
break;
case 'P': // Percentuale su anagrafica cliente
m.set( F_SCONTOPERC, get( LF_CFVEN, "SCONTO" ) );
return;
break;
case 'T': // Gestione tabella sconti
codsconto = get( LF_CFVEN, "CODSCC" );
if( !codsconto.blank( ) )
{
TLocalisamfile sconti( LF_SCONTI );
sconti.setkey( 1 );
sconti.zero( );
sconti.put( "TIPO", "D" );
sconti.put( "CODCAT", codsconto );
if( sconti.read( ) == NOERR )
m.set( F_SCONTOPERC, sconti.get( "SCONTO" ) );
else
message_box( "Sconto non trovato nella tabella sconti!" );
}
return;
break;
case 'A': // Gestione archivio sconti
TLocalisamfile sconti( LF_SCONTI );
sconti.setkey( 1 );
sconti.zero( );
sconti.put( "TIPO", "I" );
if( ditta.get_bool( "SCOKEY", "ve", 1 ) )
{
sconti.put( "CODCAT", get( LF_CFVEN, "CATVEN" ) );
if( ditta.get_bool( "SCOKEY", "ve", 2 ) )
{
codart= get( LF_CFVEN, "CODSCC" );
if( ditta.get_bool( "SCOKEY", "ve", 3 ) )
{
codart << get( LF_CFVEN, "CODZONA" );
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" ) );
}
else
{
message_box( "Sconto non trovato nell'archivio sconti!" );
}
return;
break;
}
}

View File

@ -66,6 +66,7 @@ class TCliForVendite : public TCliFor
void update_mask( TMask_vendite& m, bool onload = FALSE );
void imposta_dati_comune( TMask_vendite& m );
void imposta_indirizzo_spedizione( TMask_vendite& m );
void imposta_sconto_testa( TMask_vendite& m );
};

View File

@ -1,270 +1,303 @@
/* 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
/* 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
BOOLEAN DLG_NULL
BEGIN
PROMPT 2 2 "Tabella categoria vendite in chiave"
FLAG "D"
MESSAGE TRUE SHOW, 4@
MESSAGE FALSE HIDE, 4@
MESSAGE FALSE COPY, 4@
MESSAGE FALSE HIDE, 5@
MESSAGE FALSE COPY, 5@
MESSAGE FALSE HIDE, 6@
MESSAGE FALSE COPY, 6@
FIELD SCOKEY[1]
END
BOOLEAN DLG_NULL
BEGIN
PROMPT 2 3 "Tabella sconti clienti"
MESSAGE TRUE SHOW, 5@
MESSAGE FALSE HIDE, 5@
MESSAGE FALSE COPY, 5@
MESSAGE FALSE HIDE, 6@
MESSAGE FALSE COPY, 6@
GROUP 4
FIELD SCOKEY[2]
END
BOOLEAN DLG_NULL
BEGIN
PROMPT 2 4 "Tabella zone in chiave"
MESSAGE TRUE SHOW, 6@
MESSAGE FALSE HIDE, 6@
MESSAGE FALSE COPY, 6@
GROUP 5
FIELD SCOKEY[3]
END
BOOLEAN DLG_NULL
BEGIN
PROMPT 2 5 "Tabella modalita' di pagamento in chiave"
GROUP 6
FIELD SCOKEY[4]
END
LIST DLG_NULL 36
BEGIN
PROMPT 2 6 "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 7 "Gestione sconti ad importo "
FIELD GESSCOIMP
END
LIST DLG_NULL 36
BEGIN
PROMPT 2 8 "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 9 "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 10 "Gestione archivio sconti a scaglioni "
GESSCOSCA
END
BOOLEAN DLG_NULL
BEGIN
PROMPT 2 11 "Gestione archivio sconti unità di misura "
GESSCOUM
END
ENDPAGE
ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,7 @@ bool TTabelle_sconti::user_create() {
_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
if (prassid.get("SCOKEY", "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");