Gestione movimeti di magazzino
Piu correzioni varie git-svn-id: svn://10.65.10.50/trunk@4768 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8c639919bd
commit
720b374a40
@ -184,6 +184,11 @@ BEGIN
|
||||
PROMPT 2 9 "Stato iniziale "
|
||||
FLAGS "U"
|
||||
FIELD S7[1,1]
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_I_DOC_I_1
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_I_DOC_I_1 CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare uno stato iniziale"
|
||||
END
|
||||
@ -192,6 +197,12 @@ STRING F_STATO_I_DOC_I_2 1
|
||||
BEGIN
|
||||
PROMPT 30 9 ""
|
||||
FLAGS "U"
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_I_DOC_I_2
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_I_DOC_I_2 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S7[2,2]
|
||||
END
|
||||
|
||||
@ -199,6 +210,12 @@ STRING F_STATO_I_DOC_I_3 1
|
||||
BEGIN
|
||||
PROMPT 39 9 ""
|
||||
FLAGS "U"
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_I_DOC_I_3
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_I_DOC_I_3 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S7[3,3]
|
||||
END
|
||||
|
||||
@ -206,6 +223,12 @@ STRING F_STATO_I_DOC_I_4 1
|
||||
BEGIN
|
||||
PROMPT 48 9 ""
|
||||
FLAGS "U"
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_I_DOC_I_4
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_I_DOC_I_4 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S7[4,4]
|
||||
END
|
||||
|
||||
@ -213,6 +236,12 @@ STRING F_STATO_I_DOC_I_5 1
|
||||
BEGIN
|
||||
PROMPT 57 9 ""
|
||||
FLAGS "U"
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_I_DOC_I_5
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_I_DOC_I_5 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S7[5,5]
|
||||
END
|
||||
|
||||
@ -221,6 +250,11 @@ BEGIN
|
||||
PROMPT 2 10 "Stato finale "
|
||||
FLAGS "U"
|
||||
FIELD S4
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_F_DOC_I
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_F_DOC_I CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare uno stato finale"
|
||||
END
|
||||
@ -248,6 +282,11 @@ BEGIN
|
||||
PROMPT 2 14 "Stato finale "
|
||||
FLAGS "U"
|
||||
FIELD S9
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_F_DOC_F
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_F_DOC_F CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare uno stato finale"
|
||||
END
|
||||
@ -298,7 +337,7 @@ END
|
||||
|
||||
STRING F_APPLICAZIONE 20
|
||||
BEGIN
|
||||
PROMPT 2 19 "Applicazione esterna"
|
||||
PROMPT 2 19 "Applicazione "
|
||||
FIELD S3
|
||||
END
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define F_SUFFISSO 106
|
||||
#define F_ULTDATA 107
|
||||
#define F_ANNO 108
|
||||
#define F_TIPO 109
|
||||
#define F_TIPODOC1 110
|
||||
#define F_DESDOC1 111
|
||||
#define F_TIPODOC2 112
|
||||
|
224
ve/batbnum.uml
224
ve/batbnum.uml
@ -14,12 +14,6 @@ PAGE "Numerazione documenti" -1 -1 60 14
|
||||
FLAG "R"
|
||||
END
|
||||
|
||||
// GROUPBOX DLG_NULL 84 13
|
||||
// BEGIN
|
||||
// PROMPT 1 5 ""
|
||||
// FLAG "R"
|
||||
// END
|
||||
|
||||
STRING F_CODTAB 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cod. numerazione "
|
||||
@ -81,26 +75,30 @@ PAGE "Tipi documento validi" -1 -1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 70 15
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
// FLAG "R"
|
||||
PROMPT 1 1 "Tipi di documento validi per la numerazione"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
LIST F_TIPO 24
|
||||
BEGIN
|
||||
PROMPT 2 2 "Tipi di documento validi per la numerazione"
|
||||
PROMPT 2 2 "Tipo dei documenti "
|
||||
FIELD I1
|
||||
ITEM "0|Altro"
|
||||
ITEM "1|Bolla"
|
||||
ITEM "2|Fattura"
|
||||
ITEM "3|Ordine"
|
||||
END
|
||||
|
||||
STRING F_TIPODOC1 4
|
||||
BEGIN
|
||||
PROMPT 2 4 ""
|
||||
FLAGS "U"
|
||||
USE %TIP
|
||||
USE %TIP SELECT I1==#F_TIPO
|
||||
INPUT CODTAB F_TIPODOC1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC1 CODTAB
|
||||
OUTPUT F_DESDOC1 S0
|
||||
HELP "Tipo di documento 1"
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[1,4]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
@ -108,125 +106,255 @@ PAGE "Tipi documento validi" -1 -1 60 14
|
||||
STRING F_DESDOC1 50
|
||||
BEGIN
|
||||
PROMPT 12 4 ""
|
||||
USE %TIP KEY 2
|
||||
USE %TIP KEY 2 SELECT I1==#F_TIPO
|
||||
INPUT S0 F_DESDOC1
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_TIPODOC1 CODTAB
|
||||
OUTPUT F_DESDOC1 S0
|
||||
HELP "Tipo di documento 1"
|
||||
COPY OUTPUT F_TIPODOC1
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC2 4
|
||||
BEGIN
|
||||
PROMPT 2 6 ""
|
||||
PROMPT 2 5 ""
|
||||
FLAGS "U"
|
||||
USE %TIP
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC2
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC2 CODTAB
|
||||
OUTPUT F_DESDOC2 S0
|
||||
HELP "Tipo di documento 2"
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[5,8]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC2 50
|
||||
BEGIN
|
||||
PROMPT 12 6 ""
|
||||
USE %TIP KEY 2
|
||||
PROMPT 12 5 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC2
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_TIPODOC2 CODTAB
|
||||
OUTPUT F_DESDOC2 S0
|
||||
HELP "Tipo di documento 2"
|
||||
COPY OUTPUT F_TIPODOC2
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC3 4
|
||||
BEGIN
|
||||
PROMPT 2 8 ""
|
||||
PROMPT 2 6 ""
|
||||
FLAGS "U"
|
||||
USE %TIP
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC3
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC3 CODTAB
|
||||
OUTPUT F_DESDOC3 S0
|
||||
HELP "Tipo di documento 3"
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[9,12]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC3 50
|
||||
BEGIN
|
||||
PROMPT 12 8 ""
|
||||
USE %TIP KEY 2
|
||||
PROMPT 12 6 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC3
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_TIPODOC3 CODTAB
|
||||
OUTPUT F_DESDOC3 S0
|
||||
HELP "Tipo di documento 3"
|
||||
COPY OUTPUT F_TIPODOC3
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC4 4
|
||||
BEGIN
|
||||
PROMPT 2 10 ""
|
||||
PROMPT 2 7 ""
|
||||
FLAGS "U"
|
||||
USE %TIP
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC4
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC4 CODTAB
|
||||
OUTPUT F_DESDOC4 S0
|
||||
HELP "Tipo di documento 4"
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[13,16]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC4 50
|
||||
BEGIN
|
||||
PROMPT 12 10 ""
|
||||
USE %TIP KEY 2
|
||||
PROMPT 12 7 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC4
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_TIPODOC4 CODTAB
|
||||
OUTPUT F_DESDOC4 S0
|
||||
HELP "Tipo di documento 4"
|
||||
COPY OUTPUT F_TIPODOC4
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC5 4
|
||||
BEGIN
|
||||
PROMPT 2 12 ""
|
||||
PROMPT 2 8 ""
|
||||
FLAGS "U"
|
||||
USE %TIP
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC5
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC5 CODTAB
|
||||
OUTPUT F_DESDOC5 S0
|
||||
HELP "Tipo di documento 5"
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[17,20]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC5 50
|
||||
BEGIN
|
||||
PROMPT 12 12 ""
|
||||
USE %TIP KEY 2
|
||||
PROMPT 12 8 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC5
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_TIPODOC5 CODTAB
|
||||
OUTPUT F_DESDOC5 S0
|
||||
HELP "Tipo di documento 5"
|
||||
COPY OUTPUT F_TIPODOC5
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC6 4
|
||||
BEGIN
|
||||
PROMPT 2 9 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC6
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC6 CODTAB
|
||||
OUTPUT F_DESDOC6 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[21,24]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC6 50
|
||||
BEGIN
|
||||
PROMPT 12 9 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC6
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC6
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC7 4
|
||||
BEGIN
|
||||
PROMPT 2 10 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC7
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC7 CODTAB
|
||||
OUTPUT F_DESDOC7 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[25,28]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC7 50
|
||||
BEGIN
|
||||
PROMPT 12 10 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC7
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC7
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC8 4
|
||||
BEGIN
|
||||
PROMPT 2 11 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC8
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC8 CODTAB
|
||||
OUTPUT F_DESDOC8 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[29,32]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC8 50
|
||||
BEGIN
|
||||
PROMPT 12 11 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC8
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC8
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC9 4
|
||||
BEGIN
|
||||
PROMPT 2 12 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC9
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC9 CODTAB
|
||||
OUTPUT F_DESDOC9 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[33,36]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC9 50
|
||||
BEGIN
|
||||
PROMPT 12 12 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC9
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC9
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC10 4
|
||||
BEGIN
|
||||
PROMPT 2 13 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC10
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC10 CODTAB
|
||||
OUTPUT F_DESDOC10 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[37,40]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC10 50
|
||||
BEGIN
|
||||
PROMPT 12 13 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC10
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC10
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
|
@ -26,7 +26,7 @@ BEGIN
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESSTA S0
|
||||
KEY 1
|
||||
FLAG "UZ"
|
||||
FLAG "U"
|
||||
END
|
||||
|
||||
STRING F_DESSTA 50
|
||||
|
@ -8,3 +8,7 @@
|
||||
#define F_RIFERIMENTO 108
|
||||
#define F_SPESEAUT 109
|
||||
#define F_TIPO 110
|
||||
#define F_MOVMAG 111
|
||||
#define F_STATO_MOV 112
|
||||
#define F_CAUS_MAG 113
|
||||
#define F_DESCAUS_MAG 114
|
||||
|
@ -72,9 +72,19 @@ BEGIN
|
||||
WARNING "Il numero di copie deve essere positivo"
|
||||
END
|
||||
|
||||
LIST F_TIPO 24
|
||||
BEGIN
|
||||
PROMPT 2 12 "Tipo del documento "
|
||||
FIELD I1
|
||||
ITEM "0|Altro" MESSAGE ENABLE,2@
|
||||
ITEM "1|Bolla" MESSAGE CLEAR,2@
|
||||
ITEM "2|Fattura" MESSAGE ENABLE,2@
|
||||
ITEM "3|Ordine" MESSAGE CLEAR,2@
|
||||
END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 2 12 "Codice causale "
|
||||
PROMPT 2 13 "Codice causale contabile "
|
||||
FIELD S6
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CODCAUS
|
||||
@ -83,12 +93,12 @@ BEGIN
|
||||
OUTPUT F_CODCAUS CODCAUS
|
||||
OUTPUT F_DESCAUS DESCR
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DESCAUS 50
|
||||
BEGIN
|
||||
PROMPT 2 13 "Descrizione causale "
|
||||
FLAG "U"
|
||||
PROMPT 2 14 "Descrizione "
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DESCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
@ -96,6 +106,7 @@ BEGIN
|
||||
OUTPUT F_DESCAUS DESCR
|
||||
OUTPUT F_CODCAUS CODCAUS
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_SPESEAUT
|
||||
@ -104,16 +115,58 @@ BEGIN
|
||||
FIELD B0
|
||||
END
|
||||
|
||||
LIST F_TIPO 10
|
||||
BOOLEAN F_MOVMAG
|
||||
BEGIN
|
||||
PROMPT 2 17 "Tipo del documento "
|
||||
FIELD I1
|
||||
ITEM "0|Altro"
|
||||
ITEM "1|Fattura"
|
||||
ITEM "2|Bolla"
|
||||
ITEM "3|Ordine"
|
||||
PROMPT 2 16 "Movimenti di magazzino a partire dallo stato "
|
||||
FIELD B1
|
||||
MESSAGE FALSE CLEAR,1@
|
||||
MESSAGE TRUE ENABLE,1@
|
||||
END
|
||||
|
||||
STRING F_STATO_MOV 1
|
||||
BEGIN
|
||||
PROMPT 50 16 ""
|
||||
FIELD S7
|
||||
USE %STD
|
||||
INPUT CODTAB F_STATO_MOV
|
||||
DISPLAY "Stato" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO_MOV CODTAB
|
||||
CHECKYTPE NORMAL
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_CAUS_MAG 4
|
||||
BEGIN
|
||||
PROMPT 2 17 "Codice causale magazzino "
|
||||
FIELD S8
|
||||
USE CAU
|
||||
INPUT CODTAB F_CAUS_MAG
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CAUS_MAG CODTAB
|
||||
OUTPUT F_DESCAUS_MAG S0
|
||||
CHECKYTPE REQUIRED
|
||||
FLAGS "U"
|
||||
ADD RUN mg0 -0 CAU
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESCAUS_MAG 50
|
||||
BEGIN
|
||||
PROMPT 2 18 "Descrizione "
|
||||
USE CAU KEY 2
|
||||
INPUT S0 F_DESCAUS_MAg
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CAUS_MAG
|
||||
ADD RUN mg0 -0 CAU
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
@ -180,10 +180,8 @@ UMPNETTO = S_NORMALE //2700
|
||||
PNETTO = S_NORMALE //2700
|
||||
DESUMPNETTO = S_NASCOSTO //2700
|
||||
NCOLLI = S_NORMALE //2800
|
||||
CAUSMAG1 = S_NASCOSTO //2900
|
||||
DESCRMAG1 = S_NASCOSTO //2900
|
||||
CAUSMAG2 = S_NASCOSTO //2900
|
||||
DESCRMAG2 = S_NASCOSTO //2900
|
||||
CAUSMAG = S_OBBLIGATORIO //2900
|
||||
DESCRMAG = S_NORMALE //2900
|
||||
BLANK = S_DISABILITATO //4000
|
||||
CODNOTE = S_NORMALE //2500
|
||||
NOTECLI = S_NORMALE //2500
|
||||
@ -194,7 +192,7 @@ NDEFAULTS=1
|
||||
1=F_CAUSTRASP|VEN
|
||||
|
||||
[SHEET]
|
||||
NCOLS=14
|
||||
NCOLS=17
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
@ -209,6 +207,9 @@ NCOLS=14
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_CODIVA
|
||||
15=FR_CAUS
|
||||
16=FR_CODMAGC
|
||||
17=FR_CODDEPC
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=9
|
||||
@ -264,7 +265,7 @@ NHANDLER=0
|
||||
4000 = S_NORMALE
|
||||
|
||||
[ORDINEGRUPPI]
|
||||
NGROUPS=29
|
||||
NGROUPS=30
|
||||
1=100
|
||||
2=200
|
||||
3=300
|
||||
@ -294,4 +295,5 @@ NGROUPS=29
|
||||
27=1700
|
||||
28=2500
|
||||
29=2400
|
||||
30=2900
|
||||
|
||||
|
@ -133,10 +133,8 @@ UMPNETTO = S_NORMALE //2700
|
||||
PNETTO = S_NORMALE //2700
|
||||
DESUMPNETTO = S_NASCOSTO //2700
|
||||
NCOLLI = S_NORMALE //2800
|
||||
CAUSMAG1 = S_NASCOSTO //2900
|
||||
DESCRMAG1 = S_NASCOSTO //2900
|
||||
CAUSMAG2 = S_NASCOSTO //2900
|
||||
DESCRMAG2 = S_NASCOSTO //2900
|
||||
CAUSMAG = S_OBBLIGATORIO //2900
|
||||
DESCRMAG = S_NORMALE //2900
|
||||
|
||||
|
||||
[DEFAULT]
|
||||
@ -144,7 +142,7 @@ NDEFAULTS=1
|
||||
1=F_CAUSTRASP|RES
|
||||
|
||||
[SHEET]
|
||||
NCOLS=11
|
||||
NCOLS=14
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
@ -156,6 +154,9 @@ NCOLS=11
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_CODIVA
|
||||
12=FR_CAUS
|
||||
13=FR_CODMAGC
|
||||
14=FR_CODDEPC
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=1
|
||||
|
@ -70,7 +70,6 @@ public:
|
||||
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock);
|
||||
int read(char tipo, long codice, word op = _isequal, word lockop = _nolock);
|
||||
virtual int remove(TBaseisamfile& f) const;
|
||||
// int remove() const { return TMultiple_rectype::remove();}
|
||||
|
||||
TCli_for(char tipo = ' ', long codice = 0L);
|
||||
TCli_for(const TRectype & rec);
|
||||
|
@ -1,3 +1,3 @@
|
||||
33
|
||||
0
|
||||
$doc|0|0|386|31|Documenti di vendita|NDOC||
|
||||
$doc|0|0|391|31|Documenti di vendita|NDOC||
|
||||
|
@ -1,7 +1,7 @@
|
||||
33
|
||||
68
|
||||
CODNUM|1|4|0|Codice della numerazione
|
||||
ANNO|2|4|0|Anno/Esercizio
|
||||
ANNO|2|4|0|Anno
|
||||
PROVV|1|1|0|Tipo numerazione <P>rovvisorio <D>efinitivo
|
||||
NDOC|3|7|0|Numero documento
|
||||
TIPODOC|1|4|0|Tipo documento
|
||||
@ -61,8 +61,8 @@ TARA|4|15|2|Tara
|
||||
UMPNETTO|1|2|0|Unità di misura per il peso netto
|
||||
PNETTO|4|15|2|Peso netto
|
||||
NCOLLI|3|7|0|Numero di colli
|
||||
CAUSMAG1|1|3|0|Causale di magazzino 1
|
||||
CAUSMAG2|1|3|0|Causale di magazzino 2
|
||||
CAUSMAG|1|4|0|Causale di magazzino
|
||||
MOVMAG|3|7|0|Numero movimento di magazzino
|
||||
CODNOTE|1|2|0|Codice note cliente
|
||||
NOTE|11|10|0|Note
|
||||
G1|11|10|0|Campo generale 1
|
||||
|
@ -1,3 +1,3 @@
|
||||
34
|
||||
0
|
||||
$rdoc|0|0|278|31|Righe documenti di vendita|NDOC*3||
|
||||
$rdoc|0|0|305|31|Righe documenti di vendita|NDOC*3||
|
||||
|
10
ve/f34.trr
10
ve/f34.trr
@ -1,6 +1,6 @@
|
||||
34
|
||||
32
|
||||
CODNUM|1|4|0|
|
||||
36
|
||||
CODNUM|1|4|0|Codice Numeriazione
|
||||
ANNO|2|4|0|Anno
|
||||
PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva
|
||||
NDOC|3|7|0|N. documento
|
||||
@ -10,6 +10,8 @@ TIPORIGA|1|3|0|Tipo riga
|
||||
GENERATA|8|1|0|Riga generata
|
||||
CODMAG|1|5|0|Codice magazzino e deposito
|
||||
CODART|1|20|0|Codice articolo, codice spesa o codice prestazione
|
||||
CODARTMAG|1|20|0|(=CODART se codice articolo di magazzino, vuoto altrimenti)
|
||||
CHECKED|8|1|0|CODARTMAG verrificato
|
||||
LIVELLO|1|15|0|Codice di giacenza
|
||||
DESCR|1|50|0|Descrizione
|
||||
DESCLUNGA|8|1|0|Descrizione estesa caricata
|
||||
@ -30,7 +32,9 @@ IMPFISUN|8|1|0|Flag importo fisso unitario
|
||||
CODIVA|1|4|0|Codice IVA
|
||||
ADDIVA|8|1|0|Addebito IVA
|
||||
ASPBENI|1|2|0|Aspetto dei beni
|
||||
G1|11|10|0|????
|
||||
PSPESA|4|5|2|Percentuale di spesa
|
||||
CAUSMAG|1|4|0|Causale di magazzino
|
||||
MOVMAG|3|7|0|Numero di movimento id magazzino
|
||||
CODMAGC|1|5|0|Codice di magazzino per causale collegata
|
||||
1
|
||||
CODNUM+ANNO+PROVV+NDOC+NRIGA|
|
||||
|
@ -177,10 +177,6 @@ UMPNETTO = S_NORMALE //2700
|
||||
PNETTO = S_NORMALE //2700
|
||||
DESUMPNETTO = S_NASCOSTO //2700
|
||||
NCOLLI = S_NORMALE //2800
|
||||
CAUSMAG1 = S_NASCOSTO //2900
|
||||
DESCRMAG1 = S_NASCOSTO //2900
|
||||
CAUSMAG2 = S_NASCOSTO //2900
|
||||
DESCRMAG2 = S_NASCOSTO //2900
|
||||
BLANK = S_DISABILITATO //4000
|
||||
//NOTECLI = S_NORMALE //2500
|
||||
//RAGGR = S_NORMALE
|
||||
|
@ -242,7 +242,7 @@ bool TCond_vendita::cerca( int tiporicerca )
|
||||
{
|
||||
case 'A':
|
||||
{
|
||||
const TString codriga = riga().get(FR_CODART);
|
||||
const TString codriga = riga().get(FR_CODARTMAG);
|
||||
|
||||
_rcondv.put( "CODRIGA", codriga);
|
||||
if (_rcondv.read() != NOERR &&
|
||||
@ -307,7 +307,7 @@ bool TCond_vendita::cerca( int tiporicerca )
|
||||
void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
|
||||
{
|
||||
TString codart = anamag().get( "CODART" );
|
||||
const TString codriga = riga().get( FR_CODART );
|
||||
const TString codriga = riga().get( FR_CODARTMAG );
|
||||
|
||||
_ivarid = clifo().vendite().get_bool(CFV_IVARID);
|
||||
_load_mask = !load_um_only && !load_scagl_only;
|
||||
@ -531,14 +531,14 @@ void TCond_vendita::update_omaggi(bool full)
|
||||
TDocumento & doc = testa().doc();
|
||||
bool update = FALSE;
|
||||
|
||||
if (doc[current_doc_row].tipo().tipo() == RIGA_OMAGGI)
|
||||
if (doc[current_doc_row].is_omaggio())
|
||||
return;
|
||||
|
||||
if (current_doc_row < doc.rows())
|
||||
{
|
||||
TRiga_documento & r = doc[current_doc_row + 1];
|
||||
|
||||
if (r.tipo().tipo() == RIGA_OMAGGI && r.generata())
|
||||
if (r.is_omaggio() && r.is_generata())
|
||||
{
|
||||
doc.destroy_row(current_doc_row + 1, TRUE);
|
||||
sh.destroy(current_doc_row, FALSE);
|
||||
@ -557,23 +557,17 @@ void TCond_vendita::update_omaggi(bool full)
|
||||
TConfig cnf(CONFIG_STUDIO, "ve");
|
||||
tipo_riga = cnf.get("TROMAGGI");
|
||||
}
|
||||
|
||||
if (codart_omaggio.not_empty() && tipo_riga.not_empty())
|
||||
{
|
||||
TRiga_documento & r = doc.insert_row(current_doc_row + 1, tipo_riga);
|
||||
r.set_generata();
|
||||
TString16 codmag(_riga->get(FR_CODMAG)); codmag << _riga->get(FR_CODDEP);
|
||||
r.put("CODMAG", codmag);
|
||||
r.put("CODART", codart_omaggio);
|
||||
anamag().setkey(1);
|
||||
anamag().put("CODART", codart_omaggio);
|
||||
if (anamag().read() == NOERR)
|
||||
r.put("DESCR", anamag().get("DESCR"));
|
||||
r.put("UMQTA", _rcondv.get("UMOM"));
|
||||
|
||||
qta /= _rcondv.get_real("QBASE");
|
||||
qta.floor();
|
||||
qta *= _rcondv.get_real("QOM");
|
||||
if (codart_omaggio.not_empty() && tipo_riga.not_empty() && qta != ZERO)
|
||||
{
|
||||
TRiga_documento & r = doc.insert_row(current_doc_row + 1, tipo_riga);
|
||||
r.generata();
|
||||
TString16 codmag(_riga->get(FR_CODMAG)); codmag << _riga->get(FR_CODDEP);
|
||||
r.put("CODMAG", codmag);
|
||||
r.put("CODART", codart_omaggio);
|
||||
r.put("UMQTA", _rcondv.get("UMOM"));
|
||||
r.put("QTA", qta);
|
||||
r.put("PREZZO", _rcondv.get("PROMAGGIO"));
|
||||
const TString16 codiva_cli(clifo().vendite().get(CFV_ASSFIS));
|
||||
@ -585,6 +579,7 @@ void TCond_vendita::update_omaggi(bool full)
|
||||
sh.insert(current_doc_row, FALSE);
|
||||
r.autoload(sh);
|
||||
sh.check_row(current_doc_row);
|
||||
r.autosave(sh);
|
||||
update = TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,10 @@
|
||||
#include "veini.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MODAUT_H
|
||||
#include <modaut.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MGLIB_H
|
||||
#include "..\mg\mglib.h"
|
||||
#endif
|
||||
@ -153,7 +157,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
if (r < app()._doc->rows())
|
||||
{
|
||||
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
||||
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
|
||||
if (riga.is_omaggio() && riga.is_generata())
|
||||
{
|
||||
ss.destroy(r + 1);
|
||||
app()._doc->destroy_row(r + 1, TRUE);
|
||||
@ -166,7 +170,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
|
||||
if (r < app()._doc->rows())
|
||||
{
|
||||
TRiga_documento & riga = (*(app()._doc))[r + 1];
|
||||
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
|
||||
if (riga.is_omaggio() && riga.is_generata())
|
||||
return FALSE;
|
||||
}
|
||||
TMask & emask = app().edit_mask();
|
||||
@ -193,23 +197,21 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
|
||||
// Ottengo la maschera
|
||||
TMask& m = f.mask( );
|
||||
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
if (key == K_TAB && f.to_check(key, TRUE))
|
||||
{
|
||||
TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
|
||||
if ( tabnum.good())
|
||||
{
|
||||
// Copio la descrizione della numerazione
|
||||
m.set( F_DESNUM, tabnum.get( "S0" ) );
|
||||
// Copio i tipi di documento validi per la numerazione
|
||||
const TString tipidocs( tabnum.get( "S2" ) );
|
||||
m.set( F_TIPIDOCS, tipidocs );
|
||||
TString16 curtipo( m.get( F_TIPODOC ) );
|
||||
|
||||
if (app()._cod_num)
|
||||
delete app()._cod_num;
|
||||
app()._cod_num = new TCodice_numerazione(tabnum.curr());
|
||||
TCodice_numerazione * c = app()._cod_num;
|
||||
m.set( F_DESNUM, c->descrizione());
|
||||
// Propone il primo tipo di documento come default
|
||||
m.set( F_TIPODOC, tipidocs.left( 4 ) );
|
||||
m.set( F_TIPODOC, c->tipo_doc(0));
|
||||
m.send_key( K_TAB, F_TIPODOC );
|
||||
// Se per questa numerazione h abilitata le numerazione provvisoria
|
||||
if ( tabnum.get_bool ( "B0" ) )
|
||||
if (c->num_provv())
|
||||
{
|
||||
// Setta di default la numerazione provvisoria
|
||||
m.set( F_PROVV, "P" );
|
||||
@ -227,7 +229,6 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
|
||||
else
|
||||
{
|
||||
m.set( F_DESNUM, "" );
|
||||
m.set( F_TIPIDOCS, "" );
|
||||
m.set( F_TIPODOC, "" );
|
||||
}
|
||||
}
|
||||
@ -331,35 +332,16 @@ bool TMotore_application::tip_handler( TMask_field& f, KEY key )
|
||||
TMask& m = f.mask( );
|
||||
if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty())
|
||||
{
|
||||
TString tipi_consentiti( m.get( F_TIPIDOCS ) );
|
||||
TString16 tipo( f.get( ) );
|
||||
tipo.trim( );
|
||||
bool tipo_valido = FALSE;
|
||||
for ( int i = 0; i < 10; i ++ )
|
||||
const TString16 tipo(f.get());
|
||||
TCodice_numerazione * c = app()._cod_num;
|
||||
int last = c->ntipi_doc();
|
||||
for (int i = 0; i < last; i++ )
|
||||
{
|
||||
TString16 curtipo( tipi_consentiti.mid( i * 4, 4 ) );
|
||||
curtipo.trim( );
|
||||
const TString16 curtipo(c->tipo_doc(i));
|
||||
if (curtipo == tipo)
|
||||
{
|
||||
tipo_valido = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( ! tipo_valido )
|
||||
{
|
||||
message_box( "Tipo non valido per la numerazione selezionata!" );
|
||||
f.set( "" );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if ( key == K_ENTER && m.is_running( ) )
|
||||
{ TString tipo( f.get( ) );
|
||||
if ( tipo.blank( ) )
|
||||
{
|
||||
message_box( "Occorre un tipo documento per inserire un documento!" );
|
||||
m.first_focus( F_TIPODOC );
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
return message_box( "Tipo non valido per la numerazione selezionata!" );
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -429,6 +411,8 @@ void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config
|
||||
}
|
||||
to_delete.reset(0);
|
||||
to_delete.reset(1);
|
||||
to_delete.set(sheet.cid2index(FR_CODARTMAG));
|
||||
to_delete.set(sheet.cid2index(FR_CHECKED));
|
||||
|
||||
const int sconto_col = sheet.cid2index(FR_SCONTO);
|
||||
if (to_delete[sconto_col] == FALSE)
|
||||
@ -601,6 +585,13 @@ TMask* TMotore_application::get_mask( int mode )
|
||||
msk1->enable(F_DESAG, gesage);
|
||||
msk1->enable(F_CODAGVIS, gesage);
|
||||
msk1->enable(F_DESAGVIS, gesage);
|
||||
const bool has_movmag = app().has_module(MGAUT, CHK_DONGLE) && _doc->tipo().mov_mag();
|
||||
short pos = msk1->id2pos(F_CAUSMAG);
|
||||
if (pos >= 0)
|
||||
msk1->fld(pos).show(has_movmag);
|
||||
pos = msk1->id2pos(F_DESCRMAG);
|
||||
if (pos >= 0)
|
||||
msk1->fld(pos).show(has_movmag);
|
||||
}
|
||||
else
|
||||
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
|
||||
@ -623,15 +614,10 @@ const char* TMotore_application::get_next_key( )
|
||||
{
|
||||
TToken_string key;
|
||||
TMask& m = curr_mask( );
|
||||
const TString value = m.get( F_CODNUM );
|
||||
const TString16 value = m.get( F_CODNUM );
|
||||
|
||||
if (value.not_empty())
|
||||
{
|
||||
TTable tabnum( "%NUM" );
|
||||
tabnum.zero( );
|
||||
tabnum.put( "CODTAB", value );
|
||||
if ( tabnum.read( ) == NOERR && tabnum.get_bool ( "B1" ))
|
||||
// Se per questa numerazione h abilitata le numerazione automatica
|
||||
if( _cod_num->auto_num())
|
||||
{
|
||||
TLocalisamfile doc(LF_DOC);
|
||||
doc.zero();
|
||||
@ -649,16 +635,11 @@ const char* TMotore_application::get_next_key( )
|
||||
|
||||
key.format( "%d|%d", F_NDOC, num);
|
||||
}
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
int TMotore_application::read( TMask& m )
|
||||
{
|
||||
// const int err = _doc->read(_doc->head());
|
||||
|
||||
// if ( err == NOERR )
|
||||
// {
|
||||
m.autoload(*_rel);
|
||||
_codnum = m.get(F_CODNUM);
|
||||
_tipodoc = m.get(F_TIPODOC);
|
||||
@ -677,8 +658,6 @@ int TMotore_application::read( TMask& m )
|
||||
rec.autoload(f);
|
||||
f.check_row(i - 1);
|
||||
}
|
||||
// }
|
||||
// return err;
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
@ -750,16 +729,20 @@ bool TMotore_application::user_create( )
|
||||
// Metto in relazione testata e righe
|
||||
_rel = new TRelation( LF_DOC );
|
||||
open_files(LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART, LF_TAB, LF_TABCOM, LF_CLIFO,
|
||||
LF_CFVEN, LF_INDSP, LF_OCCAS, 0);
|
||||
LF_CFVEN, LF_INDSP, LF_OCCAS, LF_MOVMAG, LF_RMOVMAG, 0);
|
||||
_doc = new TDocumento;
|
||||
_rel->lfile().set_curr(_doc);
|
||||
_doc->set_relation(_rel);
|
||||
_cod_num = NULL;
|
||||
|
||||
_condv = new TCond_vendita(&doc().clifor(), _config_ditta);
|
||||
_doc->set_condv(_condv);
|
||||
|
||||
_msk = new TMask("ve0100a");
|
||||
set_search_field(F_NDOC);
|
||||
|
||||
query_mask().set_handler( F_CODNUM, num_handler );
|
||||
query_mask().set_handler( F_TIPODOC, tip_handler );
|
||||
_occas_mask = new TMask("ve0100o");
|
||||
_occas_mask->set_handler( O_CODICE, occas_code_handler );
|
||||
TConfig utente( CONFIG_USER );
|
||||
@ -785,6 +768,8 @@ bool TMotore_application::user_destroy( )
|
||||
// Distruggo la maschera di modifica
|
||||
if ( _msk != NULL )
|
||||
delete _msk;
|
||||
if (_cod_num)
|
||||
delete _cod_num;
|
||||
|
||||
// Distruggo la relazione
|
||||
delete _rel;
|
||||
|
@ -69,14 +69,6 @@
|
||||
#include <msksheet.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100D_H
|
||||
#include "ve0100d.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VARMASK_H
|
||||
#include <varmask.h>
|
||||
#endif
|
||||
@ -100,6 +92,7 @@ class TMotore_application : public TRelation_application
|
||||
TArray _file; // Tutti i fiels da usare
|
||||
|
||||
TDocumento * _doc;
|
||||
TCodice_numerazione * _cod_num;
|
||||
|
||||
// Puntatore al profilo del documento caricato
|
||||
TConfig * _pro;
|
||||
|
@ -22,7 +22,6 @@ PAGE "Gestione documenti" 1 1 60 14
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
OUTPUT F_DESNUM S0
|
||||
OUTPUT F_TIPIDOCS S2
|
||||
CHECKTYPE FORCED
|
||||
FLAG "UPA"
|
||||
WARNING "Numerazione assente"
|
||||
@ -115,12 +114,5 @@ PAGE "Gestione documenti" 1 1 60 14
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_TIPIDOCS 40
|
||||
BEGIN
|
||||
PROMPT 2 10 ""
|
||||
FLAG "H"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -173,6 +173,9 @@ public:
|
||||
// OUTPUT
|
||||
void output( const TString& s ){ outline( s, "OU " ); };
|
||||
|
||||
// copy
|
||||
void copy( const TString& s ){ outline( s, "CO " ); };
|
||||
|
||||
// Funzioni per la lettura/scrittura di CURPAGE
|
||||
int page( ) { return _curpage; };
|
||||
void page( const int i ){ _curpage = i; };
|
||||
@ -431,6 +434,7 @@ class TField : public TObject
|
||||
int _x, _y;
|
||||
TString _prompt, _flag, _help, _warning, _fieldname;
|
||||
TToken_string _use, _input, _display, _output, _special, _items, _configs;
|
||||
TToken_string _copy;
|
||||
|
||||
public:
|
||||
|
||||
@ -477,6 +481,7 @@ public:
|
||||
void input( TToken_string& input ){ _input = input; }
|
||||
void display( TToken_string& display ){ _display = display; }
|
||||
void output( TToken_string& output ){ _output = output; }
|
||||
void copy( TToken_string& copy ){ _copy = copy; }
|
||||
void special( TToken_string& special ){ _special = special; }
|
||||
void items( TToken_string& items ){ _items = items; }
|
||||
void configs( TToken_string& configs ){ _configs = configs; }
|
||||
@ -484,6 +489,7 @@ public:
|
||||
TToken_string& input( ){ return _input; }
|
||||
TToken_string& display( ){ return _display; }
|
||||
TToken_string& output( ){ return _output; }
|
||||
TToken_string& copy( ){ return _copy; }
|
||||
TToken_string& special( ){ return _special; }
|
||||
TToken_string& items( ){ return _items; }
|
||||
TToken_string& configs( ){ return _configs; }
|
||||
@ -619,6 +625,8 @@ TField::TField( TString& campo, TConfig& pro ) : _nome( campo )
|
||||
_display.separator( '~' );
|
||||
_output = pro.get( "OUTPUT", campo );
|
||||
_output.separator( '~' );
|
||||
_copy = pro.get( "COPY", campo );
|
||||
_copy.separator( '~' );
|
||||
_special = pro.get( "SPECIAL", campo );
|
||||
_special.separator( '~' );
|
||||
_configs = pro.get( "CONFIGS", campo );
|
||||
@ -653,6 +661,8 @@ TField::TField( )
|
||||
_display.separator( '~' );
|
||||
_output = "";
|
||||
_output.separator( '~' );
|
||||
_copy = "";
|
||||
_copy.separator( '~' );
|
||||
_special = "";
|
||||
_special.separator( '~' );
|
||||
_configs = "";
|
||||
@ -682,6 +692,7 @@ TObject* TField::dup() const
|
||||
f->_input = _input;
|
||||
f->_display = _display;
|
||||
f->_output = _output;
|
||||
f->_copy = _copy;
|
||||
f->_special = _special;
|
||||
f->_items = _items;
|
||||
f->_configs = _configs;
|
||||
@ -804,6 +815,7 @@ void TField::genera( )
|
||||
if ( !_input.blank( ) ) m.input( _input );
|
||||
if ( !_display.blank( ) ) m.display( _display );
|
||||
if ( !_output.blank( ) ) m.output( _output );
|
||||
if ( !_copy.blank( ) ) m.copy( _copy );
|
||||
if ( !_help.blank( ) ) m.help( _help );
|
||||
if ( !_warning.blank( ) ) m.warning( _warning );
|
||||
if ( !_special.blank( ) ) m.outline( _special );
|
||||
@ -956,6 +968,8 @@ void TMask_generator::carica_dati_campi( const TFilename& fn, TAssoc_array& a )
|
||||
campo->display( (TToken_string & )value );
|
||||
else if( key == "OUTPUT" )
|
||||
campo->output( (TToken_string & )value );
|
||||
else if( key == "COPY" )
|
||||
campo->copy( (TToken_string & )value );
|
||||
else if( key == "WARNING" )
|
||||
campo->warning( value );
|
||||
else if( key == "HELP" )
|
||||
@ -1280,13 +1294,13 @@ void TMask_generator::genera( const TString& profilo )
|
||||
_m->flag( "DG" );
|
||||
_m->end( );
|
||||
|
||||
_m->control( T_STRINGA, F_ANNO, 4 );
|
||||
_m->begin( );
|
||||
_m->prompt( 66, 3, "Es. " );
|
||||
_m->field( "ANNO" );
|
||||
_m->flag( "GD" );
|
||||
_m->message( "CO,9@" );
|
||||
_m->end( );
|
||||
// _m->control( T_STRINGA, F_ANNO, 4 );
|
||||
// _m->begin( );
|
||||
// _m->prompt( 66, 3, "Es. " );
|
||||
// _m->field( "ANNO" );
|
||||
// _m->flag( "GD" );
|
||||
// _m->message( "CO,9@" );
|
||||
// _m->end( );
|
||||
|
||||
_m->control( T_STRINGA, F_CODCF, 6 );
|
||||
_m->begin( );
|
||||
|
@ -1513,51 +1513,37 @@ SIZE=0700
|
||||
WARNING=Numero di colli errato o non presente !!!
|
||||
HELP=Inserisci il numero dei colli
|
||||
|
||||
[CAUSMAG1]
|
||||
[CAUSMAG]
|
||||
GROUP=2900
|
||||
X=2
|
||||
Y=0
|
||||
FIELDNAME=CAUSMAG1
|
||||
MSKID=F_CAUSMAG1
|
||||
FIELDNAME=CAUSMAG
|
||||
MSKID=F_CAUSMAG
|
||||
TYPE=T_STRINGA
|
||||
PROMPT="Causale mag. 1 "
|
||||
SIZE=3
|
||||
PROMPT="Causale magazzino "
|
||||
USE=%CAU
|
||||
INPUT=CODTAB F_CAUSMAG
|
||||
DISPLAY="Codice" CODTAB~"Descrizione@50" S0
|
||||
OUTPUT=F_CAUSMAG CODTAB~F_DESCRMAG S0
|
||||
WARNING=Causale di magazzino non trovata
|
||||
SIZE=4
|
||||
FLAG=U
|
||||
WARNING=Codice causale non trovato
|
||||
HELP=Inserisci il codice della causale
|
||||
|
||||
[DESCRMAG1]
|
||||
[DESCRMAG]
|
||||
GROUP=2900
|
||||
X=24
|
||||
X=27
|
||||
Y=0
|
||||
MSKID=F_DESCRMAG1
|
||||
MSKID=F_DESCRMAG
|
||||
TYPE=T_STRINGA
|
||||
PROMPT="Causale di magazzino 1 "
|
||||
PROMPT=""
|
||||
USE=%CAU KEY 2
|
||||
INPUT=S0 F_DESCRMAG
|
||||
DISPLAY="Descrizione@50" S0~"Codice" CODTAB
|
||||
COPY=OU F_CAUSMAG
|
||||
WARNING=Causale di magazzino non trovata
|
||||
SIZE=50
|
||||
FLAG=U
|
||||
|
||||
[CAUSMAG2]
|
||||
GROUP=2900
|
||||
X=2
|
||||
Y=1
|
||||
FIELDNAME=CAUSMAG2
|
||||
MSKID=F_CAUSMAG2
|
||||
TYPE=T_STRINGA
|
||||
PROMPT="Causale mag.2 "
|
||||
SIZE=3
|
||||
FLAG=U
|
||||
WARNING=Codice causale non trovato
|
||||
HELP=Inserisci il codice della causale
|
||||
|
||||
[DESCRMAG2]
|
||||
GROUP=2900
|
||||
X=24
|
||||
Y=1
|
||||
MSKID=F_DESCRMAG2
|
||||
TYPE=T_STRINGA
|
||||
PROMPT="Causale di magazzino 2 "
|
||||
SIZE=50
|
||||
FLAG=U
|
||||
|
||||
[BLANK]
|
||||
GROUP=4000
|
||||
|
@ -24,3 +24,8 @@ IMPFISSO|3|1802|Importo Fisso|18
|
||||
CODIVA|2|4|Cod.IVA|4
|
||||
ADDIVA|4||Addebito IVA|1
|
||||
ASPBENI|2|3|Aspetto beni|3
|
||||
CODCAUS|2|3|Causale Mag.|12
|
||||
CODMAGC[1,3]|2|3|Mag.Coll.|9
|
||||
CODMAGC[4,5]|2|2|Dep.Coll.|9
|
||||
CODARTMAG|2|20|Cod. Art. Mag.|20
|
||||
CHECKED|4|10|Controllato|11
|
||||
|
@ -174,8 +174,6 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
|
||||
read(nomeform);
|
||||
_cli_loaded= FALSE;
|
||||
_is_lista = FALSE;
|
||||
_condv = new TCond_vendita(_cliente);
|
||||
|
||||
_condv = new TCond_vendita(NULL);
|
||||
_doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso
|
||||
_condv->set_clifo(&_doc->clifor());
|
||||
|
@ -35,8 +35,8 @@
|
||||
#include <progind.h>
|
||||
#include <modaut.h>
|
||||
#include "../cg/cg2101.h"
|
||||
#include "../cg/cglib.h"
|
||||
#include "../cg/saldacon.h"
|
||||
#include "../cg/cg2103.h"
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include "velib.h"
|
||||
#include "ve6100a.h"
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include <effetti.h>
|
||||
#include <reffetti.h>
|
||||
|
||||
#include "../cg/saldacon.h"
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include "../ef/ef0101.h"
|
||||
#include "velib.h"
|
||||
#include "sconti.h"
|
||||
|
38
ve/velib.h
38
ve/velib.h
@ -25,8 +25,8 @@
|
||||
#include "clifor.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PAGAMENT_H
|
||||
#include "../cg/pagament.h"
|
||||
#ifndef __CGPAGAME_H
|
||||
#include "../cg/cgpagame.h"
|
||||
#endif
|
||||
|
||||
#define RIGA_MERCE 'M'
|
||||
@ -35,6 +35,7 @@
|
||||
#define RIGA_SCONTI 'C'
|
||||
#define RIGA_OMAGGI 'O'
|
||||
#define RIGA_DESCRIZIONI 'D'
|
||||
#define MAX_TIPI_DOC 10
|
||||
|
||||
class TDocumento;
|
||||
class TRiga_documento;
|
||||
@ -228,6 +229,9 @@ public:
|
||||
const TString & totale_netto() const { return _totale_netto; }
|
||||
const TString & basesconto() const { return _basesconto;}
|
||||
const TString & spese() const { return _spese;}
|
||||
bool mov_mag() const { return get_bool("B1"); }
|
||||
const TString & stato_mov() const {return get("S7"); }
|
||||
const TString & caus_mov() const {return get("S8"); }
|
||||
|
||||
TFormula_documento * first_formula() { return succ_formula(TRUE); }
|
||||
TFormula_documento * succ_formula(bool restart = FALSE);
|
||||
@ -299,8 +303,18 @@ public:
|
||||
bool doc_dependent() const;
|
||||
int numero() const { return get_int("NRIGA");}
|
||||
void set_numero(int numero) { put("NRIGA", numero);}
|
||||
bool generata() const { return get_bool("GENERATA");}
|
||||
void set_generata(bool on = TRUE) { put("GENERATA", on);}
|
||||
bool is_generata() const { return get_bool("GENERATA");}
|
||||
void generata(bool on = TRUE) { put("GENERATA", on);}
|
||||
bool is_merce() const { return tipo().tipo() == 'M';}
|
||||
bool is_spese() const { return tipo().tipo() == 'S';}
|
||||
bool is_prestazione() const { return tipo().tipo() == 'P';}
|
||||
bool is_sconto() const {return tipo().tipo() == 'C';}
|
||||
bool is_omaggio() const { return tipo().tipo() == 'O';}
|
||||
bool is_descrizione() const { return tipo().tipo() == 'D';}
|
||||
bool is_articolo() const;
|
||||
bool is_checked() const { return get_bool("CHECKED");}
|
||||
void checked(bool on = TRUE) { put("CHECKED", (bool) on);}
|
||||
void unchecked() { checked(FALSE);}
|
||||
// @cmember Assegna il documento corrente
|
||||
void set_doc(TDocumento * doc) { _doc = doc; }
|
||||
const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
|
||||
@ -732,15 +746,19 @@ public:
|
||||
public:
|
||||
int read(const char * cod);
|
||||
const TString& codice() const { return get("CODTAB"); }
|
||||
const TString& descrizione() const { return get("S0"); }
|
||||
const TString& prefisso() const { return get("S6"); }
|
||||
const TString& postfisso() const { return get("S7"); }
|
||||
const bool manual_num() const { return get_bool("B0"); }
|
||||
// const bool manual_num() const { return get_bool("B0"); }
|
||||
const bool num_provv() const { return get_bool("B0"); }
|
||||
const bool auto_num() const { return get_bool("B1"); }
|
||||
const TString& tipo_doc1() { return get("S2").mid(0,4);}
|
||||
const TString& tipo_doc2() { return get("S2").mid(4,4);}
|
||||
const TString& tipo_doc3() { return get("S2").mid(8,4);}
|
||||
const TString& tipo_doc4() { return get("S2").mid(12,4);}
|
||||
const TString& tipo_doc5() { return get("S2").mid(16,4);}
|
||||
// const TString& tipo_doc1() { return get("S2").mid(0,4);}
|
||||
// const TString& tipo_doc2() { return get("S2").mid(4,4);}
|
||||
// const TString& tipo_doc3() { return get("S2").mid(8,4);}
|
||||
// const TString& tipo_doc4() { return get("S2").mid(12,4);}
|
||||
// const TString& tipo_doc5() { return get("S2").mid(16,4);}
|
||||
const TString & tipo_doc(int i) const { CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento"); return ((TString& ) get("S2").mid(i << 2, 4)).trim();}
|
||||
int ntipi_doc() const {const int l = get("S2").len(); return l ? (((l - 1) >> 2) + 1) : 0;}
|
||||
|
||||
const char * complete_num (long num);
|
||||
int status() { return _status; }
|
||||
|
@ -7,6 +7,10 @@
|
||||
#include <expr.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VERIG_H
|
||||
#include "verig.h"
|
||||
#endif
|
||||
@ -248,7 +252,7 @@ bool codart_handler( TMask_field& f, KEY key )
|
||||
}
|
||||
row_mask.field(FR_LIV1).on_hit();
|
||||
}
|
||||
if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_DESCR).empty()))
|
||||
if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty()))
|
||||
{
|
||||
TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask();
|
||||
TCond_vendita & condv = mask.condv();
|
||||
@ -264,7 +268,10 @@ bool codart_handler( TMask_field& f, KEY key )
|
||||
TString80 codart(f.get());
|
||||
anamag.setkey(1);
|
||||
anamag.put("CODART", codart);
|
||||
if (anamag.read() != NOERR)
|
||||
bool found = anamag.read() == NOERR;
|
||||
if (found)
|
||||
row_mask.set(FR_CODARTMAG, codart, TRUE);
|
||||
else
|
||||
{
|
||||
TLocalisamfile codalt(LF_CODCORR);
|
||||
|
||||
@ -275,15 +282,18 @@ bool codart_handler( TMask_field& f, KEY key )
|
||||
codart = codalt.get("CODART");
|
||||
anamag.zero();
|
||||
anamag.put("CODART", codart);
|
||||
if (anamag.read() == NOERR)
|
||||
f.set(codart);
|
||||
found = anamag.read() == NOERR;
|
||||
if (found)
|
||||
row_mask.set(FR_CODARTMAG, codart, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
if (anamag.good())
|
||||
row_mask.set(FR_CHECKED, "X");
|
||||
if (!found)
|
||||
row_mask.set(FR_CODARTMAG, "", TRUE);
|
||||
else
|
||||
{
|
||||
const TString16 lingua = mask.get(F_CODLIN);
|
||||
const TString codart(row_mask.get(FR_CODART));
|
||||
const TString codart(row_mask.get(FR_CODARTMAG));
|
||||
TString desc(anamag.get("DESCR"));
|
||||
|
||||
if (lingua.not_empty())
|
||||
@ -323,6 +333,28 @@ bool codart_handler( TMask_field& f, KEY key )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool codartmag_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
bool to_check = key == K_TAB && f.focusdirty();
|
||||
TMask & m = f.mask();
|
||||
|
||||
if (!to_check)
|
||||
{
|
||||
TSheet_field * s = m.get_sheet();
|
||||
|
||||
if (s)
|
||||
to_check = !s->mask().is_running();
|
||||
}
|
||||
if (to_check)
|
||||
{
|
||||
const bool artmag = f.get().not_empty();
|
||||
|
||||
m.show(FR_UMQTA, artmag);
|
||||
m.show(FR_UMQTA2, !artmag);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool liv_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
if (f.to_check(key, TRUE))
|
||||
@ -769,7 +801,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
|
||||
real & val = stack.peek_real();
|
||||
if (_row)
|
||||
{
|
||||
if (_row->tipo().tipo() == RIGA_SCONTI)
|
||||
if (_row->is_sconto())
|
||||
val = -_row->importo(FALSE, FALSE, ndec);
|
||||
else
|
||||
val = _row->importo(FALSE, FALSE, ndec) - _row->importo(TRUE, FALSE, ndec);
|
||||
|
@ -5,8 +5,8 @@
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VE0100C_H
|
||||
#include "ve0100c.h"
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VERIG_H
|
||||
@ -152,6 +152,7 @@ TVariable_mask * TTipo_riga_documento::mask()
|
||||
_mask->set_handler( FR_LIV2, liv_handler );
|
||||
_mask->set_handler( FR_LIV3, liv_handler );
|
||||
_mask->set_handler( FR_UMQTA, umart_handler );
|
||||
_mask->set_handler( FR_CODARTMAG, codartmag_handler );
|
||||
_mask->set_handler( FR_DESCR, descr_handler );
|
||||
_mask->set_handler( FR_QTA, qta_handler );
|
||||
}
|
||||
@ -267,7 +268,7 @@ bool TRiga_documento::sola_descrizione() const
|
||||
void TRiga_documento::forza_sola_descrizione()
|
||||
{
|
||||
// In realta' il test serve anche a caricare la lista dei tipi riga!
|
||||
if (!tipo_valido() || tipo().tipo() != RIGA_DESCRIZIONI)
|
||||
if (!tipo_valido() || !is_descrizione())
|
||||
{
|
||||
_tipi.restart();
|
||||
for (const TObject* o = _tipi.get(); o; o = _tipi.get())
|
||||
@ -457,7 +458,7 @@ real TRiga_documento::imponibile() const
|
||||
|
||||
if (field.not_empty())
|
||||
{
|
||||
if (tipo().tipo() == RIGA_OMAGGI && _iva_calc)
|
||||
if (is_omaggio() && _iva_calc)
|
||||
{
|
||||
TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field);
|
||||
CHECKS(f, "Field UNKNOWN : ", field);
|
||||
@ -519,6 +520,12 @@ void TRiga_documento::put_str(const char* fieldname, const char* val)
|
||||
}
|
||||
}
|
||||
|
||||
bool TRiga_documento::is_articolo() const
|
||||
{
|
||||
const char t = tipo().tipo();
|
||||
return (t == RIGA_MERCE || t == RIGA_OMAGGI) && get("CODARTMAG").not_empty();
|
||||
}
|
||||
|
||||
void TRiga_documento::zero(const char * fieldname)
|
||||
{
|
||||
if (strcmp(fieldname, "TIPORIGA") == 0)
|
||||
@ -593,6 +600,14 @@ void TRiga_documento::autosave(TSheet_field & f)
|
||||
put( "CODIVA", row.get( f.cid2index(FR_CODIVA )) );
|
||||
put( "ADDIVA", row.get( f.cid2index(FR_ADDIVA )) );
|
||||
put( "ASPBENI", row.get( f.cid2index(FR_ASPBENI )) );
|
||||
put( "CAUSMAG", row.get( f.cid2index(FR_CAUS )) );
|
||||
TString16 codmagc(row.get(f.cid2index(FR_CODMAGC)));
|
||||
|
||||
codmagc.left_just(3);
|
||||
codmagc << row.get( f.cid2index(FR_CODDEPC ));
|
||||
put( "CODMAGC", codmagc);
|
||||
put( "CODARTMAG", row.get( f.cid2index(FR_CODARTMAG )) );
|
||||
put( "CHECKED", row.get( f.cid2index(FR_CHECKED )) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -659,5 +674,11 @@ void TRiga_documento::autoload(TSheet_field & f)
|
||||
row.add( get( "CODIVA" ), f.cid2index(FR_CODIVA ));
|
||||
row.add( get( "ADDIVA" ), f.cid2index(FR_ADDIVA ));
|
||||
row.add( get( "ASPBENI" ), f.cid2index(FR_ASPBENI ));
|
||||
row.add( get( "CAUSMAG" ), f.cid2index(FR_CAUS ));
|
||||
const TString codmagc(get("CODMAGC"));
|
||||
row.add( codmagc.left(3), f.cid2index(FR_CODMAGC ));
|
||||
row.add( codmagc.mid(3), f.cid2index(FR_CODDEPC ));
|
||||
row.add( get( "CODARTMAG" ), f.cid2index(FR_CODARTMAG));
|
||||
row.add( get( "CHECKED" ), f.cid2index(FR_CHECKED));
|
||||
}
|
||||
|
||||
|
184
ve/velib03.cpp
184
ve/velib03.cpp
@ -10,6 +10,10 @@
|
||||
#include "veuml.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __UTILITY_H
|
||||
#include <utility.h>
|
||||
#endif
|
||||
@ -18,15 +22,49 @@
|
||||
#include "veini.h"
|
||||
#endif
|
||||
|
||||
#ifndef __DEFMASK_H
|
||||
//#include <defmask.h>
|
||||
#ifndef __MGLIB_H
|
||||
#include "../mg/mglib.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __SCONTI_H
|
||||
#include "sconti.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MODAUT_H
|
||||
#include <modaut.h>
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Movimento di magazzino
|
||||
///////////////////////////////////////////////////////////
|
||||
class TMov_mag_doc : public TMov_mag
|
||||
{
|
||||
const TDocumento * _doc;
|
||||
|
||||
protected:
|
||||
virtual const char * codmag_rauto(int r) const;
|
||||
|
||||
public:
|
||||
TMov_mag_doc(const TDocumento * d) : _doc(d) {}
|
||||
virtual ~TMov_mag_doc() {}
|
||||
};
|
||||
|
||||
const char * TMov_mag_doc::codmag_rauto(int r) const
|
||||
{
|
||||
const int rows = _doc->physical_rows();
|
||||
const long num = get_long(MOVMAG_NUMREG);
|
||||
|
||||
for (int i = 1; r > 0 && i <= rows; i++)
|
||||
if ((*_doc)[i].is_articolo() && num == (*_doc)[i].get_long("MOVMAG"))
|
||||
r--;
|
||||
i--;
|
||||
if (i > rows)
|
||||
return NULL;
|
||||
|
||||
const TString & codmag = (*_doc)[i].get("CODMAGC");
|
||||
|
||||
return codmag.empty() ? NULL : (const char *) codmag;
|
||||
}
|
||||
///////////////////////////////////////////////////////////
|
||||
// Tipo documento
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -610,6 +648,10 @@ void TDocumento::dirty_fields()
|
||||
int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
{
|
||||
const bool nuovo = _nuovo || numero() <= 0; // E' nuovo di zecca!
|
||||
const bool check_movmag = main_app().has_module(MGAUT, CHK_DONGLE) && tipo().mov_mag();
|
||||
const TString16 statomag(tipo().stato_mov());
|
||||
const bool do_movmag = get("STATO") >= statomag;
|
||||
|
||||
if (nuovo && re) // quindi ...
|
||||
re = FALSE; // ... non fare la rewrite
|
||||
|
||||
@ -617,6 +659,136 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
const TString80 occ_code(occas().get(OCC_CFPI));
|
||||
|
||||
((TDocumento *)this)->put("OCFPI", occ_code);
|
||||
|
||||
long num = get_long("MOVMAG");
|
||||
const int rows = physical_rows();
|
||||
|
||||
if (check_movmag)
|
||||
{
|
||||
TMov_mag_doc mov(this);
|
||||
TLocalisamfile m(LF_MOVMAG);
|
||||
mov.zero();
|
||||
if (num == 0 && do_movmag)
|
||||
{
|
||||
num = atol(mov.get_next_key());
|
||||
mov.put(MOVMAG_NUMREG, num);
|
||||
while (mov.write(m) == _isreinsert)
|
||||
{
|
||||
num++;
|
||||
mov.put(MOVMAG_NUMREG, num);
|
||||
}
|
||||
((TDocumento *)this)->put("MOVMAG", num);
|
||||
}
|
||||
if (num > 0)
|
||||
{
|
||||
mov.put(MOVMAG_NUMREG, num);
|
||||
while (mov.read(m, _isequal, _testandlock) == _islocked)
|
||||
message_box("Movimento di magazzino in uso da parte di un'altro utente");
|
||||
if (do_movmag)
|
||||
{
|
||||
TRecord_array & b = mov.body();
|
||||
const int mag_rows = mov.rows();
|
||||
|
||||
for (int i = mag_rows; i > 0; i--)
|
||||
{
|
||||
TRectype & r = b[i];
|
||||
if (r.get_char(RMOVMAG_TIPORIGA) == riga_dadocumento)
|
||||
{
|
||||
b.destroy_row(i);
|
||||
if (b.exist(i + 1) &&
|
||||
b[i + 1].get_char(RMOVMAG_TIPORIGA) == riga_automatica)
|
||||
b.destroy_row(i + 1);
|
||||
}
|
||||
}
|
||||
b.pack();
|
||||
|
||||
TDate d(get("DATADOC"));
|
||||
mov.put(MOVMAG_ANNOES, mov.codice_esercizio(d));
|
||||
mov.put(MOVMAG_DATAREG, d);
|
||||
mov.put(MOVMAG_DATACOMP, d);
|
||||
mov.put(MOVMAG_DOCPROVV, get("PROVV"));
|
||||
mov.put(MOVMAG_ANNODOC, get("ANNO"));;
|
||||
mov.put(MOVMAG_CODNUM, get("CODNUM"));
|
||||
const long numdoc = get_long("NDOC");
|
||||
mov.put(MOVMAG_NUMDOC, numdoc);
|
||||
mov.put(MOVMAG_CATVEN, get("CATVEN"));
|
||||
mov.put(MOVMAG_CODLIST, get("CODLIST"));
|
||||
mov.put(MOVMAG_CODCONT, get("CODCONT"));
|
||||
mov.put(MOVMAG_CODCAMP, get("CODCAMP"));
|
||||
mov.put(MOVMAG_CODCAUS, get("CAUSMAG"));
|
||||
mov.put(MOVMAG_DESCR, format("%s n.ro %ld del %s", (const char *) tipo().get("S1"), numdoc, (const char *) d.string()));
|
||||
mov.put(MOVMAG_TIPOCF, get("TIPOCF"));
|
||||
mov.put(MOVMAG_CODCF, get("CODCF"));
|
||||
|
||||
int j = 1;
|
||||
|
||||
for (i = 1; i <= rows; i++)
|
||||
{
|
||||
TRiga_documento & r = ((TDocumento *)this)->row(i);
|
||||
|
||||
if (r.is_articolo())
|
||||
{
|
||||
long r_num = r.get_long("MOVMAG");
|
||||
if (r_num == 0)
|
||||
{
|
||||
r_num = num;
|
||||
r.put("MOVMAG", r_num);
|
||||
}
|
||||
|
||||
if (r_num == num)
|
||||
{
|
||||
TRectype & rm = mov.insert_row(j++);
|
||||
|
||||
rm.put(RMOVMAG_CODMAG, r.get("CODMAG"));
|
||||
rm.put(RMOVMAG_CODART, r.get("CODARTMAG"));
|
||||
rm.put(RMOVMAG_LIVGIAC, r.get("LIVELLO"));
|
||||
rm.put(RMOVMAG_UM, r.get("UMQTA"));
|
||||
rm.put(RMOVMAG_QUANT, r.get("QTA"));
|
||||
rm.put(RMOVMAG_PREZZO, r.get("PREZZO"));
|
||||
rm.put(RMOVMAG_CODCAUS, r.get("CAUSMAG"));
|
||||
rm.put(RMOVMAG_TIPORIGA, (char) riga_dadocumento);
|
||||
}
|
||||
}
|
||||
}
|
||||
mov.rewrite(m);
|
||||
}
|
||||
else
|
||||
{
|
||||
mov.remove(m);
|
||||
for (int i = rows; i > 0; i--)
|
||||
{
|
||||
TRiga_documento & r = ((TDocumento *) this)->row(i);
|
||||
long r_num = r.get_long("MOVMAG");
|
||||
if (r_num == num)
|
||||
r.zero("MOVMAG");
|
||||
}
|
||||
((TDocumento *)this)->zero("MOVMAG");
|
||||
}
|
||||
}
|
||||
TLocalisamfile anamag(LF_ANAMAG);
|
||||
TLocalisamfile codalt(LF_CODCORR);
|
||||
codalt.setkey(2);
|
||||
for (int i = rows; i > 0; i--)
|
||||
{
|
||||
TRiga_documento & r = ((TDocumento *) this)->row(i);
|
||||
if (!r.is_checked())
|
||||
{
|
||||
const TString & codart = r.get("CODART");
|
||||
anamag.put("CODART", codart);
|
||||
if (anamag.read() == NOERR)
|
||||
r.put("CODARTMAG", codart);
|
||||
else
|
||||
{
|
||||
codalt.put("CODARTALT", codart);
|
||||
if (codalt.read() == NOERR)
|
||||
r.put("CODARTMAG", codalt.get("CODART"));
|
||||
}
|
||||
r.checked();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (re)
|
||||
{
|
||||
err = _rows.write(re);
|
||||
@ -662,7 +834,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
// eliminare anche il mov di mag. ??????
|
||||
int TDocumento::remove(TBaseisamfile& f) const
|
||||
{
|
||||
int err = _rows.remove();
|
||||
@ -1020,7 +1192,7 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
|
||||
{
|
||||
TRiga_documento & r = row(i);
|
||||
|
||||
if (r.tipo().tipo() == RIGA_SPESEDOC && r.generata())
|
||||
if (r.tipo().tipo() == RIGA_SPESEDOC && r.is_generata())
|
||||
{
|
||||
if (preserve_old)
|
||||
return;
|
||||
@ -1047,7 +1219,7 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
|
||||
TRiga_documento & riga = new_row(tipo);
|
||||
|
||||
riga.put("CODART", s);
|
||||
riga.set_generata();
|
||||
riga.generata();
|
||||
riga.put("DESCR", sp.descrizione());
|
||||
switch (sp.tipo())
|
||||
{
|
||||
|
@ -5,6 +5,10 @@
|
||||
#include <execp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Lista di documenti
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -1,5 +1,9 @@
|
||||
#include "velib.h"
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// TCodice_numerazione
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
@ -13,6 +13,10 @@
|
||||
#include "veuml1.h"
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __UTILITY_H
|
||||
#include <utility.h>
|
||||
#endif
|
||||
|
@ -5,5 +5,11 @@ enum TTipo_calcolo { _nessun_calcolo, _qtaprezzo, _valore, _percentuale, _sconto
|
||||
void row_set_handler( TMask& m, const int field, const int index );
|
||||
bool liv_handler( TMask_field& f, KEY key );
|
||||
bool sppr_handler( TMask_field& f, KEY key );
|
||||
bool codartmag_handler( TMask_field& f, KEY key );
|
||||
bool iva_handler( TMask_field& f, KEY key );
|
||||
void sppr_calc(TRectype & rec, const TString & valuta_doc, const real & cambio, real & prezzo);
|
||||
void row_set_handler(TMask& m, const int field, const int index);
|
||||
bool codart_handler(TMask_field& f, KEY key);
|
||||
bool umart_handler(TMask_field& f, KEY key);
|
||||
bool descr_handler(TMask_field& f, KEY key);
|
||||
bool qta_handler(TMask_field& f, KEY key);
|
||||
|
13
ve/verig.h
13
ve/verig.h
@ -26,6 +26,8 @@
|
||||
// UMQTA UMQTASP UMQTAPR alternativi definirne uno solo
|
||||
#define FR_UMQTA 111
|
||||
#define FR_UMQTASP 111
|
||||
// UMQTA2 da non definire
|
||||
#define FR_UMQTA2 211
|
||||
// QTA PERCSP alternativi definirne uno solo
|
||||
#define FR_QTA 112
|
||||
#define FR_PERCSP 112
|
||||
@ -46,7 +48,13 @@
|
||||
#define FR_CODIVA 124
|
||||
#define FR_ADDIVA 125
|
||||
#define FR_ASPBENI 126
|
||||
#define FR_END 127
|
||||
#define FR_CAUS 127
|
||||
#define FR_CODMAGC 128
|
||||
#define FR_CODDEPC 129
|
||||
// CODARTMAG CHECKED da non definire
|
||||
#define FR_CODARTMAG 130
|
||||
#define FR_CHECKED 131
|
||||
#define FR_END 132
|
||||
#define MAX_COLUMNS FR_END-FR_STATORIGA
|
||||
|
||||
#define FR_DESMAG 150
|
||||
@ -54,4 +62,7 @@
|
||||
#define FR_DESIVA 152
|
||||
#define FR_DESASP 153
|
||||
#define FR_DESTIPORIGA 154
|
||||
#define FR_DESCRCAUS 155
|
||||
#define FR_DESMAGC 156
|
||||
#define FR_DESDEPC 157
|
||||
#endif
|
||||
|
164
ve/verig.uml
164
ve/verig.uml
@ -108,7 +108,7 @@ IFDEF(F_CODDEP)
|
||||
STRING FR_CODDEP 2
|
||||
BEGIN
|
||||
IFDEF(X_CODDEP)
|
||||
PROMPT X_DESMAG Y_DESMAG PR_DESMAG
|
||||
PROMPT X_CODDEP Y_CODDEP PR_CODDEP
|
||||
ELSEIF
|
||||
PROMPT 2 4 "Deposito "
|
||||
ENDIF
|
||||
@ -173,6 +173,20 @@ ENDIF
|
||||
ADD RUN ve2 -3
|
||||
END
|
||||
|
||||
STRING FR_CODARTMAG 20
|
||||
BEGIN
|
||||
PROMPT 50 50 ""
|
||||
FIELD CODARTMAG
|
||||
FLAGS "G"
|
||||
END
|
||||
|
||||
BOOLEAN FR_CHECKED
|
||||
BEGIN
|
||||
PROMPT 51 50 ""
|
||||
FIELD CHECKED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING FR_LIV1 10
|
||||
BEGIN
|
||||
IFDEF(X_LIV1)
|
||||
@ -478,7 +492,7 @@ ELSEIF
|
||||
ENDIF
|
||||
USE LF_UMART KEY 2
|
||||
JOIN %UMS INTO CODTAB=UM
|
||||
INPUT CODART FR_CODART SE
|
||||
INPUT CODART FR_CODARTMAG SE
|
||||
INPUT UM FR_UMQTA
|
||||
DISPLAY "Codice@20" UM
|
||||
DISPLAY "Descrizione@50" %UMS->S0
|
||||
@ -491,6 +505,27 @@ ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
|
||||
STRING FR_UMQTA2 2
|
||||
BEGIN
|
||||
IFDEF(X_UMQTA)
|
||||
PROMPT X_UMQTA Y_UMQTA PR_UMQTA
|
||||
ELSEIF
|
||||
PROMPT 2 9 "U.M. "
|
||||
ENDIF
|
||||
USE %UMS
|
||||
INPUT CODTAB FR_UMQTA2
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_UMQTA2 CODTAB
|
||||
FIELD UMQTA
|
||||
FLAG "U"
|
||||
IFDEF(CH_UMQTA)
|
||||
CHECKTYPE CH_UMQTA
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_UMQTASP)
|
||||
@ -775,6 +810,131 @@ END
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CAUS)
|
||||
STRING FR_CAUS 4
|
||||
BEGIN
|
||||
IFDEF(X_CAUS)
|
||||
PROMPT X_CAUS Y_CAUS PR_CAUS
|
||||
ELSEIF
|
||||
PROMPT 2 18 "Caus.magazz. "
|
||||
ENDIF
|
||||
USE %CAU
|
||||
INPUT CODTAB FR_CAUS
|
||||
DISPLAY "Codice@20" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CAUS CODTAB
|
||||
OUTPUT FR_DESCRCAUS S0
|
||||
FLAGS "U"
|
||||
IFDEF(CH_CAUS)
|
||||
CHECKTYPE CH_CAUS
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
FIELD CODCAUS
|
||||
END
|
||||
|
||||
IFDEF(F_DESCRCAUS)
|
||||
STRING FR_DESCRCAUS 50
|
||||
BEGIN
|
||||
IFDEF(X_DESCRCAUS)
|
||||
PROMPT X_DESCRCAUS Y_DESCRCAUS PR_DESCRCAUS
|
||||
ELSEIF
|
||||
PROMPT 22 18 ""
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODMAGC)
|
||||
STRING FR_CODMAGC 3
|
||||
BEGIN
|
||||
IFDEF(X_CODMAG)
|
||||
PROMPT X_CODMAG Y_CODMAG PR_CODMAG
|
||||
ELSEIF
|
||||
PROMPT 2 19 "Mag.colleg. "
|
||||
ENDIF
|
||||
COPY USE FR_CODMAG
|
||||
INPUT CODTAB FR_CODMAGC
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODMAGC CODTAB
|
||||
OUTPUT FR_DESMAGC S0
|
||||
WARNING "Magazzino assente"
|
||||
FLAGS "U"
|
||||
IFDEF(FL_CODMAGC)
|
||||
FLAGS FL_CODMAGC
|
||||
ENDIF
|
||||
KEY 1
|
||||
IFDEF(CH_CODMAGC)
|
||||
CHECKTYPE CH_CODMAGC
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
FIELD CODMAGC[1,3]
|
||||
END
|
||||
|
||||
IFDEF(F_DESMAGC)
|
||||
STRING FR_DESMAGC 50
|
||||
BEGIN
|
||||
IFDEF(X_DESMAGC)
|
||||
PROMPT X_DESMAGC Y_DESMAGC PR_DESMAGC
|
||||
ELSEIF
|
||||
PROMPT 22 19 ""
|
||||
ENDIF
|
||||
IFDEF(FL_DESMAGC)
|
||||
FLAGS FL_DESMAGC
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IFDEF(F_CODDEPC)
|
||||
STRING FR_CODDEPC 2
|
||||
BEGIN
|
||||
IFDEF(X_CODDEPC)
|
||||
PROMPT X_CODDEPC Y_CODDEPC PR_CODDEPC
|
||||
ELSEIF
|
||||
PROMPT 2 20 "Deposito "
|
||||
ENDIF
|
||||
COPY USE FR_CODDEP
|
||||
INPUT CODTAB[1,3] FR_CODMAGC
|
||||
INPUT CODTAB[4,5] FR_CODDEPC
|
||||
DISPLAY "Codice mag." CODTAB[1,3]
|
||||
DISPLAY "Codice dep." CODTAB[4,5]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FR_CODMAGC CODTAB[1,3]
|
||||
OUTPUT FR_CODDEPC CODTAB[4,5]
|
||||
OUTPUT FR_DESDEPC S0
|
||||
MESSAGE DIRTY,FR_CODMAGC|K_TAB,FR_CODMAGC
|
||||
IFDEF(CH_CODDEPC)
|
||||
CHECKTYPE CH_CODDEPC
|
||||
ELSEIF
|
||||
CHECKTYPE NORMAL
|
||||
ENDIF
|
||||
WARNING "Deposito assente"
|
||||
IFDEF(FL_CODDEPC)
|
||||
FLAGS FL_CODDEPC
|
||||
ENDIF
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
FIELD CODMAGC[4,5]
|
||||
END
|
||||
|
||||
IFDEF(F_DESDEPC)
|
||||
STRING FR_DESDEPC 50
|
||||
BEGIN
|
||||
IFDEF(X_DESDEPC)
|
||||
PROMPT X_DESDEPC Y_DESDEPC PR_DESDEPC
|
||||
ELSEIF
|
||||
PROMPT 22 20 ""
|
||||
ENDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
#ifndef FULL_SCREEN
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
|
@ -24,6 +24,12 @@ DEFINE_FIELD(DESIVA)
|
||||
DEFINE_FIELD(ADDIVA)
|
||||
DEFINE_FIELD(ASPBENI)
|
||||
DEFINE_FIELD(DESASP)
|
||||
DEFINE_FIELD(CAUS)
|
||||
DEFINE_FIELD(DESCRCAUS)
|
||||
DEFINE_FIELD(CODMAGC)
|
||||
DEFINE_FIELD(DESMAGC)
|
||||
DEFINE_FIELD(CODDEPC)
|
||||
DEFINE_FIELD(DESDEPC)
|
||||
|
||||
|
||||
#include "verig.uml"
|
||||
|
@ -29,6 +29,13 @@ DEFINE_FIELD(CODIVA)
|
||||
F_POS(CODIVA, 2, 13,"Cod. IVA " )
|
||||
DEFINE_FIELD(DESIVA)
|
||||
F_POS(DESIVA, 22, 13,"" )
|
||||
DEFINE_FIELD(CAUS)
|
||||
DEFINE_FIELD(DESCRCAUS)
|
||||
DEFINE_FIELD(CODMAGC)
|
||||
DEFINE_FIELD(DESMAGC)
|
||||
DEFINE_FIELD(CODDEPC)
|
||||
DEFINE_FIELD(DESDEPC)
|
||||
|
||||
|
||||
#include "verig.uml"
|
||||
|
||||
|
@ -25,6 +25,12 @@ F_POS(CODIVA, 2, 11,"Cod. IVA " )
|
||||
DEFINE_FIELD(DESIVA)
|
||||
F_POS(DESIVA, 22, 11,"" )
|
||||
DEFINE_FIELD(ADDIVA)
|
||||
DEFINE_FIELD(CAUS)
|
||||
DEFINE_FIELD(DESCRCAUS)
|
||||
DEFINE_FIELD(CODMAGC)
|
||||
DEFINE_FIELD(DESMAGC)
|
||||
DEFINE_FIELD(CODDEPC)
|
||||
DEFINE_FIELD(DESDEPC)
|
||||
|
||||
#include "verig.uml"
|
||||
|
||||
|
@ -59,8 +59,7 @@
|
||||
#define F_UMPNETTO 161
|
||||
#define F_PNETTO 162
|
||||
#define F_NCOLLI 163
|
||||
#define F_CAUSMAG1 164
|
||||
#define F_CAUSMAG2 165
|
||||
#define F_CAUSMAG 164
|
||||
#define F_NOTE 166
|
||||
#define F_G1 167
|
||||
#define F_G2 168
|
||||
|
@ -38,8 +38,7 @@
|
||||
#define F_DESCRBENI2 323
|
||||
#define F_DESUMTARA 324
|
||||
#define F_DESUMPNETTO 325
|
||||
#define F_DESCRMAG1 326
|
||||
#define F_DESCRMAG2 327
|
||||
#define F_DESCRMAG 326
|
||||
#define F_COFI 328
|
||||
#define F_STATOPAIVA 329
|
||||
#define F_LOCALITACF 330
|
||||
|
Loading…
x
Reference in New Issue
Block a user