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

View File

@ -2,6 +2,10 @@
#include "tclifor.h" #include "tclifor.h"
#endif #endif
#ifndef __CONFIG_H
#include "config.h"
#endif
#ifndef __VEUML1_H #ifndef __VEUML1_H
#include "veuml1.h" #include "veuml1.h"
#endif #endif
@ -158,6 +162,7 @@ void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
m.field( F_CODLIN ).check( ); m.field( F_CODLIN ).check( );
imposta_dati_comune( m ); imposta_dati_comune( m );
imposta_indirizzo_spedizione( m ); imposta_indirizzo_spedizione( m );
imposta_sconto_testa( m );
} }
void TCliFor::edita_occasionale( ) void TCliFor::edita_occasionale( )
@ -262,4 +267,69 @@ void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
comuni.read( ); comuni.read( );
m.set( F_DENCOMSP, comuni.get( "DENCOM" ) ); m.set( F_DENCOMSP, comuni.get( "DENCOM" ) );
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) ); 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 update_mask( TMask_vendite& m, bool onload = FALSE );
void imposta_dati_comune( TMask_vendite& m ); void imposta_dati_comune( TMask_vendite& m );
void imposta_indirizzo_spedizione( TMask_vendite& m ); void imposta_indirizzo_spedizione( TMask_vendite& m );
void imposta_sconto_testa( TMask_vendite& m );
}; };

View File

@ -1,270 +1,303 @@
/* toolbar */ /* toolbar */
#include "ve0200b.h" #include "ve0200b.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_QUIT 10 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
ENDPAGE ENDPAGE
PAGE "Tabelle di installazione" 1 1 60 14 PAGE "Tabelle di installazione" 1 1 60 14
GROUPBOX DLG_NULL 78 15 GROUPBOX DLG_NULL 78 15
BEGIN BEGIN
PROMPT 0 0 "Gestione listini/contratti/campagne 1/2" PROMPT 0 0 "Gestione listini/contratti/campagne 1/2"
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 2 "Cumula articolo/listino/listino" PROMPT 2 2 "Cumula articolo/listino/listino"
FIELD CUMULAALC FIELD CUMULAALC
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 3 "Gestione archivio listini" PROMPT 2 3 "Gestione archivio listini"
MESSAGE FALSE DISABLE,1@ MESSAGE FALSE DISABLE,1@
MESSAGE TRUE ENABLE,1@ MESSAGE TRUE ENABLE,1@
FIELD GESLIS FIELD GESLIS
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 4 "Gestione codice categoria vendite+codice listino" PROMPT 2 4 "Gestione codice categoria vendite+codice listino"
FIELD GESLISCV FIELD GESLISCV
GROUP 1 GROUP 1
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 5 "Gestione listini per unita di misura" PROMPT 2 5 "Gestione listini per unita di misura"
FIELD GESLISUM FIELD GESLISUM
GROUP 1 GROUP 1
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 6 "Gestione listino a scaglioni" PROMPT 2 6 "Gestione listino a scaglioni"
FIELD GESLISSCA FIELD GESLISSCA
GROUP 1 GROUP 1
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 7 "Gestione sconti/omaggio articoli" PROMPT 2 7 "Gestione sconti/omaggio articoli"
FIELD GESLISSO FIELD GESLISSO
GROUP 1 GROUP 1
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 9 "Gestione archivio contratti" PROMPT 2 9 "Gestione archivio contratti"
MESSAGE FALSE DISABLE,2@ MESSAGE FALSE DISABLE,2@
MESSAGE TRUE ENABLE,2@ MESSAGE TRUE ENABLE,2@
FIELD GESCON FIELD GESCON
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 10 "Gestione codice contratto" PROMPT 2 10 "Gestione codice contratto"
FIELD GESCONCC FIELD GESCONCC
GROUP 2 GROUP 2
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 11 "Gestione contratti per unita di misura" PROMPT 2 11 "Gestione contratti per unita di misura"
FIELD GESCONUM FIELD GESCONUM
GROUP 2 GROUP 2
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 12 "Gestione contratto a scaglioni" PROMPT 2 12 "Gestione contratto a scaglioni"
FIELD GESCONSCA FIELD GESCONSCA
GROUP 2 GROUP 2
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 13 "Gestione sconti/omaggio articoli" PROMPT 2 13 "Gestione sconti/omaggio articoli"
FIELD GESCONSO FIELD GESCONSO
GROUP 2 GROUP 2
END END
ENDPAGE ENDPAGE
PAGE "Tabelle di installazione" 1 1 60 14 PAGE "Tabelle di installazione" 1 1 60 14
GROUPBOX DLG_NULL 78 15 GROUPBOX DLG_NULL 78 15
BEGIN BEGIN
PROMPT 0 0 "Gestione listini/contratti/campagne 2/2" PROMPT 0 0 "Gestione listini/contratti/campagne 2/2"
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 2 "Gestione archivio campagne" PROMPT 2 2 "Gestione archivio campagne"
MESSAGE TRUE ENABLE,3@ MESSAGE TRUE ENABLE,3@
MESSAGE FALSE DISABLE,3@ MESSAGE FALSE DISABLE,3@
FIELD GESCAM FIELD GESCAM
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 3 "Gestione campagne per unita di misura" PROMPT 2 3 "Gestione campagne per unita di misura"
FIELD GESCAMUM FIELD GESCAMUM
GROUP 3 GROUP 3
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 4 "Gestione campagne a scaglioni" PROMPT 2 4 "Gestione campagne a scaglioni"
FIELD GESCAMSCA FIELD GESCAMSCA
GROUP 3 GROUP 3
END END
BOOLEAN DLG_NULL BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 5 "Gestione sconti/omaggio articoli" PROMPT 2 5 "Gestione sconti/omaggio articoli"
FIELD GESCAMSO FIELD GESCAMSO
GROUP 3 GROUP 3
END END
LIST DLG_NULL 40 LIST DLG_NULL 40
BEGIN BEGIN
PROMPT 2 7 "Sequenza di ricerca righe" PROMPT 2 7 "Sequenza di ricerca righe"
ITEM "A|Codice articolo" ITEM "A|Codice articolo"
ITEM "L|Codice linea" ITEM "L|Codice linea"
ITEM "C|Codice linea/categoria" ITEM "C|Codice linea/categoria"
ITEM "R|Codice raggruppamento fiscale" ITEM "R|Codice raggruppamento fiscale"
ITEM " | " ITEM " | "
FIELD SEQRICRIGHE[ 1 ] FIELD SEQRICRIGHE[ 1 ]
END END
LIST DLG_NULL 40 LIST DLG_NULL 40
BEGIN BEGIN
PROMPT 2 8 " " PROMPT 2 8 " "
ITEM "A|Codice articolo" ITEM "A|Codice articolo"
ITEM "L|Codice linea" ITEM "L|Codice linea"
ITEM "C|Codice linea/categoria" ITEM "C|Codice linea/categoria"
ITEM "R|Codice raggruppamento fiscale" ITEM "R|Codice raggruppamento fiscale"
ITEM " | " ITEM " | "
FIELD SEQRICRIGHE[ 2 ] FIELD SEQRICRIGHE[ 2 ]
END END
LIST DLG_NULL 40 LIST DLG_NULL 40
BEGIN BEGIN
PROMPT 2 9 " " PROMPT 2 9 " "
ITEM "A|Codice articolo" ITEM "A|Codice articolo"
ITEM "L|Codice linea" ITEM "L|Codice linea"
ITEM "C|Codice linea/categoria" ITEM "C|Codice linea/categoria"
ITEM "R|Codice raggruppamento fiscale" ITEM "R|Codice raggruppamento fiscale"
ITEM " | " ITEM " | "
FIELD SEQRICRIGHE[ 3 ] FIELD SEQRICRIGHE[ 3 ]
END END
LIST DLG_NULL 40 LIST DLG_NULL 40
BEGIN BEGIN
PROMPT 2 10 " " PROMPT 2 10 " "
ITEM "A|Codice articolo" ITEM "A|Codice articolo"
ITEM "L|Codice linea" ITEM "L|Codice linea"
ITEM "C|Codice linea/categoria" ITEM "C|Codice linea/categoria"
ITEM "R|Codice raggruppamento fiscale" ITEM "R|Codice raggruppamento fiscale"
ITEM " | " ITEM " | "
FIELD SEQRICRIGHE[ 4 ] FIELD SEQRICRIGHE[ 4 ]
END END
ENDPAGE ENDPAGE
PAGE "Tabella gestione sconti " 1 1 60 14 PAGE "Tabella gestione sconti " 1 1 60 14
GROUPBOX DLG_NULL 78 10 GROUPBOX DLG_NULL 78 10
BEGIN BEGIN
PROMPT 0 0 "Gestione Sconti" PROMPT 0 0 "Gestione Sconti"
END END
LIST DLG_NULL 36 LIST DLG_NULL 36
BEGIN BEGIN
PROMPT 2 1 "Tipo gestione sconti documenti " PROMPT 2 1 "Tipo gestione sconti documenti "
ITEM "N|Non gestire" ITEM "N|Non gestire"
ITEM "P|Percentuale su anagrafica " ITEM "P|Percentuale su anagrafica "
ITEM "T|Gestione tabella sconti " ITEM "T|Gestione tabella sconti "
ITEM "A|Gestione archivio sconti " ITEM "A|Gestione archivio sconti "
FIELD GESSCO FIELD GESSCO
END END
LIST DLG_NULL 36 BOOLEAN DLG_NULL
BEGIN BEGIN
PROMPT 2 2 "Chiave archivio sconti " PROMPT 2 2 "Tabella categoria vendite in chiave"
ITEM "V|Tab. categorie vendite " FLAG "D"
ITEM "C|Tab. sconti clienti " MESSAGE TRUE SHOW, 4@
ITEM "Z|Tab. zone " MESSAGE FALSE HIDE, 4@
ITEM "M|Tab. modalità di pagamento " MESSAGE FALSE COPY, 4@
FIELD SCOKEY MESSAGE FALSE HIDE, 5@
END MESSAGE FALSE COPY, 5@
MESSAGE FALSE HIDE, 6@
LIST DLG_NULL 36 MESSAGE FALSE COPY, 6@
BEGIN FIELD SCOKEY[1]
PROMPT 2 3 "Tipo calcolo sconti documento " END
ITEM "R|Sconti sulle righe merci "
ITEM "G|Sconti sul valore globale merci " BOOLEAN DLG_NULL
FIELD SCOTIPCAL BEGIN
END PROMPT 2 3 "Tabella sconti clienti"
MESSAGE TRUE SHOW, 5@
BOOLEAN DLG_NULL MESSAGE FALSE HIDE, 5@
BEGIN MESSAGE FALSE COPY, 5@
PROMPT 2 4 "Gestione sconti ad importo " MESSAGE FALSE HIDE, 6@
FIELD GESSCOIMP MESSAGE FALSE COPY, 6@
END GROUP 4
FIELD SCOKEY[2]
LIST DLG_NULL 36 END
BEGIN
PROMPT 2 5 "Tipo gestione sconti riga " BOOLEAN DLG_NULL
ITEM "N|Non gestire" BEGIN
ITEM "L|Perc. su anagrafica/listini/contratti " PROMPT 2 4 "Tabella zone in chiave"
ITEM "A|Gest. arch. sconti " MESSAGE TRUE SHOW, 6@
ITEM "V|Gest. arch. con cat. vendita cliente " MESSAGE FALSE HIDE, 6@
ITEM "C|Perc. indicata su anagrafica cliente " MESSAGE FALSE COPY, 6@
FIELD GESSCORIGA GROUP 5
END FIELD SCOKEY[3]
END
LIST DLG_NULL 36
BEGIN BOOLEAN DLG_NULL
PROMPT 2 6 "Chiave archivio sconti di riga " BEGIN
ITEM "A|Codice articolo " PROMPT 2 5 "Tabella modalita' di pagamento in chiave"
ITEM "L|Codice linea " GROUP 6
ITEM "C|Codice linea/categoria " FIELD SCOKEY[4]
ITEM "R|Codice raggruppamento fiscale " END
FIELD
SCORIGAKEY LIST DLG_NULL 36
END BEGIN
PROMPT 2 6 "Tipo calcolo sconti documento "
BOOLEAN DLG_NULL ITEM "R|Sconti sulle righe merci "
BEGIN ITEM "G|Sconti sul valore globale merci "
PROMPT 2 7 "Gestione archivio sconti a scaglioni " FIELD SCOTIPCAL
GESSCOSCA END
END
BOOLEAN DLG_NULL
BOOLEAN DLG_NULL BEGIN
BEGIN PROMPT 2 7 "Gestione sconti ad importo "
PROMPT 2 8 "Gestione archivio sconti unità di misura " FIELD GESSCOIMP
GESSCOUM END
END
LIST DLG_NULL 36
ENDPAGE BEGIN
PROMPT 2 8 "Tipo gestione sconti riga "
ENDMASK 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[2]= F_I_ZONE;
_sci_k_id[3]= F_I_CONDPAG; _sci_k_id[3]= F_I_CONDPAG;
for (int i=0; i<4; i++) { 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 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"); if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");