Corretti bug su Sconti, Condizioni vendita e Anagr. magaz. Aggiunta stampa
sconti. git-svn-id: svn://10.65.10.50/trunk@2092 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f8f3f0b241
commit
80ecf677c5
244
ve/batbgmc.uml
244
ve/batbgmc.uml
@ -1,122 +1,122 @@
|
||||
#include "batbgmc.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gruppi merceologici " 11 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
STRING F_CODGRU 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice gruppo "
|
||||
FLAG "U"
|
||||
FIELD CODTAB[1,3]
|
||||
KEY 1
|
||||
USE GMC SELECT CODTAB[4,5]==""
|
||||
INPUT CODTAB F_CODGRU
|
||||
DISPLAY "Gruppo" CODTAB[1,3]
|
||||
DISPLAY "Descrizione gruppo@50" S0
|
||||
OUTPUT F_CODGRU CODTAB[1,3]
|
||||
OUTPUT H_DESGRU S0
|
||||
MESSAGE COPY,H_CODGRU
|
||||
|
||||
END
|
||||
|
||||
STRING F_CODSGR 2
|
||||
BEGIN
|
||||
PROMPT 30 2 "Codice sottogruppo "
|
||||
FIELD CODTAB[4,5]
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
USE GMC
|
||||
INPUT CODTAB[1,3] F_CODGRU
|
||||
INPUT CODTAB[4,5] F_CODSGR
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
DISPLAY "Descrizione sottogruppo@50" S0
|
||||
OUTPUT F_CODGRU CODTAB[1,3]
|
||||
OUTPUT F_CODSGR CODTAB[4,5]
|
||||
OUTPUT F_DESSGR S0
|
||||
MESSAGE SHOW,F_DESGRU|HIDE,H_DESGRU|SHOW,F_DESSGR
|
||||
MESSAGE EMPTY HIDE,F_DESGRU|SHOW,H_DESGRU|HIDE,F_DESSGR
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_CODGRU F_CODSGR
|
||||
GROUP GR_SEARCH
|
||||
END
|
||||
|
||||
STRING H_CODGRU 3
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
COPY USE F_CODGRU
|
||||
INPUT CODTAB F_CODGRU
|
||||
COPY DISPLAY F_CODGRU
|
||||
OUTPUT F_DESGRU S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESGRU 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione gruppo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESSGR 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Descrizione sottogruppo "
|
||||
FIELD S0
|
||||
USE GMC KEY 2
|
||||
KEY 2
|
||||
INPUT S0 F_DESSGR
|
||||
DISPLAY "Descrizione sottogruppo@50" S0
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
COPY OUTPUT F_CODSGR
|
||||
MESSAGE K_TAB,F_CODSGR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
STRING H_DESGRU 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione gruppo "
|
||||
FIELD S0
|
||||
KEY 2
|
||||
USE GMC KEY 2
|
||||
INPUT S0 H_DESGRU
|
||||
DISPLAY "Descrizione gruppo@50" S0
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
COPY OUTPUT F_CODSGR
|
||||
OUTPUT H_DESGRU S0
|
||||
MESSAGE K_TAB,F_CODSGR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione del gruppo"
|
||||
END
|
||||
|
||||
STRING F_CODAGGDOC 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Codice aggiornamento documenti "
|
||||
FIELD LIC->S4
|
||||
END
|
||||
|
||||
STRING F_CODAGGOMA 2
|
||||
BEGIN
|
||||
PROMPT 2 9 "Codice aggiornamento omaggi "
|
||||
FIELD LIC->S5
|
||||
END
|
||||
|
||||
STRING F_CODAGGSCO 2
|
||||
BEGIN
|
||||
PROMPT 2 10 "Codice aggiornamento sconti "
|
||||
FIELD LIC->S6
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
#include "batbgmc.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella gruppi merceologici " 11 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
STRING F_CODGRU 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice gruppo "
|
||||
FLAG "U"
|
||||
FIELD CODTAB[1,3]
|
||||
KEY 1
|
||||
USE GMC SELECT CODTAB[4,5]==""
|
||||
INPUT CODTAB F_CODGRU
|
||||
DISPLAY "Gruppo" CODTAB[1,3]
|
||||
DISPLAY "Descrizione gruppo@50" S0
|
||||
OUTPUT F_CODGRU CODTAB[1,3]
|
||||
OUTPUT H_DESGRU S0
|
||||
MESSAGE COPY,H_CODGRU
|
||||
|
||||
END
|
||||
|
||||
STRING F_CODSGR 2
|
||||
BEGIN
|
||||
PROMPT 30 2 "Codice sottogruppo "
|
||||
FIELD CODTAB[4,5]
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
USE GMC
|
||||
INPUT CODTAB[1,3] F_CODGRU
|
||||
INPUT CODTAB[4,5] F_CODSGR
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
DISPLAY "Descrizione sottogruppo@50" S0
|
||||
OUTPUT F_CODGRU CODTAB[1,3]
|
||||
OUTPUT F_CODSGR CODTAB[4,5]
|
||||
OUTPUT F_DESSGR S0
|
||||
MESSAGE SHOW,F_DESGRU|HIDE,H_DESGRU|SHOW,F_DESSGR
|
||||
MESSAGE EMPTY HIDE,F_DESGRU|SHOW,H_DESGRU|HIDE,F_DESSGR
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_CODGRU F_CODSGR
|
||||
GROUP GR_SEARCH
|
||||
END
|
||||
|
||||
STRING H_CODGRU 3
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
COPY USE F_CODGRU
|
||||
INPUT CODTAB F_CODGRU
|
||||
COPY DISPLAY F_CODGRU
|
||||
OUTPUT F_DESGRU S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESGRU 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione gruppo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESSGR 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Descrizione sottogruppo "
|
||||
FIELD S0
|
||||
USE GMC KEY 2
|
||||
KEY 2
|
||||
INPUT S0 F_DESSGR
|
||||
DISPLAY "Descrizione sottogruppo@50" S0
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
COPY OUTPUT F_CODSGR
|
||||
MESSAGE K_TAB,F_CODSGR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
STRING H_DESGRU 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione gruppo "
|
||||
FIELD S0
|
||||
KEY 2
|
||||
USE GMC KEY 2
|
||||
INPUT S0 H_DESGRU
|
||||
DISPLAY "Descrizione gruppo@50" S0
|
||||
DISPLAY "Codice gruppo" CODTAB[1,3]
|
||||
DISPLAY "Codice sottogruppo" CODTAB[4,5]
|
||||
COPY OUTPUT F_CODSGR
|
||||
OUTPUT H_DESGRU S0
|
||||
MESSAGE K_TAB,F_CODSGR
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione del gruppo"
|
||||
END
|
||||
|
||||
STRING F_CODAGGDOC 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Codice aggiornamento documenti "
|
||||
FIELD LIC->S4
|
||||
END
|
||||
|
||||
STRING F_CODAGGOMA 2
|
||||
BEGIN
|
||||
PROMPT 2 9 "Codice aggiornamento omaggi "
|
||||
FIELD LIC->S5
|
||||
END
|
||||
|
||||
STRING F_CODAGGSCO 2
|
||||
BEGIN
|
||||
PROMPT 2 10 "Codice aggiornamento sconti "
|
||||
FIELD LIC->S6
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
206
ve/batbrfa.uml
206
ve/batbrfa.uml
@ -1,103 +1,103 @@
|
||||
#include "batbrfa.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Raggruppamento fiscali articoli" -1 -1 78 9
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_CODTAB 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
FIELD CODTAB
|
||||
USE RFA
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODTAB FLD_TABRFA_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FLD_TABRFA_CODTAB CODTAB
|
||||
OUTPUT FLD_TABRFA_S0 S0
|
||||
KEY 1
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S0 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione "
|
||||
FIELD S0
|
||||
USE RFA KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
INPUT S0 FLD_TABRFA_S0
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT FLD_TABRFA_CODTAB
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S7 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Unita' di misura "
|
||||
FIELD S7
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S8 1
|
||||
BEGIN
|
||||
PROMPT 2 10 "Classe fiscale "
|
||||
FIELD S8
|
||||
USE ASF
|
||||
INPUT CODTAB FLD_TABRFA_S8
|
||||
DISPLAY "Cl. Fisc." CODTAB
|
||||
DISPLAY "Descrizione@30" S0
|
||||
OUTPUT FLD_TABRFA_S8 CODTAB
|
||||
OUTPUT FLD_DESCFA S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_DESCFA 30
|
||||
BEGIN
|
||||
PROMPT 25 10 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R0 6 2
|
||||
BEGIN
|
||||
PROMPT 2 12 "Perc. ricarico medio "
|
||||
FIELD R0
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R1 12 2
|
||||
BEGIN
|
||||
PROMPT 2 14 "Costo minimo "
|
||||
FIELD R1
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R2 12 2
|
||||
BEGIN
|
||||
PROMPT 45 14 "massimo "
|
||||
FIELD R2
|
||||
END
|
||||
|
||||
LIST FLD_TABRFA_I0 1 30
|
||||
BEGIN
|
||||
PROMPT 2 16 "Tipo costo "
|
||||
FIELD I0
|
||||
HELP "Inserire il tipo di costo"
|
||||
ITEM "1|Costo medio annuale"
|
||||
ITEM "2|Costo ultimi 3 mesi"
|
||||
ITEM "3|Costo ultimo"
|
||||
ITEM "4|Costo standard"
|
||||
ITEM "5|Maggiore ultimi due costi"
|
||||
ITEM "6|Costo massimo d'acquisto"
|
||||
ITEM "7|Costo minimo d'acquisto"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
#include "batbrfa.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Raggruppamento fiscali articoli" -1 -1 78 9
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_CODTAB 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
FIELD CODTAB
|
||||
USE RFA
|
||||
CHECKTYPE REQUIRED
|
||||
INPUT CODTAB FLD_TABRFA_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FLD_TABRFA_CODTAB CODTAB
|
||||
OUTPUT FLD_TABRFA_S0 S0
|
||||
KEY 1
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S0 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione "
|
||||
FIELD S0
|
||||
USE RFA KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
INPUT S0 FLD_TABRFA_S0
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT FLD_TABRFA_CODTAB
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S7 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Unita' di misura "
|
||||
FIELD S7
|
||||
END
|
||||
|
||||
STRING FLD_TABRFA_S8 1
|
||||
BEGIN
|
||||
PROMPT 2 10 "Classe fiscale "
|
||||
FIELD S8
|
||||
USE ASF
|
||||
INPUT CODTAB FLD_TABRFA_S8
|
||||
DISPLAY "Cl. Fisc." CODTAB
|
||||
DISPLAY "Descrizione@30" S0
|
||||
OUTPUT FLD_TABRFA_S8 CODTAB
|
||||
OUTPUT FLD_DESCFA S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_DESCFA 30
|
||||
BEGIN
|
||||
PROMPT 25 10 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R0 6 2
|
||||
BEGIN
|
||||
PROMPT 2 12 "Perc. ricarico medio "
|
||||
FIELD R0
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R1 12 2
|
||||
BEGIN
|
||||
PROMPT 2 14 "Costo minimo "
|
||||
FIELD R1
|
||||
END
|
||||
|
||||
NUMBER FLD_TABRFA_R2 12 2
|
||||
BEGIN
|
||||
PROMPT 45 14 "massimo "
|
||||
FIELD R2
|
||||
END
|
||||
|
||||
LIST FLD_TABRFA_I0 1 30
|
||||
BEGIN
|
||||
PROMPT 2 16 "Tipo costo "
|
||||
FIELD I0
|
||||
HELP "Inserire il tipo di costo"
|
||||
ITEM "1|Costo medio annuale"
|
||||
ITEM "2|Costo ultimi 3 mesi"
|
||||
ITEM "3|Costo ultimo"
|
||||
ITEM "4|Costo standard"
|
||||
ITEM "5|Maggiore ultimi due costi"
|
||||
ITEM "6|Costo massimo d'acquisto"
|
||||
ITEM "7|Costo minimo d'acquisto"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
622
ve/ve0200a.uml
622
ve/ve0200a.uml
@ -1,311 +1,311 @@
|
||||
/* toolbar */
|
||||
#include "VECONF.H"
|
||||
#define F_GESSCORIGACV
|
||||
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 GES[A_LISTINI]
|
||||
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 GESUM[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione listino a scaglioni"
|
||||
FIELD GESSCA[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gestione archivio contratti"
|
||||
MESSAGE FALSE DISABLE,2@
|
||||
MESSAGE TRUE ENABLE,2@
|
||||
FIELD GES[A_CONTRATTI]
|
||||
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 GES[A_CONTRATTI]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione contratto a scaglioni"
|
||||
FIELD GESSCA[A_CONTRATTI]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_CONTRATTI]
|
||||
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 GES[A_CAMPAGNE]
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione campagne per unita di misura"
|
||||
FIELD GESUM[A_CAMPAGNE]
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione campagne a scaglioni"
|
||||
FIELD GESSCA[A_CAMPAGNE]
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 5 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_CAMPAGNE]
|
||||
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"
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
ITEM "L|Perc. su anagrafica/listini/contratti "
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
ITEM "A|Gest. arch. sconti "
|
||||
MESSAGE SHOW,F_GESSCORIGACV
|
||||
ITEM "C|Perc. indicata su anagrafica cliente "
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
FIELD GESSCORIGA
|
||||
END
|
||||
BOOLEAN F_GESSCORIGACV
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gest. arch. sconti con cat. vendita cliente "
|
||||
FIELD GESSCORIGACV
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 10 "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 11 "Gestione archivio sconti a scaglioni "
|
||||
GESSCOSCA
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione archivio sconti unità di misura "
|
||||
GESSCOUM
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
/* toolbar */
|
||||
#include "VECONF.H"
|
||||
#define F_GESSCORIGACV
|
||||
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 GES[A_LISTINI]
|
||||
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 GESUM[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 6 "Gestione listino a scaglioni"
|
||||
FIELD GESSCA[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_LISTINI]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gestione archivio contratti"
|
||||
MESSAGE FALSE DISABLE,2@
|
||||
MESSAGE TRUE ENABLE,2@
|
||||
FIELD GES[A_CONTRATTI]
|
||||
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 GES[A_CONTRATTI]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione contratto a scaglioni"
|
||||
FIELD GESSCA[A_CONTRATTI]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 13 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_CONTRATTI]
|
||||
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 GES[A_CAMPAGNE]
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione campagne per unita di misura"
|
||||
FIELD GESUM[A_CAMPAGNE]
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione campagne a scaglioni"
|
||||
FIELD GESSCA[A_CAMPAGNE]
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 5 "Gestione sconti/omaggio articoli"
|
||||
FIELD GESSO[A_CAMPAGNE]
|
||||
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"
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
ITEM "L|Perc. su anagrafica/listini/contratti "
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
ITEM "A|Gest. arch. sconti "
|
||||
MESSAGE SHOW,F_GESSCORIGACV
|
||||
ITEM "C|Perc. indicata su anagrafica cliente "
|
||||
MESSAGE HIDE,F_GESSCORIGACV
|
||||
FIELD GESSCORIGA
|
||||
END
|
||||
BOOLEAN F_GESSCORIGACV
|
||||
BEGIN
|
||||
PROMPT 2 9 "Gest. arch. sconti con cat. vendita cliente "
|
||||
FIELD GESSCORIGACV
|
||||
END
|
||||
|
||||
LIST DLG_NULL 36
|
||||
BEGIN
|
||||
PROMPT 2 10 "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 11 "Gestione archivio sconti a scaglioni "
|
||||
GESSCOSCA
|
||||
END
|
||||
|
||||
BOOLEAN DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 12 "Gestione archivio sconti unità di misura "
|
||||
GESSCOUM
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
1018
ve/ve0200b.uml
1018
ve/ve0200b.uml
File diff suppressed because it is too large
Load Diff
195
ve/ve2100.cpp
195
ve/ve2100.cpp
@ -1,96 +1,99 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
||||
|
||||
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
bool _catven; // abilitazione della gestione della categoria di vendita
|
||||
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; }
|
||||
virtual bool changing_mask(int) { return FALSE; }
|
||||
virtual TRelation *get_relation() const { return _rel; }
|
||||
|
||||
public:
|
||||
TTabelle_sconti() {}
|
||||
virtual ~TTabelle_sconti() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
int i; // indice di ciclo
|
||||
|
||||
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
|
||||
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
|
||||
else {
|
||||
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
|
||||
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA); // apre il file di configurazione di ditta
|
||||
switch (_sconti) {
|
||||
case 'D': // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
_msk= new TMask("VE2100R"); // apre la maschera relativa
|
||||
set_search_field(F_R_RICERCA); // setta il campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
if (_gessco=="A") {
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||
sci_k_id[1]= F_I_SCCLIENTI;
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
for (i=0; i<4; i++) {
|
||||
if (prassid.get_bool("SCOKEY", NULL, i)) { // se nel file di config. il campo è abilitato...
|
||||
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
||||
gotcha= TRUE; // ...e viene settato il flag di ok
|
||||
} else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
}
|
||||
_catven= prassid.get_bool("CODLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) KILL(sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TTabelle_sconti::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve2100(int argc, char* argv[]) {
|
||||
TTabelle_sconti a;
|
||||
|
||||
a.run(argc, argv, "Tabella sconti ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
||||
|
||||
|
||||
|
||||
class TTabelle_sconti: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
char _sconti; // carattere che indica il tipo di tabella
|
||||
bool _catven; // abilitazione della gestione della categoria di vendita
|
||||
TString _gessco; // indicatore di abilitazione degli sconti incondizionati
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; }
|
||||
virtual bool changing_mask(int) { return FALSE; }
|
||||
virtual TRelation *get_relation() const { return _rel; }
|
||||
|
||||
public:
|
||||
TTabelle_sconti() {}
|
||||
virtual ~TTabelle_sconti() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TTabelle_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
|
||||
int i; // indice di ciclo
|
||||
|
||||
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
|
||||
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
|
||||
else {
|
||||
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
|
||||
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
|
||||
switch (_sconti) {
|
||||
case 'D': // sconti documento
|
||||
_msk= new TMask("VE2100D"); // apre la maschera relativa
|
||||
set_search_field(F_D_CODCAT); // setta il campo di ricerca
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
_msk= new TMask("VE2100R"); // apre la maschera relativa
|
||||
set_search_field(F_R_RICERCA); // setta il campo di ricerca
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) KILL(F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
if (_gessco=="A") {
|
||||
_msk= new TMask("VE2100I"); // apre la maschera relativa
|
||||
set_search_field(F_I_RICERCA); // setta il campo di ricerca
|
||||
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
|
||||
sci_k_id[1]= F_I_SCCLIENTI;
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
for (i=0; i<4; i++) {
|
||||
if (prassid.get_bool("SCOKEY", NULL, i+1)) { // se nel file di config. il campo è abilitato...
|
||||
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
||||
gotcha= TRUE; // ...e viene settato il flag di ok
|
||||
} else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
}
|
||||
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
|
||||
if (!_catven) KILL(sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TTabelle_sconti::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve2100(int argc, char* argv[]) {
|
||||
TTabelle_sconti a;
|
||||
|
||||
a.run(argc, argv, "Tabella sconti ");
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,27 +1,26 @@
|
||||
#include "ve2100.h"
|
||||
|
||||
PAGE "Archivio sconti " -1 -1 40 10
|
||||
|
||||
RADIOBUTTON F_TIPOSC 36
|
||||
BEGIN
|
||||
PROMPT 1 2 "Tipo di archivio "
|
||||
ITEM "R|Sconti di riga"
|
||||
ITEM "D|Sconti documento"
|
||||
ITEM "I|Sconti indondizionati"
|
||||
END
|
||||
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include "ve2100.h"
|
||||
|
||||
PAGE "Archivio sconti " -1 -1 40 10
|
||||
|
||||
RADIOBUTTON F_TIPOSC 36
|
||||
BEGIN
|
||||
PROMPT 1 2 "Tipo di archivio "
|
||||
ITEM "R|Sconti di riga"
|
||||
ITEM "D|Sconti documento"
|
||||
ITEM "I|Sconti indondizionati"
|
||||
END
|
||||
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
113
ve/ve2100d.uml
113
ve/ve2100d.uml
@ -1,57 +1,56 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve2100d.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti documenti " 11 60 14
|
||||
|
||||
LISTA F_D_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "D|Sconti documento"
|
||||
END
|
||||
|
||||
STRING F_D_CODCAT 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cod. sconto doc. "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "UR"
|
||||
KEY 1
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_D_TIPO SELECT
|
||||
INPUT CODCAT F_D_CODCAT
|
||||
DISPLAY "Codice" CODCAT
|
||||
DISPLAY "Descrizione" DESCR
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_D_CODCAT CODCAT
|
||||
OUTPUT F_D_SCONTO SCONTO
|
||||
OUTPUT F_D_DESCR DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_D_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione "
|
||||
FIELD LF_SCONTI->DESCR
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_D_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 8 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include <lffiles.h>
|
||||
#include "ve2100d.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti documenti " 11 60 14
|
||||
|
||||
LISTA F_D_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "D|Sconti documento"
|
||||
END
|
||||
|
||||
STRING F_D_CODCAT 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cod. sconto doc. "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "UR"
|
||||
KEY 1
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_D_TIPO SELECT
|
||||
INPUT CODCAT F_D_CODCAT
|
||||
DISPLAY "Codice" CODCAT
|
||||
DISPLAY "Descrizione" DESCR
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_D_CODCAT CODCAT
|
||||
OUTPUT F_D_SCONTO SCONTO
|
||||
OUTPUT F_D_DESCR DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_D_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Descrizione "
|
||||
FIELD LF_SCONTI->DESCR
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 75 7
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_D_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 8 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
278
ve/ve2100i.uml
278
ve/ve2100i.uml
@ -1,139 +1,139 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve2100i.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti incondizionati " 11 60 14
|
||||
|
||||
LISTA F_I_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "I|Sconti incondizionati"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN
|
||||
INPUT CODART[1,2] F_I_SCCLIENTI
|
||||
INPUT CODART[3,4] F_I_ZONE
|
||||
INPUT CODART[5,8] F_I_CONDPAG
|
||||
DISPLAY "CV" CODCAT
|
||||
DISPLAY "SC" CODART[1,2]
|
||||
DISPLAY "ZN" CODART[3,4]
|
||||
DISPLAY "C.P." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_CATVEN CODCAT
|
||||
OUTPUT F_I_SCCLIENTI CODART[1,2]
|
||||
OUTPUT F_I_ZONE CODART[3,4]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
OUTPUT F_I_SCONTO SCONTO
|
||||
END
|
||||
|
||||
STRING F_I_CATVEN 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendite "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
INPUT CODTAB F_I_CATVEN
|
||||
DISPLAY "Cat. vend." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CATVEN CODTAB
|
||||
OUTPUT F_I_DESVEN S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESVEN 50
|
||||
BEGIN
|
||||
PROMPT 24 2 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_SCCLIENTI 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sconto cliente "
|
||||
FIELD LF_SCONTI->CODART[1,2]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO "D"
|
||||
INPUT CODCAT F_I_SCCLIENTI
|
||||
DISPLAY "Sc. Cliente" CODCAT
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_I_SCCLIENTI CODCAT
|
||||
OUTPUT F_I_DESSCCLI DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESSCCLI 50
|
||||
BEGIN
|
||||
PROMPT 24 4 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_ZONE 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Zona "
|
||||
FIELD LF_SCONTI->CODART[3,4]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %ZON
|
||||
INPUT CODTAB F_I_ZONE
|
||||
DISPLAY "Zona" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_ZONE CODTAB
|
||||
OUTPUT F_I_DESZONE S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESZONE 50
|
||||
BEGIN
|
||||
PROMPT 24 6 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_CONDPAG 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cond. pagam. "
|
||||
FIELD LF_SCONTI->CODART[5,8]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CPG
|
||||
INPUT CODTAB F_I_CONDPAG
|
||||
DISPLAY "Cond. pag." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CONDPAG CODTAB
|
||||
OUTPUT F_I_DESCONPAG S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESCONPAG 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_I_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
#include <lffiles.h>
|
||||
#include "ve2100i.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti incondizionati " 11 60 14
|
||||
|
||||
LISTA F_I_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "I|Sconti incondizionati"
|
||||
END
|
||||
|
||||
STRING F_I_RICERCA 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_I_TIPO SELECT
|
||||
INPUT CODCAT F_I_CATVEN
|
||||
INPUT CODART[1,2] F_I_SCCLIENTI
|
||||
INPUT CODART[3,4] F_I_ZONE
|
||||
INPUT CODART[5,8] F_I_CONDPAG
|
||||
DISPLAY "CV" CODCAT
|
||||
DISPLAY "SC" CODART[1,2]
|
||||
DISPLAY "ZN" CODART[3,4]
|
||||
DISPLAY "C.P." CODART[5,8]
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_I_CATVEN CODCAT
|
||||
OUTPUT F_I_SCCLIENTI CODART[1,2]
|
||||
OUTPUT F_I_ZONE CODART[3,4]
|
||||
OUTPUT F_I_CONDPAG CODART[5,8]
|
||||
OUTPUT F_I_SCONTO SCONTO
|
||||
END
|
||||
|
||||
STRING F_I_CATVEN 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendite "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
INPUT CODTAB F_I_CATVEN
|
||||
DISPLAY "Cat. vend." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CATVEN CODTAB
|
||||
OUTPUT F_I_DESVEN S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESVEN 50
|
||||
BEGIN
|
||||
PROMPT 24 2 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_SCCLIENTI 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sconto cliente "
|
||||
FIELD LF_SCONTI->CODART[1,2]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO "D" SELECT
|
||||
INPUT CODCAT F_I_SCCLIENTI
|
||||
DISPLAY "Sc. Cliente" CODCAT
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_I_SCCLIENTI CODCAT
|
||||
OUTPUT F_I_DESSCCLI DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESSCCLI 50
|
||||
BEGIN
|
||||
PROMPT 24 4 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_ZONE 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Zona "
|
||||
FIELD LF_SCONTI->CODART[3,4]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %ZON
|
||||
INPUT CODTAB F_I_ZONE
|
||||
DISPLAY "Zona" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_ZONE CODTAB
|
||||
OUTPUT F_I_DESZONE S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESZONE 50
|
||||
BEGIN
|
||||
PROMPT 24 6 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_I_CONDPAG 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cond. pagam. "
|
||||
FIELD LF_SCONTI->CODART[5,8]
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CPG
|
||||
INPUT CODTAB F_I_CONDPAG
|
||||
DISPLAY "Cond. pag." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CONDPAG CODTAB
|
||||
OUTPUT F_I_DESCONPAG S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_I_DESCONPAG 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_I_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
221
ve/ve2100r.uml
221
ve/ve2100r.uml
@ -1,111 +1,110 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve2100r.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti di riga " 11 60 14
|
||||
|
||||
STRING F_R_RICERCA 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
USE LF_SCONTI
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT TIPO F_R_TIPO SELECT
|
||||
INPUT CODCAT F_R_CODCAT
|
||||
INPUT CODART F_R_CODART
|
||||
INPUT UM F_R_UM
|
||||
DISPLAY "C.V." CODCAT
|
||||
DISPLAY "Codice art.@20" CODART
|
||||
DISPLAY "U.M." UM
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_R_CODCAT CODCAT
|
||||
OUTPUT F_R_CODART CODART
|
||||
OUTPUT F_R_UM UM
|
||||
OUTPUT F_R_SCONTO SCONTO
|
||||
END
|
||||
|
||||
LISTA F_R_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "R|Sconti di riga"
|
||||
END
|
||||
|
||||
STRING F_R_CODCAT 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendita "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
INPUT CODTAB F_R_CODCAT
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_R_CODCAT CODTAB
|
||||
OUTPUT F_R_DESCAT S0
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESCAT 50
|
||||
BEGIN
|
||||
PROMPT 22 2 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_R_CODART 20
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. articolo "
|
||||
FIELD LF_SCONTI->CODART
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_ANAGR
|
||||
INPUT CODART F_R_CODART
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_R_CODART CODART
|
||||
OUTPUT F_R_DESART DESCR
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_UM 2
|
||||
BEGIN
|
||||
PROMPT 50 4 "U.M. "
|
||||
FIELD LF_SCONTI->UM
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_UMART KEY 2
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT CODART F_R_CODART SELECT
|
||||
INPUT UM F_R_UM
|
||||
DISPLAY "U.M." UM
|
||||
DISPLAY "Desccrizione@50" %UMS->S0
|
||||
OUTPUT F_R_UM UM
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESART 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Descrizione "
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 75 10
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_R_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include <lffiles.h>
|
||||
#include "ve2100r.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti di riga " 11 60 14
|
||||
|
||||
STRING F_R_RICERCA 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
USE LF_SCONTI
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT TIPO F_R_TIPO SELECT
|
||||
INPUT CODCAT F_R_CODCAT
|
||||
INPUT CODART F_R_CODART
|
||||
INPUT UM F_R_UM
|
||||
DISPLAY "C.V." CODCAT
|
||||
DISPLAY "Codice art.@20" CODART
|
||||
DISPLAY "U.M." UM
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_R_CODCAT CODCAT
|
||||
OUTPUT F_R_CODART CODART
|
||||
OUTPUT F_R_UM UM
|
||||
OUTPUT F_R_SCONTO SCONTO
|
||||
END
|
||||
|
||||
LISTA F_R_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "R|Sconti di riga"
|
||||
END
|
||||
|
||||
STRING F_R_CODCAT 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cat. vendita "
|
||||
FIELD LF_SCONTI->CODCAT
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE %CVE
|
||||
INPUT CODTAB F_R_CODCAT
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_R_CODCAT CODTAB
|
||||
OUTPUT F_R_DESCAT S0
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESCAT 50
|
||||
BEGIN
|
||||
PROMPT 22 2 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_R_CODART 20
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. articolo "
|
||||
FIELD LF_SCONTI->CODART
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_ANAGR
|
||||
INPUT CODART F_R_CODART
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_R_CODART CODART
|
||||
OUTPUT F_R_DESART DESCR
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_UM 2
|
||||
BEGIN
|
||||
PROMPT 50 4 "U.M. "
|
||||
FIELD LF_SCONTI->UM
|
||||
FLAG "U"
|
||||
KEY 1
|
||||
USE LF_UMART KEY 2
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT CODART F_R_CODART SELECT
|
||||
INPUT UM F_R_UM
|
||||
DISPLAY "U.M." UM
|
||||
DISPLAY "Desccrizione@50" %UMS->S0
|
||||
OUTPUT F_R_UM UM
|
||||
VALIDATE AUTOEXIT_FUNC 2 F_R_CODCAT F_R_CODART
|
||||
END
|
||||
|
||||
STRING F_R_DESART 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Descrizione "
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 75 10
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
STRING F_R_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 2 12 "Sconto "
|
||||
FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -78,7 +78,7 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_C_OBBLIG);
|
||||
DESTROY(F_C_DESCF);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_msk->set_handler(F_L_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
@ -96,13 +96,14 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_O_COD);
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_DESVEN);
|
||||
DESTROY(F_L_CODSUCC);
|
||||
DESTROY(F_L_DESSUCC);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
KILL(F_R_C_TIPOCF);
|
||||
KILL(F_R_C_CODCF);
|
||||
}
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
@ -121,8 +122,8 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_C_DESCF);
|
||||
DESTROY(F_L_DESVEN);
|
||||
DESTROY(F_C_OBBLIG);
|
||||
DESTROY(F_LC_CODSUCC);
|
||||
DESTROY(F_LC_DESSUCC);
|
||||
DESTROY(F_L_CODSUCC);
|
||||
DESTROY(F_L_DESSUCC);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
|
79
ve/ve2200x.h
79
ve/ve2200x.h
@ -1,40 +1,39 @@
|
||||
|
||||
// campi comuni a tutti gli archivi
|
||||
#define F_TIPO 111
|
||||
#define F_COD 112
|
||||
#define F_DESCR 113
|
||||
#define F_CODVAL 114
|
||||
#define F_CAMBIO 115
|
||||
#define F_DATACAM 116
|
||||
#define F_VALIN 117
|
||||
#define F_VALFIN 118
|
||||
#define F_IMPLORDI 119
|
||||
#define F_GESTUM 120
|
||||
#define F_GESTSCAGL 121
|
||||
#define F_GESTSCO 122
|
||||
#define F_SCONST 123
|
||||
#define F_SEQRIC_1 124
|
||||
#define F_SEQRIC_2 125
|
||||
#define F_SEQRIC_3 126
|
||||
#define F_SEQRIC_4 127
|
||||
|
||||
// campi riservati ai listini
|
||||
#define F_L_CATVEN 131
|
||||
#define F_L_COD 132
|
||||
#define F_LC_CODSUCC 133
|
||||
#define F_L_DESVEN 134
|
||||
#define F_LC_DESSUCC 135
|
||||
|
||||
// campi riservati ai contratti
|
||||
#define F_C_TIPOCF 141
|
||||
#define F_C_CODCF 142
|
||||
#define F_C_COD 143
|
||||
#define F_C_OBBLIG 144
|
||||
#define F_C_DESCF 145
|
||||
|
||||
// campi riservati alle offerte
|
||||
#define F_O_COD 151
|
||||
|
||||
// pulsante di lancio dell'edit delle righe
|
||||
#define BTN_RIGHE 161
|
||||
|
||||
|
||||
// campi comuni a tutti gli archivi
|
||||
#define F_TIPO 111
|
||||
#define F_COD 112
|
||||
#define F_DESCR 113
|
||||
#define F_CODVAL 114
|
||||
#define F_CAMBIO 115
|
||||
#define F_DATACAM 116
|
||||
#define F_VALIN 117
|
||||
#define F_VALFIN 118
|
||||
#define F_IMPLORDI 119
|
||||
#define F_GESTUM 120
|
||||
#define F_GESTSCAGL 121
|
||||
#define F_GESTSCO 122
|
||||
#define F_SCONST 123
|
||||
#define F_SEQRIC_1 124
|
||||
#define F_SEQRIC_2 125
|
||||
#define F_SEQRIC_3 126
|
||||
#define F_SEQRIC_4 127
|
||||
|
||||
// campi riservati ai listini
|
||||
#define F_L_CATVEN 131
|
||||
#define F_L_COD 132
|
||||
#define F_L_CODSUCC 133
|
||||
#define F_L_DESVEN 134
|
||||
#define F_L_DESSUCC 135
|
||||
|
||||
// campi riservati ai contratti
|
||||
#define F_C_TIPOCF 141
|
||||
#define F_C_CODCF 142
|
||||
#define F_C_COD 143
|
||||
#define F_C_OBBLIG 144
|
||||
#define F_C_DESCF 145
|
||||
|
||||
// campi riservati alle offerte
|
||||
#define F_O_COD 151
|
||||
|
||||
// pulsante di lancio dell'edit delle righe
|
||||
#define BTN_RIGHE 161
|
||||
|
497
ve/ve2300.cpp
497
ve/ve2300.cpp
@ -1,246 +1,251 @@
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2300.h"
|
||||
|
||||
#define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); }
|
||||
#define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); }
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
||||
|
||||
|
||||
|
||||
class TRighe_condizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
TString16 _rcondven; // stringa che indica il tipo di archivio
|
||||
bool _codlis_catven; // booleano di abilitazione del campo CATVEN
|
||||
bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF
|
||||
bool _gest_um; // variabile di abilitazione delle unità di misura
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; } // punto d'aggancio tra la maschera della rel.app. e la maschera principale dell'applicazione
|
||||
virtual bool changing_mask(int) { return FALSE; } // ritorna il flag di cambio maschera a seconda dei modi di funzionamento, in questa applicazione la maschera è una sola quindi il flag è FALSE
|
||||
virtual bool changing_keys() const { return TRUE; } // ritorna il flag di rigenerazione della lista delle chiavi ad ogni find(), in questa applicazione le chiavi cambiano continuamente quindi il flag è TRUE
|
||||
virtual TRelation *get_relation() const { return _rel; } // punto d'aggancio tra la relazione della rel.app. e la relazione principale dell'applicazione
|
||||
|
||||
static void hide_and_show_codriga(void); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
|
||||
|
||||
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
|
||||
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
|
||||
|
||||
virtual int write(const TMask &); // metodo usato per scrivere il record sul file
|
||||
virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file
|
||||
|
||||
public:
|
||||
TRighe_condizioni_vendita() {}
|
||||
virtual ~TRighe_condizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TRighe_condizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool TRighe_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
TString temp(argv(2));
|
||||
_rcondven= temp.left(1); // prende solo il primo carattere
|
||||
} else {
|
||||
TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_rcondven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2300X");
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // listini
|
||||
DESTROY(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_C_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
_msk->hide(F_R_C_RICERCA);
|
||||
_msk->hide(F_R_O_RICERCA);
|
||||
// _msk->hide(F_R_CO_CODLOTTO);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN
|
||||
if (!_codlis_catven) KILL(F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
set_search_field(F_R_L_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'C': // contratti
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
_msk->hide(F_R_L_RICERCA);
|
||||
_msk->hide(F_R_O_RICERCA);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
KILL(F_R_C_TIPOCF);
|
||||
KILL(F_R_C_CODCF);
|
||||
}
|
||||
set_search_field(F_R_C_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_C_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_TIPOCF);
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_C_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_L_RICERCA);
|
||||
_msk->hide(F_R_C_RICERCA);
|
||||
set_search_field(F_R_O_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_O_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
default: // messaggio di errore se si indica un archivio non valido
|
||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file)
|
||||
_msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
_msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
_gest_um= TRUE; // abilita la gestione delle unità di misura (di default)
|
||||
hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::hide_and_show_codriga() {
|
||||
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
|
||||
if (_msk->query_mode()) { // se la maschera è in modo query procede con i controlli...
|
||||
short id_campi_1[4]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_S, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
short id_campi_2[4]= { F_R_DESRIGA_A, F_R_DESRIGA_G, F_R_DESRIGA_S, F_R_DESRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
char tag_campi[4]= { 'A', 'G', 'S', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
|
||||
bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
|
||||
char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA
|
||||
for (int i=0; i<4; i++) { // ciclo sui tre campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { CREATE(id_campi_1[i]); _msk->show(id_campi_2[i]); } // il campo indicato con il tag viene reso visibile
|
||||
else { DESTROY(id_campi_1[i]); _msk->hide(id_campi_2[i]); } // i campi non corrispondenti al tag vengono resi invisibili
|
||||
}
|
||||
if (_gest_um && (tag_campo=='A')) { REVIVE(F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo...
|
||||
else { KILL(F_R_UM); } // ...altrimenti viene disattivato
|
||||
}
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
|
||||
if (k==K_SPACE) hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if ((k==K_TAB) && fld.get().not_empty()) {
|
||||
bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
|
||||
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
|
||||
condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // riempie il resto della chiave dei listini
|
||||
condv.put("CATVEN", _msk->get(F_R_L_CATVEN));
|
||||
condv.put("COD", _msk->get(F_R_L_COD));
|
||||
break;
|
||||
case 'C': // riempie il resto della chiave dei contratti
|
||||
condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF));
|
||||
condv.put("CODCF", _msk->get(F_R_C_CODCF));
|
||||
condv.put("COD", _msk->get(F_R_C_COD));
|
||||
break;
|
||||
case 'O': // riempie il resto della chiave delle offerte
|
||||
condv.put("COD", _msk->get(F_R_O_COD));
|
||||
break;
|
||||
}
|
||||
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
|
||||
_gest_um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura
|
||||
hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura"
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione"
|
||||
_msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione"
|
||||
_msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (!condv.get_bool("GESTSCO")) {
|
||||
_msk->disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
_msk->disable(F_R_QOM); // disabilita il campo "quantità art. omaggio"
|
||||
_msk->disable(F_R_QBASE); // disabilita il campo "quantità base x sconto"
|
||||
_msk->disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio"
|
||||
_msk->disable(F_R_PROMAGGIO); // disabilita il campo "prezzo omaggio"
|
||||
_msk->disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio"
|
||||
} else {
|
||||
_msk->enable(F_R_SCONTO); // abilita il campo "sconto"
|
||||
_msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio"
|
||||
_msk->enable(F_R_QBASE); // abilita il campo "quantità base x sconto"
|
||||
_msk->enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio"
|
||||
_msk->enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio"
|
||||
_msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio"
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
error_box("Non esiste una testata corrispondente alla chiave specificata");
|
||||
return FALSE;
|
||||
}
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->write(); // invoca la scrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::rewrite(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve2300(int argc, char* argv[]) {
|
||||
TRighe_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Righe condizioni vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#include <relapp.h>
|
||||
#include <config.h>
|
||||
|
||||
#include "ve2300.h"
|
||||
|
||||
#define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); }
|
||||
#define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); }
|
||||
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
|
||||
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
|
||||
|
||||
|
||||
|
||||
class TRighe_condizioni_vendita: public TRelation_application {
|
||||
TMask *_msk; // maschera principale
|
||||
TRelation *_rel; // relazione principale
|
||||
|
||||
TString16 _rcondven; // stringa che indica il tipo di archivio
|
||||
bool _codlis_catven; // booleano di abilitazione del campo CATVEN
|
||||
bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF
|
||||
bool _gest_um; // variabile di abilitazione delle unità di misura
|
||||
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TMask *get_mask(int) { return _msk; } // punto d'aggancio tra la maschera della rel.app. e la maschera principale dell'applicazione
|
||||
virtual bool changing_mask(int) { return FALSE; } // ritorna il flag di cambio maschera a seconda dei modi di funzionamento, in questa applicazione la maschera è una sola quindi il flag è FALSE
|
||||
virtual bool changing_keys() const { return TRUE; } // ritorna il flag di rigenerazione della lista delle chiavi ad ogni find(), in questa applicazione le chiavi cambiano continuamente quindi il flag è TRUE
|
||||
virtual TRelation *get_relation() const { return _rel; } // punto d'aggancio tra la relazione della rel.app. e la relazione principale dell'applicazione
|
||||
|
||||
static void hide_and_show_codriga(void); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
|
||||
|
||||
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
|
||||
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
|
||||
|
||||
virtual int write(const TMask &); // metodo usato per scrivere il record sul file
|
||||
virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file
|
||||
|
||||
public:
|
||||
TRighe_condizioni_vendita() {}
|
||||
virtual ~TRighe_condizioni_vendita() {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
|
||||
return (TRighe_condizioni_vendita &)main_app();
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool TRighe_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
TString temp(argv(2));
|
||||
_rcondven= temp.left(1); // prende solo il primo carattere
|
||||
} else {
|
||||
TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_rcondven.upper(); // rende la stringa upper-case
|
||||
_msk= new TMask("VE2300X");
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // listini
|
||||
DESTROY(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_C_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
_msk->hide(F_R_C_RICERCA);
|
||||
_msk->hide(F_R_O_RICERCA);
|
||||
// _msk->hide(F_R_CO_CODLOTTO);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN
|
||||
if (!_codlis_catven) KILL(F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
set_search_field(F_R_L_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'C': // contratti
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_O_COD);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_O_DES);
|
||||
_msk->hide(F_R_L_RICERCA);
|
||||
_msk->hide(F_R_O_RICERCA);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
|
||||
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
|
||||
KILL(F_R_C_TIPOCF);
|
||||
KILL(F_R_C_CODCF);
|
||||
}
|
||||
set_search_field(F_R_C_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_C_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
|
||||
DESTROY(F_R_C_TIPOCF);
|
||||
DESTROY(F_R_C_CODCF);
|
||||
DESTROY(F_R_L_COD);
|
||||
DESTROY(F_R_C_COD);
|
||||
_msk->hide(F_R_C_DESCF);
|
||||
_msk->hide(F_R_L_DESVEN);
|
||||
_msk->hide(F_R_L_DES);
|
||||
_msk->hide(F_R_C_DES);
|
||||
_msk->hide(F_R_L_RICERCA);
|
||||
_msk->hide(F_R_C_RICERCA);
|
||||
set_search_field(F_R_O_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_O_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
default: // messaggio di errore se si indica un archivio non valido
|
||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file)
|
||||
_msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio
|
||||
_msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga
|
||||
_gest_um= TRUE; // abilita la gestione delle unità di misura (di default)
|
||||
hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::user_destroy() {
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRighe_condizioni_vendita::hide_and_show_codriga() {
|
||||
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
|
||||
if (_msk->query_mode()) { // se la maschera è in modo query procede con i controlli...
|
||||
short id_campi_1[4]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_S, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
short id_campi_2[4]= { F_R_DESRIGA_A, F_R_DESRIGA_G, F_R_DESRIGA_S, F_R_DESRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
|
||||
char tag_campi[4]= { 'A', 'G', 'S', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
|
||||
bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
|
||||
char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA
|
||||
for (int i=0; i<4; i++) { // ciclo sui quattro campi CODRIGA
|
||||
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene reso visibile
|
||||
CREATE(id_campi_1[i]);
|
||||
_msk->show(id_campi_2[i]);
|
||||
} else { // i campi non corrispondenti al tag vengono resi invisibili
|
||||
DESTROY(id_campi_1[i]);
|
||||
_msk->hide(id_campi_2[i]);
|
||||
}
|
||||
}
|
||||
if (_gest_um && (tag_campo=='A')) { REVIVE(F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo...
|
||||
else { KILL(F_R_UM); } // ...altrimenti viene disattivato
|
||||
}
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
|
||||
if (k==K_SPACE) hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
|
||||
if ((k==K_TAB) && fld.get().not_empty()) {
|
||||
bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
|
||||
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio
|
||||
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
|
||||
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
|
||||
condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
|
||||
switch (_rcondven[0]) {
|
||||
case 'L': // riempie il resto della chiave dei listini
|
||||
condv.put("CATVEN", _msk->get(F_R_L_CATVEN));
|
||||
condv.put("COD", _msk->get(F_R_L_COD));
|
||||
break;
|
||||
case 'C': // riempie il resto della chiave dei contratti
|
||||
condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF));
|
||||
condv.put("CODCF", _msk->get(F_R_C_CODCF));
|
||||
condv.put("COD", _msk->get(F_R_C_COD));
|
||||
break;
|
||||
case 'O': // riempie il resto della chiave delle offerte
|
||||
condv.put("COD", _msk->get(F_R_O_COD));
|
||||
break;
|
||||
}
|
||||
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
|
||||
_gest_um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura
|
||||
hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura"
|
||||
if (!condv.get_bool("GESTSCAGL")) {
|
||||
KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione"
|
||||
_msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
|
||||
} else {
|
||||
REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione"
|
||||
_msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
|
||||
}
|
||||
if (condv.get_bool("SCONST") || condv.get_bool("GESTSCO")) _msk->enable(F_R_SCONTO); // abilita il campo "sconto"
|
||||
else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto"
|
||||
if (!condv.get_bool("GESTSCO")) {
|
||||
_msk->disable(F_R_QOM); // disabilita il campo "quantità art. omaggio"
|
||||
_msk->disable(F_R_QBASE); // disabilita il campo "quantità base x sconto"
|
||||
_msk->disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio"
|
||||
_msk->disable(F_R_PROMAGGIO); // disabilita il campo "prezzo omaggio"
|
||||
_msk->disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio"
|
||||
} else {
|
||||
_msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio"
|
||||
_msk->enable(F_R_QBASE); // abilita il campo "quantità base x sconto"
|
||||
_msk->enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio"
|
||||
_msk->enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio"
|
||||
_msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio"
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
error_box("Non esiste una testata corrispondente alla chiave specificata");
|
||||
return FALSE;
|
||||
}
|
||||
} else return TRUE;
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::write(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->write(); // invoca la scrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
int TRighe_condizioni_vendita::rewrite(const TMask &m) {
|
||||
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
|
||||
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
|
||||
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
|
||||
TRectype &r= f.curr(); // prende il record corrente del file principale
|
||||
f.zero("TIPOCF"); // svuota il campo TIPOCF
|
||||
}
|
||||
_rel->rewrite(); // invoca la riscrittura della relazione
|
||||
return (_rel->status()); // ritorna lo stato della relazione
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve2300(int argc, char* argv[]) {
|
||||
TRighe_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Righe condizioni vendita ");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
51
ve/ve3.cpp
51
ve/ve3.cpp
@ -1,21 +1,30 @@
|
||||
|
||||
#include <checks.h>
|
||||
#include <xvt.h>
|
||||
|
||||
//extern int ve3100(int argc, char* argv[]); // stampa tabelle sconti (di riga/di documento/incondizionati)
|
||||
extern int ve3200(int argc, char **argv); // stampa testate listini/contratti/offerte
|
||||
extern int ve3400(int argc, char **argv); // stampa anagrafica di magazzino
|
||||
|
||||
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int rt= -1;
|
||||
const int r= (argc>1)?(atoi(&argv[1][1])):(-1);
|
||||
|
||||
switch (r) {
|
||||
case 1: rt = ve3200(argc, argv); break;
|
||||
case 3: rt = ve3400(argc, argv); break;
|
||||
default: error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 3]", argv[0]); break;
|
||||
}
|
||||
return (rt);
|
||||
}
|
||||
|
||||
#include <checks.h>
|
||||
#include <xvt.h>
|
||||
|
||||
extern int ve3100(int argc, char **argv); // stampa tabelle sconti (di riga/di documento/incondizionati)
|
||||
extern int ve3200(int argc, char **argv); // stampa testate listini/contratti/offerte
|
||||
extern int ve3400(int argc, char **argv); // stampa anagrafica di magazzino
|
||||
|
||||
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int rt= -1;
|
||||
const int r= (argc>1)?(atoi(&argv[1][1])):(-1);
|
||||
|
||||
switch (r) {
|
||||
case 0:
|
||||
rt= ve3100(argc, argv);
|
||||
break;
|
||||
case 1:
|
||||
rt= ve3200(argc, argv);
|
||||
break;
|
||||
case 3:
|
||||
rt= ve3400(argc, argv);
|
||||
break;
|
||||
default:
|
||||
error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 3]", argv[0]);
|
||||
break;
|
||||
}
|
||||
return (rt);
|
||||
}
|
||||
|
320
ve/ve3100.cpp
Executable file
320
ve/ve3100.cpp
Executable file
@ -0,0 +1,320 @@
|
||||
|
||||
#include <printapp.h>
|
||||
#include <mask.h>
|
||||
#include <config.h>
|
||||
#include <execp.h>
|
||||
#include <mailbox.h>
|
||||
|
||||
#include "ve3100.h"
|
||||
|
||||
#define KILL(x) { mask->field(x).reset_key(1); mask->disable(x); }
|
||||
#define REVIVE(x) { mask->field(x).set_key(1); mask->enable(x); }
|
||||
|
||||
#define SCON1 135
|
||||
#define CVE1 201
|
||||
#define ZON1 202
|
||||
#define CPG1 203
|
||||
#define UMS1 204
|
||||
|
||||
|
||||
|
||||
class TStampa_sconti: public TPrint_application {
|
||||
TRelation *_rel; // relazione principale
|
||||
TString16 _sconti; // tipo di archivio
|
||||
TString16 _gessco; // configurazione della gestione sconti
|
||||
bool _descriz; // abilitazione della stampa delle descrizioni
|
||||
bool _compat; // abilita le descrizioni compatte (vengono ristampate solo al cambio dei valori)
|
||||
bool _catven; // abilitazione della categoria di vendita (gesliscv)
|
||||
bool _scokey_catven; // abilitazione della categoria di vendita
|
||||
bool _scokey_scclienti; // abilitazione degli sconti clienti
|
||||
bool _scokey_zone; // abilitazione delle zone
|
||||
bool _scokey_condpag; // abilitazione delle condizioni di pagamento
|
||||
TString _last_catven, _last_codart, _last_um, _last_sccliente, _last_zona, _last_condpag; // inseguitori dei campi da descrivere
|
||||
//int _rcondv_link_id; // id del link ipertestuale all'anagrafica di magazzino
|
||||
protected:
|
||||
virtual bool user_create(void);
|
||||
virtual bool user_destroy(void);
|
||||
virtual bool set_print(int);
|
||||
virtual void set_page(int, int);
|
||||
virtual void preprocess_header(void);
|
||||
virtual void preprocess_footer(void);
|
||||
//virtual void process_link(int, const char *);
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TStampa_sconti::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
_sconti= "*"; // inizializzazione dell'indicatore del tipo di tabella
|
||||
if (argc()>2) _sconti= argv(2); // se c'è, prende il tipo di tabella dalla linea di comando
|
||||
else {
|
||||
TMask choose("VE3100"); // istanzia la maschera di scelta del tipo di tabella
|
||||
if (choose.run() == K_ENTER) _sconti= choose.get(F_TIPOSC); // prende il tipo di tabella dalla maschera
|
||||
}
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
|
||||
switch (_sconti[0]) {
|
||||
case 'D': // sconti documento
|
||||
_rel= new TRelation(LF_SCONTI); // crea la relazione principale
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
_rel= new TRelation(LF_SCONTI); // crea la relazione principale
|
||||
_rel->add(LF_ANAGR, "CODART==CODART");
|
||||
_rel->add("%UMS", "CODTAB==UM", 1, LF_SCONTI, UMS1);
|
||||
_rel->add("%CVE", "CODTAB==CODCAT", 1, LF_SCONTI, CVE1);
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
|
||||
if (_gessco=="A") {
|
||||
_rel= new TRelation(LF_SCONTI); // crea la relazione principale
|
||||
_rel->add("%CVE", "CODTAB==CODCAT", 1, LF_SCONTI, CVE1);
|
||||
_rel->add(LF_SCONTI, "TIPO==\"D\"|CODCAT==CODART[1,2]", 1, LF_SCONTI, SCON1);
|
||||
_rel->add("%ZON", "CODTAB==CODART[3,4]", 1, LF_SCONTI, ZON1);
|
||||
_rel->add("%CPG", "CODTAB==CODART[5,8]", 1, LF_SCONTI, CPG1);
|
||||
gotcha= TRUE;
|
||||
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
|
||||
break;
|
||||
default: // messaggio di errore se si indica una tabella non valida
|
||||
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) {
|
||||
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
|
||||
add_file(LF_SCONTI); // notifica il file delle principale alla stampa
|
||||
enable_print_menu(); // abilita il menù di stampa
|
||||
enable_setprint_menu(); // abilita il menù di settaggio della stampa
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TStampa_sconti::user_destroy() {
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampa_sconti::set_print(int) {
|
||||
bool gotcha= FALSE;
|
||||
TConfig prassid(CONFIG_DITTA, "ve");
|
||||
TMask *mask;
|
||||
switch (_sconti[0]) {
|
||||
case 'D': // sconti documento
|
||||
mask= new TMask("ve3100d");
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
mask= new TMask("ve3100r");
|
||||
if (!_catven) {
|
||||
KILL(F_R_CODCAT_DA);
|
||||
KILL(F_R_CODCAT_A);
|
||||
} else {
|
||||
REVIVE(F_R_CODCAT_DA);
|
||||
REVIVE(F_R_CODCAT_A);
|
||||
}
|
||||
gotcha= TRUE;
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
mask= new TMask("ve3100i");
|
||||
short k_id[2][4]= { F_I_CATVEN_DA, F_I_CATVEN_A, F_I_SCCLIENTI_DA, F_I_SCCLIENTI_A, F_I_ZONE_DA, F_I_ZONE_A, F_I_CONDPAG_DA, F_I_CONDPAG_A }; // vettore dei campi da controllare
|
||||
for (int i=0; i<4; i++) {
|
||||
bool enab= prassid.get_bool("SCOKEY", NULL, i+1);
|
||||
switch (i) {
|
||||
case 0: _scokey_catven= enab; break;
|
||||
case 1: _scokey_scclienti= enab; break;
|
||||
case 2: _scokey_zone= enab; break;
|
||||
case 3: _scokey_condpag= enab; break;
|
||||
}
|
||||
if (enab) { // se nel file di config. il campo è abilitato...
|
||||
REVIVE(k_id[0][i]); // ...i campi vengono abilitati anche sulla maschera
|
||||
REVIVE(k_id[1][i]);
|
||||
gotcha= TRUE;
|
||||
} else {
|
||||
KILL(k_id[0][i]); // se nel file di config. i campi non sono abilitati vengono disabilitati anche sulla maschera
|
||||
KILL(k_id[1][i]);
|
||||
}
|
||||
}
|
||||
if (!_catven) {
|
||||
KILL(k_id[0][1]); // se nel file di config. la categoria vendite è disabilitata viene ucciso il campo
|
||||
KILL(k_id[1][1]);
|
||||
}
|
||||
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
|
||||
break;
|
||||
}
|
||||
if (gotcha && (mask->run()== K_ENTER)) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
|
||||
if (_sconti=="R") {
|
||||
_descriz= mask->get_bool(F_R_DESCRIZ);
|
||||
_compat= mask->get_bool(F_R_COMPAT);
|
||||
} else if (_sconti=="I") {
|
||||
_descriz= mask->get_bool(F_I_DESCRIZ);
|
||||
_compat= mask->get_bool(F_I_COMPAT);
|
||||
}
|
||||
TLocalisamfile &sconti= _rel->lfile();
|
||||
TRectype da(sconti.curr()); // prepara il record di inizio regione
|
||||
da.zero();
|
||||
da.put("TIPO", _sconti);
|
||||
TRectype a(da); // prepara il record di fine regione
|
||||
TString codart; // stringa per la composizione del campo CODART negli sconti incondizionati
|
||||
switch (_sconti[0]) { // impostazione della chiave della testata
|
||||
case 'D': // sconti documento
|
||||
da.put("CODCAT", mask->get(F_D_CODCAT_DA));
|
||||
a.put("CODCAT", mask->get(F_D_CODCAT_A));
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
if (_catven) {
|
||||
da.put("CODCAT", mask->get(F_R_CODCAT_DA));
|
||||
a.put("CODCAT", mask->get(F_R_CODCAT_A));
|
||||
} else {
|
||||
da.blank("CODCAT"); // i campi non gestiti vengono riempiti di blank
|
||||
a.blank("CODCAT");
|
||||
}
|
||||
da.put("CODART", mask->get(F_R_CODART_DA));
|
||||
a.put("CODART", mask->get(F_R_CODART_A));
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
if (_catven && _scokey_catven) {
|
||||
da.put("CODCAT", mask->get(F_I_CATVEN_DA));
|
||||
a.put("CODCAT", mask->get(F_I_CATVEN_A));
|
||||
} else {
|
||||
da.blank("CODCAT"); // i campi non gestiti vengono riempiti di blank
|
||||
a.blank("CODCAT");
|
||||
}
|
||||
if (_scokey_scclienti || _scokey_zone || _scokey_condpag) {
|
||||
codart.format("%2s%2s%4s", (_scokey_scclienti)?(mask->get(F_I_SCCLIENTI_DA)):(""), (_scokey_zone)?(mask->get(F_I_ZONE_DA)):(""), (_scokey_condpag)?(mask->get(F_I_CONDPAG_DA)):(""));
|
||||
da.put("CODART", codart);
|
||||
codart.format("%2s%2s%4s", (_scokey_scclienti)?(mask->get(F_I_SCCLIENTI_A)):(""), (_scokey_zone)?(mask->get(F_I_ZONE_A)):(""), (_scokey_condpag)?(mask->get(F_I_CONDPAG_A)):(""));
|
||||
a.put("CODART", codart);
|
||||
}
|
||||
break;
|
||||
}
|
||||
current_cursor()->setregion(da, a); // setta la regione sul cursore
|
||||
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
|
||||
disable_links(); // disabilita tutti i link ipertestuali
|
||||
// _rcondv_link_id= enable_link("Collegamento a archivio sconti", 'g'); // abilita il collegamento
|
||||
return TRUE;
|
||||
} else return FALSE;
|
||||
}
|
||||
|
||||
/* 1 1 1 1
|
||||
1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
|
||||
D:
|
||||
CC DESCR SCONTO
|
||||
.. .................................................. .........................
|
||||
|
||||
R:
|
||||
CC CODART UM SCONTO
|
||||
.. .................... .. .........................
|
||||
Categoria vendite: ..................................................
|
||||
Articolo: ..................................................
|
||||
Unità di misura: ..................................................
|
||||
|
||||
I:
|
||||
CC SC ZN CPG SCONTO
|
||||
.. .. .. .... .........................
|
||||
Categoria vendite: ..................................................
|
||||
Sconto cliente: ..................................................
|
||||
Zona: ..................................................
|
||||
Condizione di pagamento: ..................................................
|
||||
|
||||
*/
|
||||
|
||||
void TStampa_sconti::preprocess_header() {
|
||||
reset_header(); // l'header viene resettato
|
||||
int i= 1; // contatore delle linee
|
||||
const long firm= get_firm(); // legge l'id della ditta corrente
|
||||
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
|
||||
ditte.zero(); // vuota il record
|
||||
ditte.put("CODDITTA", firm); // riempie la chiave
|
||||
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
|
||||
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
|
||||
set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
|
||||
}
|
||||
set_header(++i,"@1gCC"); // codice di categoria
|
||||
switch (_sconti[0]) {
|
||||
case 'D': // sconti documento
|
||||
set_header(i, "@4gDescrizione @55gSconto"); // descrizione e sconto
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
set_header(i, "@4gCod. articolo @25gUM @28gSconto"); // codice articolo, unità di misura e sconto
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
set_header(i, "@4gSC @7gZn @10gCPg @15gSconto"); // sconto cliente, zona, condizione di pagamento e sconto
|
||||
break;
|
||||
}
|
||||
set_header(++i, ""); // aggiunge due linee vuote
|
||||
set_header(++i, "");
|
||||
}
|
||||
|
||||
void TStampa_sconti::preprocess_footer() {
|
||||
reset_footer();
|
||||
int i= 1; // indice di linea
|
||||
set_footer(i, ""); // salta una linea
|
||||
set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina
|
||||
}
|
||||
|
||||
void TStampa_sconti::set_page(int file, int) {
|
||||
if (file== LF_SCONTI) { // se il file in stampa non è il file principale non c'è nulla da fare
|
||||
TLocalisamfile &sconti= _rel->lfile();
|
||||
int i= 0; // indice di riga
|
||||
switch (_sconti[0]) {
|
||||
case 'D': // sconti documento
|
||||
set_row(++i, "@1g@2s @4g@50s @55g@25s", FLD(LF_SCONTI, "CODCAT"), FLD(LF_SCONTI, "DESCR"), FLD(LF_SCONTI, "SCONTO"));
|
||||
break;
|
||||
case 'R': // sconti di riga
|
||||
if (_descriz) {
|
||||
const TString &catven= sconti.get("CODCAT"); // categoria di vendita
|
||||
if (_catven && ((!_compat) || (catven != _last_catven))) {
|
||||
set_row(++i, "@1gCategoria vendite: @20g@50s", FLD(-CVE1, "S0"));
|
||||
_last_catven= catven;
|
||||
}
|
||||
const TString &codart= sconti.get("CODART"); // codice articolo
|
||||
if ((!_compat) || (codart != _last_codart)) {
|
||||
set_row(++i, "@1gArticolo: @20g@50s", FLD(LF_ANAGR, "DESCR"));
|
||||
_last_codart= codart;
|
||||
}
|
||||
const TString &um= sconti.get("UM"); // unità di misura
|
||||
if ((!_compat) || (codart != _last_codart)) {
|
||||
set_row(++i, "@1gUnità di misura: @20g@50s", FLD(-UMS1, "S0"));
|
||||
_last_um= um;
|
||||
}
|
||||
}
|
||||
set_row(++i, "@1g@2s @4g@20s @25g@2s @28g@25s", FLD(LF_SCONTI, "CODCAT"), FLD(LF_SCONTI, "CODART"), FLD(LF_SCONTI, "UM"), FLD(LF_SCONTI, "SCONTO"));
|
||||
break;
|
||||
case 'I': // sconti incondizionati
|
||||
if (_descriz) {
|
||||
const TString &catven= sconti.get("CODCAT"); // categoria di vendita
|
||||
if (_catven && _scokey_catven && ((!_compat) || (catven != _last_catven))) {
|
||||
set_row(++i, "@1gCategoria vendite: @26g@50s", FLD(-CVE1, "S0"));
|
||||
_last_catven= catven;
|
||||
}
|
||||
const TString &sccliente= sconti.get("CODART").sub(0,1); // sconto cliente
|
||||
if (_scokey_scclienti && ((!_compat) || (sccliente != _last_sccliente))) {
|
||||
set_row(++i, "@1gSconto cliente: @26g@50s", FLD(-SCON1, "DESCR"));
|
||||
_last_sccliente= sccliente;
|
||||
}
|
||||
const TString &zona= sconti.get("CODART").sub(2,3); // zona
|
||||
if (_scokey_zone && ((!_compat) || (zona != _last_zona))) {
|
||||
set_row(++i, "@1gZona: @26g@50s", FLD(-ZON1, "S0"));
|
||||
_last_zona= zona;
|
||||
}
|
||||
const TString &condpag= sconti.get("CODART").sub(4,7); // condizione di pagamento
|
||||
if (_scokey_condpag && ((!_compat) || (zona != _last_zona))) {
|
||||
set_row(++i, "@1gCondizioni pagamento: @26g@50s", FLD(-CPG1, "S0"));
|
||||
_last_condpag= condpag;
|
||||
}
|
||||
}
|
||||
set_row(++i, "@1g@2s @4g@2s @7g@2s @10g@4s @15g@25s", FLD(LF_SCONTI, "CODCAT"), FLD(LF_SCONTI, "CODART", 1, 2), FLD(LF_SCONTI, "CODART", 3, 4), FLD(LF_SCONTI, "CODART", 5, 8), FLD(LF_SCONTI, "SCONTO"));
|
||||
break;
|
||||
}
|
||||
set_row(++i, ""); // salta una linea
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve3100(int argc, char **argv) {
|
||||
TStampa_sconti a;
|
||||
|
||||
a.run(argc, argv, "Stampa sconti");
|
||||
return 0;
|
||||
}
|
11
ve/ve3100.h
11
ve/ve3100.h
@ -1,9 +1,6 @@
|
||||
#define F_TIPO 101
|
||||
#define F_CODCAT 102
|
||||
#define F_CODART 103
|
||||
#define F_UM 104
|
||||
#define F_SCONTO 105
|
||||
#include "ve3100d.h"
|
||||
#include "ve3100r.h"
|
||||
#include "ve3100i.h"
|
||||
|
||||
#define F_CODCAT1 106
|
||||
#define F_DESCR 107
|
||||
#define F_TIPOSC 101
|
||||
|
||||
|
@ -1,96 +1,26 @@
|
||||
#include "VE3100.H"
|
||||
#include "ve3100.h"
|
||||
|
||||
// #define LF_SCONTI
|
||||
#define LF_ANAMAG 47
|
||||
PAGE "Stampa archivio sconti " -1 -1 40 10
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Archivio sconti riga " 11 60 14
|
||||
|
||||
LISTBOX F_TIPO 1
|
||||
RADIOBUTTON F_TIPOSC 36
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
ITEM "R|"
|
||||
FLAG "H"
|
||||
// FIELD LF_SCONTI->TIPO
|
||||
PROMPT 1 2 "Tipo di archivio "
|
||||
ITEM "R|Sconti di riga"
|
||||
ITEM "D|Sconti documento"
|
||||
ITEM "I|Sconti indondizionati"
|
||||
END
|
||||
|
||||
STRING F_CODCAT 2
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT 3 2 "Categoria vendita "
|
||||
// FIELD LF_SCONTI->CODCAT
|
||||
USE %CVE // CATEGORIE VENDITA
|
||||
FLAG "U"
|
||||
INPUT CODTAB F_CODCAT
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@40" S0
|
||||
|
||||
OUTPUT F_CODCAT CODTAB
|
||||
OUTPUT F_CODCAT1 S0
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
STRING F_CODCAT1 40
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT 28 2 ""
|
||||
USE %CVE KEY 2
|
||||
FLAG "U"
|
||||
INPUT S0 F_CODCAT1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@40" S0
|
||||
|
||||
OUTPUT F_CODCAT CODTAB
|
||||
OUTPUT F_CODCAT1 S0
|
||||
END
|
||||
|
||||
STRING F_CODART 30
|
||||
BEGIN
|
||||
PROMPT 3 4 "Codice articolo "
|
||||
// FIELD LF_SCONTI->CODART
|
||||
USE LF_ANAMAG
|
||||
INPUT CODART F_CODART
|
||||
DISPLAY "Codice@30" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CODART CODART
|
||||
OUTPUT F_DESCR DESCR
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 3 5 "Descrizione "
|
||||
|
||||
USE LF_ANAMAG KEY 2
|
||||
INPUT DESCR F_DESCR
|
||||
DISPLAY "Codice@30" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CODART CODART
|
||||
OUTPUT F_DESCR DESCR
|
||||
END
|
||||
|
||||
LISTBOX F_UM 10
|
||||
BEGIN
|
||||
PROMPT 3 7 "U.M. "
|
||||
ITEM " "
|
||||
// TROVARE DA ANAGRAFICA ARTICOLI
|
||||
// FIELD LF_SCONTI->UM
|
||||
END
|
||||
|
||||
STRING F_SCONTO 25
|
||||
BEGIN
|
||||
PROMPT 3 8 "Sconto di riga "
|
||||
// FIELD LF_SCONTI->SCONTO
|
||||
END
|
||||
|
||||
|
||||
GROUPBOX DLG_NULL 70 13
|
||||
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAG "R"
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
4
ve/ve3100d.h
Executable file
4
ve/ve3100d.h
Executable file
@ -0,0 +1,4 @@
|
||||
#define F_D_TIPO 111
|
||||
#define F_D_CODCAT_DA 112
|
||||
#define F_D_CODCAT_A 113
|
||||
|
63
ve/ve3100d.uml
Executable file
63
ve/ve3100d.uml
Executable file
@ -0,0 +1,63 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve3100d.h"
|
||||
|
||||
PAGE "Stampa sconti documenti " -1 -1 55 7
|
||||
|
||||
LISTA F_D_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FIELD LF_SCONTI->TIPO
|
||||
FLAG "H"
|
||||
ITEM "D|Sconti documento"
|
||||
END
|
||||
|
||||
STRING F_D_CODCAT_DA 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Cod. sconto doc. "
|
||||
FLAG "UR"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_D_TIPO SELECT
|
||||
INPUT CODCAT F_D_CODCAT_DA
|
||||
DISPLAY "Codice" CODCAT
|
||||
DISPLAY "Descrizione" DESCR
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_D_CODCAT_DA CODCAT
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 3
|
||||
BEGIN
|
||||
PROMPT 0 0 "Da"
|
||||
END
|
||||
|
||||
STRING F_D_CODCAT_A 2
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cod. sconto doc. "
|
||||
FLAG "UR"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO F_D_TIPO SELECT
|
||||
INPUT CODCAT F_D_CODCAT_A
|
||||
DISPLAY "Codice" CODCAT
|
||||
DISPLAY "Descrizione" DESCR
|
||||
DISPLAY "Sconto@25" SCONTO
|
||||
OUTPUT F_D_CODCAT_A CODCAT
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 3
|
||||
BEGIN
|
||||
PROMPT 0 3 "A"
|
||||
END
|
||||
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
12
ve/ve3100i.h
Executable file
12
ve/ve3100i.h
Executable file
@ -0,0 +1,12 @@
|
||||
#define F_I_TIPO 131
|
||||
#define F_I_CATVEN_DA 132
|
||||
#define F_I_SCCLIENTI_DA 133
|
||||
#define F_I_ZONE_DA 134
|
||||
#define F_I_CONDPAG_DA 135
|
||||
#define F_I_CATVEN_A 136
|
||||
#define F_I_SCCLIENTI_A 137
|
||||
#define F_I_ZONE_A 138
|
||||
#define F_I_CONDPAG_A 139
|
||||
#define F_I_DESCRIZ 140
|
||||
#define F_I_COMPAT 141
|
||||
|
138
ve/ve3100i.uml
Executable file
138
ve/ve3100i.uml
Executable file
@ -0,0 +1,138 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve3100i.h"
|
||||
|
||||
PAGE "Stampa sconti incondizionati " -1 -1 55 15
|
||||
|
||||
LISTA F_I_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
ITEM "I|Sconti incondizionati"
|
||||
END
|
||||
|
||||
STRING F_I_CATVEN_DA 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Cat. vendite "
|
||||
FLAG "U"
|
||||
USE %CVE
|
||||
INPUT CODTAB F_I_CATVEN_DA
|
||||
DISPLAY "Cat. vend." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CATVEN_DA CODTAB
|
||||
END
|
||||
|
||||
STRING F_I_SCCLIENTI_DA 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Sconto cliente "
|
||||
FLAG "U"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO "D" SELECT
|
||||
INPUT CODCAT F_I_SCCLIENTI_DA
|
||||
DISPLAY "Sc. Cliente" CODCAT
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_I_SCCLIENTI_DA CODCAT
|
||||
END
|
||||
|
||||
STRING F_I_ZONE_DA 2
|
||||
BEGIN
|
||||
PROMPT 2 3 "Zona "
|
||||
FLAG "U"
|
||||
USE %ZON
|
||||
INPUT CODTAB F_I_ZONE_DA
|
||||
DISPLAY "Zona" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_ZONE_DA CODTAB
|
||||
END
|
||||
|
||||
STRING F_I_CONDPAG_DA 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cond. pagam. "
|
||||
FLAG "U"
|
||||
USE %CPG
|
||||
INPUT CODTAB F_I_CONDPAG_DA
|
||||
DISPLAY "Cond. pag." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CONDPAG_DA CODTAB
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 6
|
||||
BEGIN
|
||||
PROMPT 0 0 "Da"
|
||||
END
|
||||
|
||||
STRING F_I_CATVEN_A 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Cat. vendite "
|
||||
FLAG "U"
|
||||
USE %CVE
|
||||
INPUT CODTAB F_I_CATVEN_A
|
||||
DISPLAY "Cat. vend." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CATVEN_A CODTAB
|
||||
END
|
||||
|
||||
STRING F_I_SCCLIENTI_A 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Sconto cliente "
|
||||
FLAG "U"
|
||||
USE LF_SCONTI
|
||||
INPUT TIPO "D" SELECT
|
||||
INPUT CODCAT F_I_SCCLIENTI_A
|
||||
DISPLAY "Sc. Cliente" CODCAT
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_I_SCCLIENTI_A CODCAT
|
||||
END
|
||||
|
||||
STRING F_I_ZONE_A 2
|
||||
BEGIN
|
||||
PROMPT 2 9 "Zona "
|
||||
FLAG "U"
|
||||
USE %ZON
|
||||
INPUT CODTAB F_I_ZONE_A
|
||||
DISPLAY "Zona" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_ZONE_A CODTAB
|
||||
END
|
||||
|
||||
STRING F_I_CONDPAG_A 4
|
||||
BEGIN
|
||||
PROMPT 2 10 "Cond. pagam. "
|
||||
FLAG "U"
|
||||
USE %CPG
|
||||
INPUT CODTAB F_I_CONDPAG_A
|
||||
DISPLAY "Cond. pag." CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_I_CONDPAG_A CODTAB
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 6
|
||||
BEGIN
|
||||
PROMPT 0 6 "A"
|
||||
END
|
||||
|
||||
BOOLEAN F_I_DESCRIZ
|
||||
BEGIN
|
||||
PROMPT 2 12 "Descrizioni"
|
||||
MESSAGE FALSE DISABLE,F_I_COMPAT
|
||||
MESSAGE TRUE ENABLE,F_I_COMPAT
|
||||
END
|
||||
|
||||
BOOLEAN F_I_COMPAT
|
||||
BEGIN
|
||||
PROMPT 20 12 "Compatte"
|
||||
END
|
||||
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
8
ve/ve3100r.h
Executable file
8
ve/ve3100r.h
Executable file
@ -0,0 +1,8 @@
|
||||
#define F_R_TIPO 121
|
||||
#define F_R_CODCAT_DA 122
|
||||
#define F_R_CODART_DA 123
|
||||
#define F_R_CODCAT_A 124
|
||||
#define F_R_CODART_A 125
|
||||
#define F_R_DESCRIZ 126
|
||||
#define F_R_COMPAT 127
|
||||
|
93
ve/ve3100r.uml
Executable file
93
ve/ve3100r.uml
Executable file
@ -0,0 +1,93 @@
|
||||
#include <lffiles.h>
|
||||
#include "ve3100r.h"
|
||||
|
||||
PAGE "Stampa sconti di riga " -1 -1 55 11
|
||||
|
||||
LISTA F_R_TIPO 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
FLAG "H"
|
||||
ITEM "R|Sconti di riga"
|
||||
END
|
||||
|
||||
STRING F_R_CODCAT_DA 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Cat. vendita "
|
||||
FLAG "U"
|
||||
USE %CVE
|
||||
INPUT CODTAB F_R_CODCAT_DA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_R_CODCAT_DA CODTAB
|
||||
END
|
||||
|
||||
STRING F_R_CODART_DA 20
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cod. articolo "
|
||||
FLAG "U"
|
||||
USE LF_ANAGR
|
||||
INPUT CODART F_R_CODART_DA
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_R_CODART_DA CODART
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 4
|
||||
BEGIN
|
||||
PROMPT 0 0 "Da"
|
||||
END
|
||||
|
||||
STRING F_R_CODCAT_A 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Cat. vendita "
|
||||
FLAG "U"
|
||||
USE %CVE
|
||||
INPUT CODTAB F_R_CODCAT_A
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_R_CODCAT_A CODTAB
|
||||
END
|
||||
|
||||
STRING F_R_CODART_A 20
|
||||
BEGIN
|
||||
PROMPT 2 6 "Cod. articolo "
|
||||
FLAG "U"
|
||||
USE LF_ANAGR
|
||||
INPUT CODART F_R_CODART_A
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_R_CODART_A CODART
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 4
|
||||
BEGIN
|
||||
PROMPT 0 4 "A"
|
||||
END
|
||||
|
||||
BOOLEAN F_R_DESCRIZ
|
||||
BEGIN
|
||||
PROMPT 2 8 "Descrizioni"
|
||||
MESSAGE FALSE DISABLE,F_R_COMPAT
|
||||
MESSAGE TRUE ENABLE,F_R_COMPAT
|
||||
END
|
||||
|
||||
BOOLEAN F_R_COMPAT
|
||||
BEGIN
|
||||
PROMPT 20 8 "Compatte"
|
||||
END
|
||||
|
||||
BUTTON DLG_SELECT 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 "Selezione"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
636
ve/ve3200.cpp
636
ve/ve3200.cpp
@ -1,262 +1,374 @@
|
||||
|
||||
#include <printapp.h>
|
||||
#include <mask.h>
|
||||
#include <config.h>
|
||||
#include <execp.h>
|
||||
#include <mailbox.h>
|
||||
|
||||
#include "veconf.h"
|
||||
#include "ve3200.h"
|
||||
|
||||
|
||||
|
||||
#define RCONDV_APP "ve2 -2"
|
||||
|
||||
#define DESTROY(x) { mask.field(x).reset_key(1); mask.hide(x); }
|
||||
#define KILL(x) { mask.field(x).reset_key(1); mask.disable(x); }
|
||||
|
||||
#define CVE 201
|
||||
#define VAL 202
|
||||
#define UMS1 203
|
||||
#define UMS2 204
|
||||
|
||||
|
||||
|
||||
class TStampa_condizioni_vendita: public TPrint_application {
|
||||
TRelation *_rel; // relazione principale
|
||||
TString16 _condven; // stringa che indica il tipo di archivio
|
||||
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
|
||||
bool _listval; // booleano di abilitazione della stampa dei listini in valuta
|
||||
bool _testacomp, _righecomp; // booleani di selezione della stampa completa per testata e righe;
|
||||
bool _gest_val, _gest_um, _gest_sca, _gest_so; // booleani per l'abilitazione di valute, unità di misura, scaglioni e sconti/omaggi
|
||||
int _rcondv_link_id; // id del link ipertestuale all'anagrafica di magazzino
|
||||
protected:
|
||||
virtual bool user_create(void);
|
||||
virtual bool user_destroy(void);
|
||||
virtual bool set_print(int);
|
||||
virtual void set_page(int, int);
|
||||
virtual void preprocess_header(void);
|
||||
//virtual void process_link(int, const char *);
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TStampa_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
int indice; // indice delle variabili di configurazione per le abilitazioni
|
||||
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
else {
|
||||
TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_condven.upper(); // rende la stringa upper-case
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
indice= A_LISTINI; // setta l'indice dell'archivio listini
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
_codlis_catven= prassid.get_bool("CODLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'C': // contratti
|
||||
indice= A_CONTRATTI; // setta l'indice dell'archivio contratti
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato
|
||||
else gotcha= TRUE;
|
||||
break;
|
||||
case 'O': // offerte
|
||||
indice= A_OFFERTE; // setta l'indice dell'archivio offerte
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato
|
||||
else gotcha= TRUE;
|
||||
break;
|
||||
default: // messaggio di errore se si indica un archivio non valido
|
||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute
|
||||
_rel= new TRelation(LF_RCONDV); // crea la relazione principale
|
||||
_rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
|
||||
_rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE);
|
||||
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV);
|
||||
_rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL);
|
||||
_rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1);
|
||||
_rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2);
|
||||
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
|
||||
add_file(LF_RCONDV); // notifica il file delle righe alla stampa
|
||||
enable_print_menu(); // abilita il menù di stampa
|
||||
enable_setprint_menu(); // abilita il menù di settaggio della stampa
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TStampa_condizioni_vendita::user_destroy() {
|
||||
delete _rel; // distrugge la relazione principale
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampa_condizioni_vendita::set_print(int) {
|
||||
TMask mask("ve3200x");
|
||||
mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
DESTROY(F_C_COD); // eliminazione campi di altri archivi
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_O_COD);
|
||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute
|
||||
break;
|
||||
case 'C': // contratti
|
||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_LISTVALUTA);
|
||||
DESTROY(F_O_COD);
|
||||
break;
|
||||
case 'O': // offerte
|
||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_LISTVALUTA);
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_C_COD);
|
||||
break;
|
||||
}
|
||||
if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
|
||||
_listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta
|
||||
_testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata
|
||||
_righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe
|
||||
TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale
|
||||
TString filtro;
|
||||
filtro << "(TIPO==\"" << _condven << "\")";
|
||||
switch (_condven[0]) { // impostazione della chiave della testata
|
||||
case 'L': // listini
|
||||
if (_codlis_catven) filtro << "&&(CATVEN==\"" << mask.get(F_L_CATVEN) << "\")";
|
||||
filtro << "&&(COD==\"" << mask.get(F_L_COD) << "\")";
|
||||
break;
|
||||
case 'C': // contratti
|
||||
filtro << "&&(TIPOCF==\"" << mask.get(F_C_TIPOCF) << "\")";
|
||||
filtro << "&&(CODCF==\"" << mask.get(F_C_CODCF) << "\")";
|
||||
filtro << "&&(COD==\"" << mask.get(F_C_COD) << "\")";
|
||||
break;
|
||||
case 'O': // offerte
|
||||
filtro << "&&(COD==\"" << mask.get(F_O_COD) << "\")";
|
||||
break;
|
||||
}
|
||||
if (!(mask.get_bool(F_TUTTERIGHE))) {
|
||||
filtro << "&&(TIPORIGA==\"" << mask.get(F_TIPORIGHE) << "\")";
|
||||
filtro << "&&(CODRIGA>=\"" << mask.get(F_DARIGA_A) << "\")";
|
||||
filtro << "&&(CODORIGA<=\"" << mask.get(F_ARIGA_A) << "\")";
|
||||
}
|
||||
current_cursor()->setfilter(filtro);
|
||||
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
|
||||
disable_links(); // disabilita tutti i link ipertestuali
|
||||
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
|
||||
return TRUE;
|
||||
} else return FALSE;
|
||||
}
|
||||
|
||||
/* 1 1 1 1
|
||||
1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
|
||||
CF CODCF CV COD DESCR VALIN VALFIN IL UM SC SO ST OB SUC SEQ
|
||||
. ...... .. ... .................................................. ..-..-.. ..-..-.. . . . . . . ... ...
|
||||
CVA CAMBIO DATACAM
|
||||
... ...............,..... ..-..-..
|
||||
*/
|
||||
|
||||
/* 1 1 1 1
|
||||
1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
|
||||
T CODRIGA UM S QLIM PREZZO SCONTO A CIVA PERCPROV
|
||||
. .................... .. . ...............,..... ..................,.. ......................... . .... .....,..
|
||||
UO QOM QBASE CODARTOM PROMAGGIO CODLOT E
|
||||
.. ...............,..... ...............,..... .................... ..................,.. ...... .
|
||||
*/
|
||||
|
||||
void TStampa_condizioni_vendita::preprocess_header() {
|
||||
reset_header(); // l'header viene resettato
|
||||
int i= 1; // contatore delle linee
|
||||
set_header(i, "@125gPag @#"); // la prima linea contiene, sicuramente, il numero di pagina
|
||||
const long firm= get_firm(); // legge l'id della ditta corrente
|
||||
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
|
||||
ditte.zero(); // vuota il record
|
||||
ditte.put("CODDITTA", firm); // riempie la chiave
|
||||
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
|
||||
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
|
||||
set_header(i, "Ditta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
|
||||
}
|
||||
if ((get_page_number()==1) && (!_testacomp)) { // se siamo sulla prima pagina si stampa la testata
|
||||
set_header(++i, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc.
|
||||
if ((_condven=="L") && _codlis_catven) set_header(i, "@11gCV"); // setta l'header della categoria di vendita
|
||||
if (_condven=="C") set_header(i, "CF @4gCod.CF @102gOB"); // setta l'header di clienti/fornitori e di contratto obbligatorio
|
||||
if ((_condven=="L") || (_condven=="C")) set_header(i, "@105gSuc"); // setta l'header per il codice di listino successivo
|
||||
if (_gest_val) set_header(++i, "Val @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione
|
||||
set_header(++i, ""); // salta una riga
|
||||
}
|
||||
if (!_righecomp) {
|
||||
set_header(++i, "T @2gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo
|
||||
if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura
|
||||
set_header(++i, "UMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio
|
||||
if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto
|
||||
if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento
|
||||
}
|
||||
set_header(++i, ""); // aggiunge due linee vuote
|
||||
set_header(++i, "");
|
||||
}
|
||||
|
||||
void TStampa_condizioni_vendita::set_page(int file, int) {
|
||||
if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare
|
||||
int i= 0; // indice di riga
|
||||
if (get_page_number()==1) { // se siamo sulla prima pagina deve essere stampata anche la testata
|
||||
if (_testacomp) { // stampa della testata in forma completa
|
||||
// ...
|
||||
} else { // stampa della testata in forma abbreviata
|
||||
set_row(++i, "@14g@3s @18g@50s @69g@d @78g@d @87g@1s @90g@1s @93g@1s @96g@1s @99g@1s @109g@3s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR"), FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN"), FLD(LF_CONDV, "IMPLORDI"), FLD(LF_CONDV, "GESTUM"),
|
||||
FLD(LF_CONDV, "GESTSCAGL"), FLD(LF_CONDV, "GESTSCO"), FLD(LF_CONDV, "SCONST"), FLD(LF_CONDV, "SEQRIC")); // codice, descriz., validità e booleani
|
||||
if ((_condven=="L") && _codlis_catven) set_row(i, "@11g@2s", FLD(LF_CONDV, "CATVEN")); // categoria di vendita
|
||||
if (_condven=="C") set_row(i, "@1s @4g@6s @102g@1s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CONDV, "OBBLIG")); // cliente/fornitore e booleano
|
||||
if ((_condven=="L") || (_condven=="C")) set_row(i, "@105g@3s", FLD(LF_CONDV, "CODLISSUCC")); // codice successivo
|
||||
if (_gest_val) set_row(++i, "@3s @5g@15.5n @27g@d", FLD(LF_CONDV, "CODVAL"), FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM")); // cambio e valuta
|
||||
set_row(++i, ""); // salta una riga
|
||||
}
|
||||
}
|
||||
if (_righecomp) { // stampa della riga in forma completa
|
||||
// ...
|
||||
} else { // stampa della riga in forma abbreviata
|
||||
set_row(++i, "@1s @2g@20s @27g@1s @29g@15.5n @51g@18.2n @73g25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"),
|
||||
FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo...
|
||||
if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura
|
||||
set_row(++i, "@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio
|
||||
if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto
|
||||
if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES"));
|
||||
set_row(++i, ""); // salta una riga
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void TStampa_condizioni_vendita::process_link(int id, const char *text) {
|
||||
if (id== _rcondv_link_id) {
|
||||
TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore
|
||||
body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave
|
||||
TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione
|
||||
msg.send(); // invia il messaggio
|
||||
TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna
|
||||
ve2_2.run(); // lancia l'applicazione esterna
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
int ve3200(int argc, char **argv) {
|
||||
TStampa_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Stampa condizioni vendita");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <printapp.h>
|
||||
#include <mask.h>
|
||||
#include <config.h>
|
||||
#include <execp.h>
|
||||
#include <mailbox.h>
|
||||
|
||||
#include "veconf.h"
|
||||
#include "ve3200.h"
|
||||
|
||||
|
||||
|
||||
#define RCONDV_APP "ve2 -2"
|
||||
|
||||
#define DESTROY(x) { mask.field(x).reset_key(1); mask.hide(x); }
|
||||
#define KILL(x) { mask.field(x).reset_key(1); mask.disable(x); }
|
||||
|
||||
#define CVE 201
|
||||
#define VAL 202
|
||||
#define UMS1 203
|
||||
#define UMS2 204
|
||||
#define GMC1 205
|
||||
#define GMC2 206
|
||||
#define RFA 207
|
||||
#define ART1 208
|
||||
#define ART2 209
|
||||
|
||||
|
||||
|
||||
class TStampa_condizioni_vendita: public TPrint_application {
|
||||
TRelation *_rel; // relazione principale
|
||||
TString16 _condven; // stringa che indica il tipo di archivio
|
||||
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
|
||||
bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti
|
||||
bool _listval; // booleano di abilitazione della stampa dei listini in valuta
|
||||
bool _testacomp, _righecomp; // booleani di selezione della stampa completa per testata e righe;
|
||||
bool _testastamp; // booleano di testata completa già stampata
|
||||
bool _gest_val, _gest_um, _gest_sca, _gest_so; // booleani per l'abilitazione di valute, unità di misura, scaglioni e sconti/omaggi
|
||||
//int _rcondv_link_id; // id del link ipertestuale all'anagrafica di magazzino
|
||||
protected:
|
||||
virtual bool user_create(void);
|
||||
virtual bool user_destroy(void);
|
||||
virtual bool set_print(int);
|
||||
virtual void set_page(int, int);
|
||||
virtual void preprocess_header(void);
|
||||
virtual void preprocess_footer(void);
|
||||
//virtual void process_link(int, const char *);
|
||||
};
|
||||
|
||||
|
||||
|
||||
bool TStampa_condizioni_vendita::user_create() {
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
int indice; // indice delle variabili di configurazione per le abilitazioni
|
||||
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando
|
||||
else {
|
||||
TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio
|
||||
if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera
|
||||
}
|
||||
_condven.upper(); // rende la stringa upper-case
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
indice= A_LISTINI; // setta l'indice dell'archivio listini
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'C': // contratti
|
||||
indice= A_CONTRATTI; // setta l'indice dell'archivio contratti
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato
|
||||
else {
|
||||
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'O': // offerte
|
||||
indice= A_OFFERTE; // setta l'indice dell'archivio offerte
|
||||
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato
|
||||
else gotcha= TRUE;
|
||||
break;
|
||||
default: // messaggio di errore se si indica un archivio non valido
|
||||
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
|
||||
break;
|
||||
}
|
||||
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute
|
||||
_rel= new TRelation(LF_RCONDV); // crea la relazione principale
|
||||
_rel->add(LF_ANAGR, "CODART==CODRIGA", 1, LF_RCONDV, ART1);
|
||||
_rel->add(LF_ANAGR, "CODART==CODARTOM", 1, LF_RCONDV, ART2);
|
||||
_rel->add("%GMC", "CODTAB[1,3]==CODRIGA", 1, LF_RCONDV, GMC1);
|
||||
_rel->add("%GMC", "CODTAB[4,5]==CODRIGA", 1, LF_RCONDV, GMC2);
|
||||
_rel->add("%RFA", "CODTAB==CODRIGA", 1, LF_RCONDV, RFA);
|
||||
_rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
|
||||
_rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE);
|
||||
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV);
|
||||
_rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL);
|
||||
_rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1);
|
||||
_rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2);
|
||||
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
|
||||
add_file(LF_RCONDV); // notifica il file delle righe alla stampa
|
||||
enable_print_menu(); // abilita il menù di stampa
|
||||
enable_setprint_menu(); // abilita il menù di settaggio della stampa
|
||||
}
|
||||
return (gotcha);
|
||||
}
|
||||
|
||||
bool TStampa_condizioni_vendita::user_destroy() {
|
||||
delete _rel; // distrugge la relazione principale
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampa_condizioni_vendita::set_print(int) {
|
||||
TMask mask("ve3200x");
|
||||
mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio
|
||||
switch (_condven[0]) {
|
||||
case 'L': // listini
|
||||
DESTROY(F_C_COD); // eliminazione campi di altri archivi
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_O_COD);
|
||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute
|
||||
break;
|
||||
case 'C': // contratti
|
||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_LISTVALUTA);
|
||||
DESTROY(F_O_COD);
|
||||
if (!_codcon_codcf) { // disabilita condizionalmente i clienti/fornitori
|
||||
KILL(F_C_TIPOCF);
|
||||
KILL(F_C_CODCF);
|
||||
}
|
||||
break;
|
||||
case 'O': // offerte
|
||||
DESTROY(F_L_COD); // settaggio dei campi da eliminare
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_L_LISTVALUTA);
|
||||
DESTROY(F_C_TIPOCF);
|
||||
DESTROY(F_C_CODCF);
|
||||
DESTROY(F_C_COD);
|
||||
break;
|
||||
}
|
||||
if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
|
||||
_testastamp= FALSE; // azzera il flag di testa già stampata
|
||||
_listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta
|
||||
_testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata
|
||||
_righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe
|
||||
TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale
|
||||
TRectype da(rcondv.curr()); // prepara il record di inizio regione
|
||||
da.zero();
|
||||
da.put("TIPO", _condven);
|
||||
switch (_condven[0]) { // impostazione della chiave della testata
|
||||
case 'L': // listini
|
||||
if (_codlis_catven) da.put("CATVEN", mask.get(F_L_CATVEN));
|
||||
else da.blank("CATVEN"); // riempie il campo di blank se non è gestito
|
||||
da.blank("TIPOCF"); // i campi non gestiti vengono riempiti di blank
|
||||
da.blank("CODCF");
|
||||
da.put("COD", mask.get(F_L_COD));
|
||||
break;
|
||||
case 'C': // contratti
|
||||
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
||||
if (_codcon_codcf) {
|
||||
da.put("TIPOCF", mask.get(F_C_TIPOCF));
|
||||
da.put("CODCF", mask.get(F_C_CODCF));
|
||||
} else {
|
||||
da.blank("TIPOCF"); // riempie i campi di blank se non sono gestiti
|
||||
da.blank("CODCF");
|
||||
}
|
||||
da.put("COD", mask.get(F_C_COD));
|
||||
break;
|
||||
case 'O': // offerte
|
||||
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
|
||||
da.blank("TIPOCF");
|
||||
da.blank("CODCF");
|
||||
da.put("COD", mask.get(F_O_COD));
|
||||
break;
|
||||
}
|
||||
TRectype a(da); // prepara il record di fine regione
|
||||
if (!(mask.get_bool(F_TUTTERIGHE))) { // setta il filtro sulle righe solo se non è stato selezionato il flag di "tutte le righe"
|
||||
da.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
||||
da.put("CODRIGA", mask.get(F_DARIGA_A));
|
||||
a.put("TIPORIGA", mask.get(F_TIPORIGHE));
|
||||
a.put("CODRIGA", mask.get(F_ARIGA_A));
|
||||
}
|
||||
current_cursor()->setregion(da, a); // setta la regione sul cursore
|
||||
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
|
||||
disable_links(); // disabilita tutti i link ipertestuali
|
||||
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
|
||||
return TRUE;
|
||||
} else return FALSE;
|
||||
}
|
||||
|
||||
/* 1 1 1 1
|
||||
1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
|
||||
CF CODCF CV COD DESCR VALIN VALFIN IL UM SC SO ST OB SUC SEQ
|
||||
. ...... .. ... .................................................. ..-..-.. ..-..-.. . . . . . . ... ...
|
||||
CVA CAMBIO DATACAM
|
||||
... ...............,..... ..-..-..
|
||||
*/
|
||||
|
||||
/* 1 1 1 1
|
||||
1 2 3 4 5 6 7 8 9 0 1 2 3
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
|
||||
T CODRIGA UM S QLIM PREZZO SCONTO A CIVA PERCPROV
|
||||
. .................... .. . ...............,..... ..................,.. ......................... . .... .....,..
|
||||
UO QOM QBASE CODARTOM PROMAGGIO CODLOT E
|
||||
.. ...............,..... ...............,..... .................... ..................,.. ...... .
|
||||
*/
|
||||
|
||||
void TStampa_condizioni_vendita::preprocess_header() {
|
||||
reset_header(); // l'header viene resettato
|
||||
int i= 1; // contatore delle linee
|
||||
const long firm= get_firm(); // legge l'id della ditta corrente
|
||||
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
|
||||
ditte.zero(); // vuota il record
|
||||
ditte.put("CODDITTA", firm); // riempie la chiave
|
||||
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
|
||||
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
|
||||
set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
|
||||
}
|
||||
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
||||
i+=2; // stampa breve della testata, occupa almeno due linee
|
||||
set_header(i-1, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc.
|
||||
set_header(i, "@14g%3s @18g%s @69g%s @78g%s @87g%s @90g%s @93g%s @96g%s @99g%s @109g%s",
|
||||
(const char *)(condv.sget("COD")), (const char *)(condv.sget("DESCR")), (const char *)(condv.sget("VALIN")),
|
||||
(const char *)(condv.sget("VALFIN")), (const char *)(condv.sget("IMPLORDI")), (const char *)(condv.sget("GESTUM")),
|
||||
(const char *)(condv.sget("GESTSCAGL")), (const char *)(condv.sget("GESTSCO")), (const char *)(condv.sget("SCONST")),
|
||||
(const char *)(condv.sget("SEQRIC"))); // codice, descriz., validità e booleani
|
||||
if ((_condven=="L") && _codlis_catven) { // siamo sui listini?
|
||||
set_header(i-1, "@11gCV"); // setta l'header della categoria di vendita
|
||||
set_header(i, "@11g%s", (const char *)(condv.sget("CATVEN"))); // categoria di vendita
|
||||
}
|
||||
if (_condven=="C") { // siamo sui contratti?
|
||||
if (_codcon_codcf) { // è abilitato il codice cliente/fornitore?
|
||||
set_header(i-1, "@1gCF @4gCod.CF"); // setta l'header di clienti/fornitori
|
||||
set_header(i, "@1g%s @4g%6s", (const char *)(condv.sget("TIPOCF")), (const char *)(condv.sget("CODCF"))); // cliente/fornitore
|
||||
}
|
||||
set_header(i-1, "@102gOB"); // setta l'header di contratto obbligatorio
|
||||
set_header(i, "@102g%s", (const char *)(condv.sget("OBBLIG"))); // booleano
|
||||
}
|
||||
if (_condven=="L") { // siamo su listini?
|
||||
set_header(i-1, "@105gSuc"); // setta l'header per il codice di listino successivo
|
||||
set_header(i, "@105g%3s", (const char *)(condv.sget("CODLISSUCC"))); // codice successivo
|
||||
}
|
||||
if (_gest_val) { // c'è la gestione della valuta?
|
||||
i+=2; // occupa altre due linee
|
||||
set_header(i-1, "@1gVal @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione
|
||||
set_header(i, "@1g%s @5g%21s @27g%s", (const char *)condv.sget("CODVAL"), (const char *)condv.sget("CAMBIO"), (const char *)condv.sget("DATACAM")); // cambio e valuta
|
||||
}
|
||||
set_header(++i, ""); // salta una riga
|
||||
if (!_righecomp) { // impostazione dell'header delle righe se non c'è la stampa esaustiva
|
||||
set_header(++i, "@1gT @3gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo
|
||||
if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura
|
||||
set_header(++i, "@1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio
|
||||
if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto
|
||||
if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento
|
||||
}
|
||||
set_header(++i, ""); // aggiunge due linee vuote
|
||||
set_header(++i, "");
|
||||
}
|
||||
|
||||
void TStampa_condizioni_vendita::preprocess_footer() {
|
||||
reset_footer();
|
||||
int i= 1; // indice di linea
|
||||
set_footer(i, ""); // salta una linea
|
||||
set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina
|
||||
}
|
||||
|
||||
void TStampa_condizioni_vendita::set_page(int file, int) {
|
||||
if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare
|
||||
int i= 0; // indice di riga
|
||||
if ((printer().getcurrentpage()==1) && _testacomp && (!_testastamp)) { // stampa della testata in forma completa
|
||||
if ((_condven=="L") && _codlis_catven) set_row(++i, "Cat. di vendita: @2s @50s", FLD(LF_CONDV, "CATVEN"), FLD(-CVE, "S0"));
|
||||
if ((_condven=="C") && _codcon_codcf) set_row(++i, "Cliente/fornitore: @1s @6s @50s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CLIFO, "RAGSOC"));
|
||||
set_row(++i, "Codice: @3s @50s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR"));
|
||||
if (_gest_val) {
|
||||
set_row(++i, "Valuta: @3s @50s", FLD(LF_CONDV, "CODVAL"), FLD(-VAL, "S0"));
|
||||
set_row(++i, "Cambio: @15.5n (@d)", FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM"));
|
||||
}
|
||||
set_row(++i, "Validità: dal @d al @d", FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN"));
|
||||
set_row(++i, "Importi lordi: @f", FLD(LF_CONDV, "IMPLORDI"));
|
||||
set_row(++i, "Gestione unità di misura: @f", FLD(LF_CONDV, "GESTUM"));
|
||||
set_row(++i, "Gestione scaglioni: @f", FLD(LF_CONDV, "GESTSCAGL"));
|
||||
set_row(++i, "Gestione sconti: @f", FLD(LF_CONDV, "GESTSCO"));
|
||||
set_row(++i, "Gestione sconti standard: @f", FLD(LF_CONDV, "SCONST"));
|
||||
if (_condven=="C") set_row(++i, "Contratto obbligatorio: @f", FLD(LF_CONDV, "OBBLIG"));
|
||||
if (_condven=="L") set_row(++i, "Codice listino successivo: @3s", FLD(LF_CONDV, "CODLISSUCC"));
|
||||
set_row(++i, "Sequenza di ricerca: @4s", FLD(LF_CONDV, "SEQRIC"));
|
||||
set_row(++i, "");
|
||||
set_row(++i, "");
|
||||
_testastamp= TRUE;
|
||||
}
|
||||
if (_righecomp) { // stampa della riga in forma completa
|
||||
TLocalisamfile &rcondv= current_cursor()->file();
|
||||
TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
|
||||
TString tiporiga= rcondv.get("TIPORIGA");
|
||||
switch (tiporiga[0]) {
|
||||
case 'A':
|
||||
set_row(++i, "Riga: @1s @20s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||
set_row(++i, "Articolo: @50s", FLD(-ART1, "DESCR"));
|
||||
break;
|
||||
case 'G':
|
||||
set_row(++i, "Riga: @1s @3s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||
set_row(++i, "Gruppo merceologico: @50s", FLD(-GMC1, "S0"));
|
||||
break;
|
||||
case 'S':
|
||||
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||
set_row(++i, "Sottogruppo merceologico: @50s", FLD(-GMC2, "S0"));
|
||||
break;
|
||||
case 'R':
|
||||
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
|
||||
set_row(++i, "Raggruppamento fiscale: @50s", FLD(-RFA, "S0"));
|
||||
break;
|
||||
}
|
||||
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura: @2s @50s", FLD(LF_RCONDV, "UM"), FLD(-UMS1, "S0"));
|
||||
if (condv.get_bool("GESTSCAGL")) {
|
||||
set_row(++i, "Scaglione: @1s", FLD(LF_RCONDV, "NSCAGL"));
|
||||
set_row(++i, "Quantità limite scaglione: @15.5n", FLD(LF_RCONDV, "QLIM"));
|
||||
}
|
||||
set_row(++i, "Prezzo: @18.2n", FLD(LF_RCONDV, "PREZZO"));
|
||||
set_row(++i, "Sconto: @25s", FLD(LF_RCONDV, "SCONTO"));
|
||||
set_row(++i, "Addebito IVA: @f", FLD(LF_RCONDV, "ADDIVA"));
|
||||
set_row(++i, "Codice IVA: @4s", FLD(LF_RCONDV, "CODIVA"));
|
||||
set_row(++i, "Percentuale di provvigione: @5.2n", FLD(LF_RCONDV, "PERCPROVV"));
|
||||
if (condv.get_bool("GESTSCO")) {
|
||||
set_row(++i, "Quantità merce omaggio: @15.5n", FLD(LF_RCONDV, "QOM"));
|
||||
set_row(++i, "Quantità base: @15.5n", FLD(LF_RCONDV, "QBASE"));
|
||||
set_row(++i, "Articolo omaggio: @20s @50s", FLD(LF_RCONDV, "CODARTOM"), FLD(-ART2, "DESCR"));
|
||||
set_row(++i, "Prezzo omaggio: @18.2n", FLD(LF_RCONDV, "PROMAGGIO"));
|
||||
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura quantità omaggio: @2s @50s", FLD(LF_RCONDV, "UMOM"), FLD(-UMS2, "S0"));
|
||||
}
|
||||
// if ((_condven=="C") || (_condven=="O")) set_row(++i, "Codice lotto: @6s", FLD(LF_RCONDV, "CODLOTTO"));
|
||||
if (_condven=="O") set_row(++i, "Articolo in esaurimento: @f", FLD(LF_RCONDV, "ARTES"));
|
||||
set_row(++i, ""); // salta una riga
|
||||
} else { // stampa della riga in forma abbreviata
|
||||
set_row(++i, "@1g@1s @3g@20s @27g@1s @29g@15.5n @51g@18.2n @73g@25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"),
|
||||
FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo...
|
||||
if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura
|
||||
set_row(++i, "@1g@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio
|
||||
if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto
|
||||
if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES"));
|
||||
set_row(++i, ""); // salta una riga
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void TStampa_condizioni_vendita::process_link(int id, const char *text) {
|
||||
if (id== _rcondv_link_id) {
|
||||
TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore
|
||||
body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave
|
||||
TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione
|
||||
msg.send(); // invia il messaggio
|
||||
TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna
|
||||
ve2_2.run(); // lancia l'applicazione esterna
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
int ve3200(int argc, char **argv) {
|
||||
TStampa_condizioni_vendita a;
|
||||
|
||||
a.run(argc, argv, "Stampa condizioni vendita");
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user