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:
alex 1997-06-27 09:21:13 +00:00
parent 8c639919bd
commit 720b374a40
39 changed files with 928 additions and 284 deletions

View File

@ -184,6 +184,11 @@ BEGIN
PROMPT 2 9 "Stato iniziale " PROMPT 2 9 "Stato iniziale "
FLAGS "U" FLAGS "U"
FIELD S7[1,1] 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 CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato iniziale" WARNING "E' necessario specificare uno stato iniziale"
END END
@ -192,6 +197,12 @@ STRING F_STATO_I_DOC_I_2 1
BEGIN BEGIN
PROMPT 30 9 "" PROMPT 30 9 ""
FLAGS "U" 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] FIELD S7[2,2]
END END
@ -199,6 +210,12 @@ STRING F_STATO_I_DOC_I_3 1
BEGIN BEGIN
PROMPT 39 9 "" PROMPT 39 9 ""
FLAGS "U" 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] FIELD S7[3,3]
END END
@ -206,6 +223,12 @@ STRING F_STATO_I_DOC_I_4 1
BEGIN BEGIN
PROMPT 48 9 "" PROMPT 48 9 ""
FLAGS "U" 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] FIELD S7[4,4]
END END
@ -213,6 +236,12 @@ STRING F_STATO_I_DOC_I_5 1
BEGIN BEGIN
PROMPT 57 9 "" PROMPT 57 9 ""
FLAGS "U" 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] FIELD S7[5,5]
END END
@ -221,6 +250,11 @@ BEGIN
PROMPT 2 10 "Stato finale " PROMPT 2 10 "Stato finale "
FLAGS "U" FLAGS "U"
FIELD S4 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 CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato finale" WARNING "E' necessario specificare uno stato finale"
END END
@ -248,6 +282,11 @@ BEGIN
PROMPT 2 14 "Stato finale " PROMPT 2 14 "Stato finale "
FLAGS "U" FLAGS "U"
FIELD S9 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 CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato finale" WARNING "E' necessario specificare uno stato finale"
END END
@ -298,7 +337,7 @@ END
STRING F_APPLICAZIONE 20 STRING F_APPLICAZIONE 20
BEGIN BEGIN
PROMPT 2 19 "Applicazione esterna" PROMPT 2 19 "Applicazione "
FIELD S3 FIELD S3
END END

View File

@ -6,6 +6,7 @@
#define F_SUFFISSO 106 #define F_SUFFISSO 106
#define F_ULTDATA 107 #define F_ULTDATA 107
#define F_ANNO 108 #define F_ANNO 108
#define F_TIPO 109
#define F_TIPODOC1 110 #define F_TIPODOC1 110
#define F_DESDOC1 111 #define F_DESDOC1 111
#define F_TIPODOC2 112 #define F_TIPODOC2 112

View File

@ -14,12 +14,6 @@ PAGE "Numerazione documenti" -1 -1 60 14
FLAG "R" FLAG "R"
END END
// GROUPBOX DLG_NULL 84 13
// BEGIN
// PROMPT 1 5 ""
// FLAG "R"
// END
STRING F_CODTAB 4 STRING F_CODTAB 4
BEGIN BEGIN
PROMPT 2 2 "Cod. numerazione " PROMPT 2 2 "Cod. numerazione "
@ -81,26 +75,30 @@ PAGE "Tipi documento validi" -1 -1 60 14
GROUPBOX DLG_NULL 70 15 GROUPBOX DLG_NULL 70 15
BEGIN BEGIN
PROMPT 1 1 "" PROMPT 1 1 "Tipi di documento validi per la numerazione"
// FLAG "R"
END END
TEXT DLG_NULL LIST F_TIPO 24
BEGIN 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 END
STRING F_TIPODOC1 4 STRING F_TIPODOC1 4
BEGIN BEGIN
PROMPT 2 4 "" PROMPT 2 4 ""
FLAGS "U" FLAGS "U"
USE %TIP USE %TIP SELECT I1==#F_TIPO
INPUT CODTAB F_TIPODOC1 INPUT CODTAB F_TIPODOC1
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC1 CODTAB OUTPUT F_TIPODOC1 CODTAB
OUTPUT F_DESDOC1 S0 OUTPUT F_DESDOC1 S0
HELP "Tipo di documento 1" WARNING "Tipo documento errato"
FIELD S2[1,4] FIELD S2[1,4]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -108,125 +106,255 @@ PAGE "Tipi documento validi" -1 -1 60 14
STRING F_DESDOC1 50 STRING F_DESDOC1 50
BEGIN BEGIN
PROMPT 12 4 "" PROMPT 12 4 ""
USE %TIP KEY 2 USE %TIP KEY 2 SELECT I1==#F_TIPO
INPUT S0 F_DESDOC1 INPUT S0 F_DESDOC1
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC1 CODTAB COPY OUTPUT F_TIPODOC1
OUTPUT F_DESDOC1 S0 WARNING "Tipo documento errato"
HELP "Tipo di documento 1"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_TIPODOC2 4 STRING F_TIPODOC2 4
BEGIN BEGIN
PROMPT 2 6 "" PROMPT 2 5 ""
FLAGS "U" FLAGS "U"
USE %TIP COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC2 INPUT CODTAB F_TIPODOC2
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC2 CODTAB OUTPUT F_TIPODOC2 CODTAB
OUTPUT F_DESDOC2 S0 OUTPUT F_DESDOC2 S0
HELP "Tipo di documento 2" WARNING "Tipo documento errato"
FIELD S2[5,8] FIELD S2[5,8]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC2 50 STRING F_DESDOC2 50
BEGIN BEGIN
PROMPT 12 6 "" PROMPT 12 5 ""
USE %TIP KEY 2 COPY USE F_DESDOC1
INPUT S0 F_DESDOC2 INPUT S0 F_DESDOC2
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC2 CODTAB COPY OUTPUT F_TIPODOC2
OUTPUT F_DESDOC2 S0 WARNING "Tipo documento errato"
HELP "Tipo di documento 2"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_TIPODOC3 4 STRING F_TIPODOC3 4
BEGIN BEGIN
PROMPT 2 8 "" PROMPT 2 6 ""
FLAGS "U" FLAGS "U"
USE %TIP COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC3 INPUT CODTAB F_TIPODOC3
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC3 CODTAB OUTPUT F_TIPODOC3 CODTAB
OUTPUT F_DESDOC3 S0 OUTPUT F_DESDOC3 S0
HELP "Tipo di documento 3" WARNING "Tipo documento errato"
FIELD S2[9,12] FIELD S2[9,12]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC3 50 STRING F_DESDOC3 50
BEGIN BEGIN
PROMPT 12 8 "" PROMPT 12 6 ""
USE %TIP KEY 2 COPY USE F_DESDOC1
INPUT S0 F_DESDOC3 INPUT S0 F_DESDOC3
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC3 CODTAB COPY OUTPUT F_TIPODOC3
OUTPUT F_DESDOC3 S0 WARNING "Tipo documento errato"
HELP "Tipo di documento 3"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_TIPODOC4 4 STRING F_TIPODOC4 4
BEGIN BEGIN
PROMPT 2 10 "" PROMPT 2 7 ""
FLAGS "U" FLAGS "U"
USE %TIP COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC4 INPUT CODTAB F_TIPODOC4
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC4 CODTAB OUTPUT F_TIPODOC4 CODTAB
OUTPUT F_DESDOC4 S0 OUTPUT F_DESDOC4 S0
HELP "Tipo di documento 4" WARNING "Tipo documento errato"
FIELD S2[13,16] FIELD S2[13,16]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC4 50 STRING F_DESDOC4 50
BEGIN BEGIN
PROMPT 12 10 "" PROMPT 12 7 ""
USE %TIP KEY 2 COPY USE F_DESDOC1
INPUT S0 F_DESDOC4 INPUT S0 F_DESDOC4
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC4 CODTAB COPY OUTPUT F_TIPODOC4
OUTPUT F_DESDOC4 S0 WARNING "Tipo documento errato"
HELP "Tipo di documento 4"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_TIPODOC5 4 STRING F_TIPODOC5 4
BEGIN BEGIN
PROMPT 2 12 "" PROMPT 2 8 ""
FLAGS "U" FLAGS "U"
USE %TIP COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC5 INPUT CODTAB F_TIPODOC5
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC5 CODTAB OUTPUT F_TIPODOC5 CODTAB
OUTPUT F_DESDOC5 S0 OUTPUT F_DESDOC5 S0
HELP "Tipo di documento 5" WARNING "Tipo documento errato"
FIELD S2[17,20] FIELD S2[17,20]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_DESDOC5 50 STRING F_DESDOC5 50
BEGIN BEGIN
PROMPT 12 12 "" PROMPT 12 8 ""
USE %TIP KEY 2 COPY USE F_DESDOC1
INPUT S0 F_DESDOC5 INPUT S0 F_DESDOC5
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC5 CODTAB COPY OUTPUT F_TIPODOC5
OUTPUT F_DESDOC5 S0 WARNING "Tipo documento errato"
HELP "Tipo di documento 5" 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 CHECKTYPE NORMAL
END END

View File

@ -26,7 +26,7 @@ BEGIN
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_DESSTA S0 OUTPUT F_DESSTA S0
KEY 1 KEY 1
FLAG "UZ" FLAG "U"
END END
STRING F_DESSTA 50 STRING F_DESSTA 50

View File

@ -8,3 +8,7 @@
#define F_RIFERIMENTO 108 #define F_RIFERIMENTO 108
#define F_SPESEAUT 109 #define F_SPESEAUT 109
#define F_TIPO 110 #define F_TIPO 110
#define F_MOVMAG 111
#define F_STATO_MOV 112
#define F_CAUS_MAG 113
#define F_DESCAUS_MAG 114

View File

@ -72,9 +72,19 @@ BEGIN
WARNING "Il numero di copie deve essere positivo" WARNING "Il numero di copie deve essere positivo"
END 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 STRING F_CODCAUS 3
BEGIN BEGIN
PROMPT 2 12 "Codice causale " PROMPT 2 13 "Codice causale contabile "
FIELD S6 FIELD S6
USE LF_CAUSALI USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS INPUT CODCAUS F_CODCAUS
@ -83,12 +93,12 @@ BEGIN
OUTPUT F_CODCAUS CODCAUS OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCAUS DESCR OUTPUT F_DESCAUS DESCR
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 2
END END
STRING F_DESCAUS 50 STRING F_DESCAUS 50
BEGIN BEGIN
PROMPT 2 13 "Descrizione causale " PROMPT 2 14 "Descrizione "
FLAG "U"
USE LF_CAUSALI KEY 2 USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCAUS INPUT DESCR F_DESCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
@ -96,6 +106,7 @@ BEGIN
OUTPUT F_DESCAUS DESCR OUTPUT F_DESCAUS DESCR
OUTPUT F_CODCAUS CODCAUS OUTPUT F_CODCAUS CODCAUS
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 2
END END
BOOLEAN F_SPESEAUT BOOLEAN F_SPESEAUT
@ -104,16 +115,58 @@ BEGIN
FIELD B0 FIELD B0
END END
LIST F_TIPO 10 BOOLEAN F_MOVMAG
BEGIN BEGIN
PROMPT 2 17 "Tipo del documento " PROMPT 2 16 "Movimenti di magazzino a partire dallo stato "
FIELD I1 FIELD B1
ITEM "0|Altro" MESSAGE FALSE CLEAR,1@
ITEM "1|Fattura" MESSAGE TRUE ENABLE,1@
ITEM "2|Bolla"
ITEM "3|Ordine"
END 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 ENDPAGE
ENDMASK ENDMASK

View File

@ -180,10 +180,8 @@ UMPNETTO = S_NORMALE //2700
PNETTO = S_NORMALE //2700 PNETTO = S_NORMALE //2700
DESUMPNETTO = S_NASCOSTO //2700 DESUMPNETTO = S_NASCOSTO //2700
NCOLLI = S_NORMALE //2800 NCOLLI = S_NORMALE //2800
CAUSMAG1 = S_NASCOSTO //2900 CAUSMAG = S_OBBLIGATORIO //2900
DESCRMAG1 = S_NASCOSTO //2900 DESCRMAG = S_NORMALE //2900
CAUSMAG2 = S_NASCOSTO //2900
DESCRMAG2 = S_NASCOSTO //2900
BLANK = S_DISABILITATO //4000 BLANK = S_DISABILITATO //4000
CODNOTE = S_NORMALE //2500 CODNOTE = S_NORMALE //2500
NOTECLI = S_NORMALE //2500 NOTECLI = S_NORMALE //2500
@ -194,7 +192,7 @@ NDEFAULTS=1
1=F_CAUSTRASP|VEN 1=F_CAUSTRASP|VEN
[SHEET] [SHEET]
NCOLS=14 NCOLS=17
1=FR_CODMAG 1=FR_CODMAG
2=FR_CODDEP 2=FR_CODDEP
3=FR_CODART 3=FR_CODART
@ -209,6 +207,9 @@ NCOLS=14
12=FR_SCONTO 12=FR_SCONTO
13=FR_PERCPROV 13=FR_PERCPROV
14=FR_CODIVA 14=FR_CODIVA
15=FR_CAUS
16=FR_CODMAGC
17=FR_CODDEPC
[RIGHE] [RIGHE]
NTIPIRIGA=9 NTIPIRIGA=9
@ -264,7 +265,7 @@ NHANDLER=0
4000 = S_NORMALE 4000 = S_NORMALE
[ORDINEGRUPPI] [ORDINEGRUPPI]
NGROUPS=29 NGROUPS=30
1=100 1=100
2=200 2=200
3=300 3=300
@ -294,4 +295,5 @@ NGROUPS=29
27=1700 27=1700
28=2500 28=2500
29=2400 29=2400
30=2900

View File

@ -133,10 +133,8 @@ UMPNETTO = S_NORMALE //2700
PNETTO = S_NORMALE //2700 PNETTO = S_NORMALE //2700
DESUMPNETTO = S_NASCOSTO //2700 DESUMPNETTO = S_NASCOSTO //2700
NCOLLI = S_NORMALE //2800 NCOLLI = S_NORMALE //2800
CAUSMAG1 = S_NASCOSTO //2900 CAUSMAG = S_OBBLIGATORIO //2900
DESCRMAG1 = S_NASCOSTO //2900 DESCRMAG = S_NORMALE //2900
CAUSMAG2 = S_NASCOSTO //2900
DESCRMAG2 = S_NASCOSTO //2900
[DEFAULT] [DEFAULT]
@ -144,7 +142,7 @@ NDEFAULTS=1
1=F_CAUSTRASP|RES 1=F_CAUSTRASP|RES
[SHEET] [SHEET]
NCOLS=11 NCOLS=14
1=FR_CODMAG 1=FR_CODMAG
2=FR_CODDEP 2=FR_CODDEP
3=FR_CODART 3=FR_CODART
@ -156,6 +154,9 @@ NCOLS=11
9=FR_UMQTA 9=FR_UMQTA
10=FR_QTA 10=FR_QTA
11=FR_CODIVA 11=FR_CODIVA
12=FR_CAUS
13=FR_CODMAGC
14=FR_CODDEPC
[RIGHE] [RIGHE]
NTIPIRIGA=1 NTIPIRIGA=1

View File

@ -70,7 +70,6 @@ public:
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock); virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock);
int read(char tipo, long codice, word op = _isequal, word lockop = _nolock); int read(char tipo, long codice, word op = _isequal, word lockop = _nolock);
virtual int remove(TBaseisamfile& f) const; virtual int remove(TBaseisamfile& f) const;
// int remove() const { return TMultiple_rectype::remove();}
TCli_for(char tipo = ' ', long codice = 0L); TCli_for(char tipo = ' ', long codice = 0L);
TCli_for(const TRectype & rec); TCli_for(const TRectype & rec);

View File

@ -1,3 +1,3 @@
33 33
0 0
$doc|0|0|386|31|Documenti di vendita|NDOC|| $doc|0|0|391|31|Documenti di vendita|NDOC||

View File

@ -1,7 +1,7 @@
33 33
68 68
CODNUM|1|4|0|Codice della numerazione 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 PROVV|1|1|0|Tipo numerazione <P>rovvisorio <D>efinitivo
NDOC|3|7|0|Numero documento NDOC|3|7|0|Numero documento
TIPODOC|1|4|0|Tipo 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 UMPNETTO|1|2|0|Unità di misura per il peso netto
PNETTO|4|15|2|Peso netto PNETTO|4|15|2|Peso netto
NCOLLI|3|7|0|Numero di colli NCOLLI|3|7|0|Numero di colli
CAUSMAG1|1|3|0|Causale di magazzino 1 CAUSMAG|1|4|0|Causale di magazzino
CAUSMAG2|1|3|0|Causale di magazzino 2 MOVMAG|3|7|0|Numero movimento di magazzino
CODNOTE|1|2|0|Codice note cliente CODNOTE|1|2|0|Codice note cliente
NOTE|11|10|0|Note NOTE|11|10|0|Note
G1|11|10|0|Campo generale 1 G1|11|10|0|Campo generale 1

View File

@ -1,3 +1,3 @@
34 34
0 0
$rdoc|0|0|278|31|Righe documenti di vendita|NDOC*3|| $rdoc|0|0|305|31|Righe documenti di vendita|NDOC*3||

View File

@ -1,6 +1,6 @@
34 34
32 36
CODNUM|1|4|0| CODNUM|1|4|0|Codice Numeriazione
ANNO|2|4|0|Anno ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva
NDOC|3|7|0|N. documento NDOC|3|7|0|N. documento
@ -10,6 +10,8 @@ TIPORIGA|1|3|0|Tipo riga
GENERATA|8|1|0|Riga generata GENERATA|8|1|0|Riga generata
CODMAG|1|5|0|Codice magazzino e deposito CODMAG|1|5|0|Codice magazzino e deposito
CODART|1|20|0|Codice articolo, codice spesa o codice prestazione 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 LIVELLO|1|15|0|Codice di giacenza
DESCR|1|50|0|Descrizione DESCR|1|50|0|Descrizione
DESCLUNGA|8|1|0|Descrizione estesa caricata 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 CODIVA|1|4|0|Codice IVA
ADDIVA|8|1|0|Addebito IVA ADDIVA|8|1|0|Addebito IVA
ASPBENI|1|2|0|Aspetto dei beni ASPBENI|1|2|0|Aspetto dei beni
G1|11|10|0|????
PSPESA|4|5|2|Percentuale di spesa 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 1
CODNUM+ANNO+PROVV+NDOC+NRIGA| CODNUM+ANNO+PROVV+NDOC+NRIGA|

View File

@ -177,10 +177,6 @@ UMPNETTO = S_NORMALE //2700
PNETTO = S_NORMALE //2700 PNETTO = S_NORMALE //2700
DESUMPNETTO = S_NASCOSTO //2700 DESUMPNETTO = S_NASCOSTO //2700
NCOLLI = S_NORMALE //2800 NCOLLI = S_NORMALE //2800
CAUSMAG1 = S_NASCOSTO //2900
DESCRMAG1 = S_NASCOSTO //2900
CAUSMAG2 = S_NASCOSTO //2900
DESCRMAG2 = S_NASCOSTO //2900
BLANK = S_DISABILITATO //4000 BLANK = S_DISABILITATO //4000
//NOTECLI = S_NORMALE //2500 //NOTECLI = S_NORMALE //2500
//RAGGR = S_NORMALE //RAGGR = S_NORMALE

View File

@ -242,7 +242,7 @@ bool TCond_vendita::cerca( int tiporicerca )
{ {
case 'A': case 'A':
{ {
const TString codriga = riga().get(FR_CODART); const TString codriga = riga().get(FR_CODARTMAG);
_rcondv.put( "CODRIGA", codriga); _rcondv.put( "CODRIGA", codriga);
if (_rcondv.read() != NOERR && 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) void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only)
{ {
TString codart = anamag().get( "CODART" ); 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); _ivarid = clifo().vendite().get_bool(CFV_IVARID);
_load_mask = !load_um_only && !load_scagl_only; _load_mask = !load_um_only && !load_scagl_only;
@ -531,14 +531,14 @@ void TCond_vendita::update_omaggi(bool full)
TDocumento & doc = testa().doc(); TDocumento & doc = testa().doc();
bool update = FALSE; bool update = FALSE;
if (doc[current_doc_row].tipo().tipo() == RIGA_OMAGGI) if (doc[current_doc_row].is_omaggio())
return; return;
if (current_doc_row < doc.rows()) if (current_doc_row < doc.rows())
{ {
TRiga_documento & r = doc[current_doc_row + 1]; 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); doc.destroy_row(current_doc_row + 1, TRUE);
sh.destroy(current_doc_row, FALSE); sh.destroy(current_doc_row, FALSE);
@ -557,23 +557,17 @@ void TCond_vendita::update_omaggi(bool full)
TConfig cnf(CONFIG_STUDIO, "ve"); TConfig cnf(CONFIG_STUDIO, "ve");
tipo_riga = cnf.get("TROMAGGI"); 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 /= _rcondv.get_real("QBASE");
qta.floor(); qta.floor();
qta *= _rcondv.get_real("QOM"); 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("QTA", qta);
r.put("PREZZO", _rcondv.get("PROMAGGIO")); r.put("PREZZO", _rcondv.get("PROMAGGIO"));
const TString16 codiva_cli(clifo().vendite().get(CFV_ASSFIS)); 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); sh.insert(current_doc_row, FALSE);
r.autoload(sh); r.autoload(sh);
sh.check_row(current_doc_row); sh.check_row(current_doc_row);
r.autosave(sh);
update = TRUE; update = TRUE;
} }
} }

View File

@ -10,6 +10,10 @@
#include "veini.h" #include "veini.h"
#endif #endif
#ifndef __MODAUT_H
#include <modaut.h>
#endif
#ifndef __MGLIB_H #ifndef __MGLIB_H
#include "..\mg\mglib.h" #include "..\mg\mglib.h"
#endif #endif
@ -153,7 +157,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
if (r < app()._doc->rows()) if (r < app()._doc->rows())
{ {
TRiga_documento & riga = (*(app()._doc))[r + 1]; 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); ss.destroy(r + 1);
app()._doc->destroy_row(r + 1, TRUE); 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()) if (r < app()._doc->rows())
{ {
TRiga_documento & riga = (*(app()._doc))[r + 1]; TRiga_documento & riga = (*(app()._doc))[r + 1];
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata()) if (riga.is_omaggio() && riga.is_generata())
return FALSE; return FALSE;
} }
TMask & emask = app().edit_mask(); TMask & emask = app().edit_mask();
@ -193,23 +197,21 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
// Ottengo la maschera // Ottengo la maschera
TMask& m = f.mask( ); 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()); TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
if ( tabnum.good()) if ( tabnum.good())
{ {
// Copio la descrizione della numerazione if (app()._cod_num)
m.set( F_DESNUM, tabnum.get( "S0" ) ); delete app()._cod_num;
// Copio i tipi di documento validi per la numerazione app()._cod_num = new TCodice_numerazione(tabnum.curr());
const TString tipidocs( tabnum.get( "S2" ) ); TCodice_numerazione * c = app()._cod_num;
m.set( F_TIPIDOCS, tipidocs ); m.set( F_DESNUM, c->descrizione());
TString16 curtipo( m.get( F_TIPODOC ) );
// Propone il primo tipo di documento come default // 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 ); m.send_key( K_TAB, F_TIPODOC );
// Se per questa numerazione h abilitata le numerazione provvisoria // Se per questa numerazione h abilitata le numerazione provvisoria
if ( tabnum.get_bool ( "B0" ) ) if (c->num_provv())
{ {
// Setta di default la numerazione provvisoria // Setta di default la numerazione provvisoria
m.set( F_PROVV, "P" ); m.set( F_PROVV, "P" );
@ -227,7 +229,6 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
else else
{ {
m.set( F_DESNUM, "" ); m.set( F_DESNUM, "" );
m.set( F_TIPIDOCS, "" );
m.set( F_TIPODOC, "" ); m.set( F_TIPODOC, "" );
} }
} }
@ -331,35 +332,16 @@ bool TMotore_application::tip_handler( TMask_field& f, KEY key )
TMask& m = f.mask( ); TMask& m = f.mask( );
if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty()) if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty())
{ {
TString tipi_consentiti( m.get( F_TIPIDOCS ) ); const TString16 tipo(f.get());
TString16 tipo( f.get( ) ); TCodice_numerazione * c = app()._cod_num;
tipo.trim( ); int last = c->ntipi_doc();
bool tipo_valido = FALSE; for (int i = 0; i < last; i++ )
for ( int i = 0; i < 10; i ++ )
{ {
TString16 curtipo( tipi_consentiti.mid( i * 4, 4 ) ); const TString16 curtipo(c->tipo_doc(i));
curtipo.trim( );
if (curtipo == tipo) if (curtipo == tipo)
{ return TRUE;
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 message_box( "Tipo non valido per la numerazione selezionata!" );
} }
return TRUE; return TRUE;
} }
@ -429,6 +411,8 @@ void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config
} }
to_delete.reset(0); to_delete.reset(0);
to_delete.reset(1); 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); const int sconto_col = sheet.cid2index(FR_SCONTO);
if (to_delete[sconto_col] == FALSE) 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_DESAG, gesage);
msk1->enable(F_CODAGVIS, gesage); msk1->enable(F_CODAGVIS, gesage);
msk1->enable(F_DESAGVIS, 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 else
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET ); _sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
@ -623,15 +614,10 @@ const char* TMotore_application::get_next_key( )
{ {
TToken_string key; TToken_string key;
TMask& m = curr_mask( ); 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 // Se per questa numerazione h abilitata le numerazione automatica
if( _cod_num->auto_num())
{ {
TLocalisamfile doc(LF_DOC); TLocalisamfile doc(LF_DOC);
doc.zero(); doc.zero();
@ -649,16 +635,11 @@ const char* TMotore_application::get_next_key( )
key.format( "%d|%d", F_NDOC, num); key.format( "%d|%d", F_NDOC, num);
} }
}
return key; return key;
} }
int TMotore_application::read( TMask& m ) int TMotore_application::read( TMask& m )
{ {
// const int err = _doc->read(_doc->head());
// if ( err == NOERR )
// {
m.autoload(*_rel); m.autoload(*_rel);
_codnum = m.get(F_CODNUM); _codnum = m.get(F_CODNUM);
_tipodoc = m.get(F_TIPODOC); _tipodoc = m.get(F_TIPODOC);
@ -677,8 +658,6 @@ int TMotore_application::read( TMask& m )
rec.autoload(f); rec.autoload(f);
f.check_row(i - 1); f.check_row(i - 1);
} }
// }
// return err;
return NOERR; return NOERR;
} }
@ -750,16 +729,20 @@ bool TMotore_application::user_create( )
// Metto in relazione testata e righe // Metto in relazione testata e righe
_rel = new TRelation( LF_DOC ); _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, 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; _doc = new TDocumento;
_rel->lfile().set_curr(_doc); _rel->lfile().set_curr(_doc);
_doc->set_relation(_rel); _doc->set_relation(_rel);
_cod_num = NULL;
_condv = new TCond_vendita(&doc().clifor(), _config_ditta); _condv = new TCond_vendita(&doc().clifor(), _config_ditta);
_doc->set_condv(_condv); _doc->set_condv(_condv);
_msk = new TMask("ve0100a"); _msk = new TMask("ve0100a");
set_search_field(F_NDOC);
query_mask().set_handler( F_CODNUM, num_handler ); query_mask().set_handler( F_CODNUM, num_handler );
query_mask().set_handler( F_TIPODOC, tip_handler );
_occas_mask = new TMask("ve0100o"); _occas_mask = new TMask("ve0100o");
_occas_mask->set_handler( O_CODICE, occas_code_handler ); _occas_mask->set_handler( O_CODICE, occas_code_handler );
TConfig utente( CONFIG_USER ); TConfig utente( CONFIG_USER );
@ -785,6 +768,8 @@ bool TMotore_application::user_destroy( )
// Distruggo la maschera di modifica // Distruggo la maschera di modifica
if ( _msk != NULL ) if ( _msk != NULL )
delete _msk; delete _msk;
if (_cod_num)
delete _cod_num;
// Distruggo la relazione // Distruggo la relazione
delete _rel; delete _rel;

View File

@ -69,14 +69,6 @@
#include <msksheet.h> #include <msksheet.h>
#endif #endif
#ifndef __VE0100C_H
#include "ve0100c.h"
#endif
#ifndef __VE0100D_H
#include "ve0100d.h"
#endif
#ifndef __VARMASK_H #ifndef __VARMASK_H
#include <varmask.h> #include <varmask.h>
#endif #endif
@ -100,6 +92,7 @@ class TMotore_application : public TRelation_application
TArray _file; // Tutti i fiels da usare TArray _file; // Tutti i fiels da usare
TDocumento * _doc; TDocumento * _doc;
TCodice_numerazione * _cod_num;
// Puntatore al profilo del documento caricato // Puntatore al profilo del documento caricato
TConfig * _pro; TConfig * _pro;

View File

@ -22,7 +22,6 @@ PAGE "Gestione documenti" 1 1 60 14
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB OUTPUT F_CODNUM CODTAB
OUTPUT F_DESNUM S0 OUTPUT F_DESNUM S0
OUTPUT F_TIPIDOCS S2
CHECKTYPE FORCED CHECKTYPE FORCED
FLAG "UPA" FLAG "UPA"
WARNING "Numerazione assente" WARNING "Numerazione assente"
@ -115,12 +114,5 @@ PAGE "Gestione documenti" 1 1 60 14
FLAG "D" FLAG "D"
END END
STRING F_TIPIDOCS 40
BEGIN
PROMPT 2 10 ""
FLAG "H"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -173,6 +173,9 @@ public:
// OUTPUT // OUTPUT
void output( const TString& s ){ outline( s, "OU " ); }; void output( const TString& s ){ outline( s, "OU " ); };
// copy
void copy( const TString& s ){ outline( s, "CO " ); };
// Funzioni per la lettura/scrittura di CURPAGE // Funzioni per la lettura/scrittura di CURPAGE
int page( ) { return _curpage; }; int page( ) { return _curpage; };
void page( const int i ){ _curpage = i; }; void page( const int i ){ _curpage = i; };
@ -431,6 +434,7 @@ class TField : public TObject
int _x, _y; int _x, _y;
TString _prompt, _flag, _help, _warning, _fieldname; TString _prompt, _flag, _help, _warning, _fieldname;
TToken_string _use, _input, _display, _output, _special, _items, _configs; TToken_string _use, _input, _display, _output, _special, _items, _configs;
TToken_string _copy;
public: public:
@ -477,6 +481,7 @@ public:
void input( TToken_string& input ){ _input = input; } void input( TToken_string& input ){ _input = input; }
void display( TToken_string& display ){ _display = display; } void display( TToken_string& display ){ _display = display; }
void output( TToken_string& output ){ _output = output; } void output( TToken_string& output ){ _output = output; }
void copy( TToken_string& copy ){ _copy = copy; }
void special( TToken_string& special ){ _special = special; } void special( TToken_string& special ){ _special = special; }
void items( TToken_string& items ){ _items = items; } void items( TToken_string& items ){ _items = items; }
void configs( TToken_string& configs ){ _configs = configs; } void configs( TToken_string& configs ){ _configs = configs; }
@ -484,6 +489,7 @@ public:
TToken_string& input( ){ return _input; } TToken_string& input( ){ return _input; }
TToken_string& display( ){ return _display; } TToken_string& display( ){ return _display; }
TToken_string& output( ){ return _output; } TToken_string& output( ){ return _output; }
TToken_string& copy( ){ return _copy; }
TToken_string& special( ){ return _special; } TToken_string& special( ){ return _special; }
TToken_string& items( ){ return _items; } TToken_string& items( ){ return _items; }
TToken_string& configs( ){ return _configs; } TToken_string& configs( ){ return _configs; }
@ -619,6 +625,8 @@ TField::TField( TString& campo, TConfig& pro ) : _nome( campo )
_display.separator( '~' ); _display.separator( '~' );
_output = pro.get( "OUTPUT", campo ); _output = pro.get( "OUTPUT", campo );
_output.separator( '~' ); _output.separator( '~' );
_copy = pro.get( "COPY", campo );
_copy.separator( '~' );
_special = pro.get( "SPECIAL", campo ); _special = pro.get( "SPECIAL", campo );
_special.separator( '~' ); _special.separator( '~' );
_configs = pro.get( "CONFIGS", campo ); _configs = pro.get( "CONFIGS", campo );
@ -653,6 +661,8 @@ TField::TField( )
_display.separator( '~' ); _display.separator( '~' );
_output = ""; _output = "";
_output.separator( '~' ); _output.separator( '~' );
_copy = "";
_copy.separator( '~' );
_special = ""; _special = "";
_special.separator( '~' ); _special.separator( '~' );
_configs = ""; _configs = "";
@ -682,6 +692,7 @@ TObject* TField::dup() const
f->_input = _input; f->_input = _input;
f->_display = _display; f->_display = _display;
f->_output = _output; f->_output = _output;
f->_copy = _copy;
f->_special = _special; f->_special = _special;
f->_items = _items; f->_items = _items;
f->_configs = _configs; f->_configs = _configs;
@ -804,6 +815,7 @@ void TField::genera( )
if ( !_input.blank( ) ) m.input( _input ); if ( !_input.blank( ) ) m.input( _input );
if ( !_display.blank( ) ) m.display( _display ); if ( !_display.blank( ) ) m.display( _display );
if ( !_output.blank( ) ) m.output( _output ); if ( !_output.blank( ) ) m.output( _output );
if ( !_copy.blank( ) ) m.copy( _copy );
if ( !_help.blank( ) ) m.help( _help ); if ( !_help.blank( ) ) m.help( _help );
if ( !_warning.blank( ) ) m.warning( _warning ); if ( !_warning.blank( ) ) m.warning( _warning );
if ( !_special.blank( ) ) m.outline( _special ); 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 ); campo->display( (TToken_string & )value );
else if( key == "OUTPUT" ) else if( key == "OUTPUT" )
campo->output( (TToken_string & )value ); campo->output( (TToken_string & )value );
else if( key == "COPY" )
campo->copy( (TToken_string & )value );
else if( key == "WARNING" ) else if( key == "WARNING" )
campo->warning( value ); campo->warning( value );
else if( key == "HELP" ) else if( key == "HELP" )
@ -1280,13 +1294,13 @@ void TMask_generator::genera( const TString& profilo )
_m->flag( "DG" ); _m->flag( "DG" );
_m->end( ); _m->end( );
_m->control( T_STRINGA, F_ANNO, 4 ); // _m->control( T_STRINGA, F_ANNO, 4 );
_m->begin( ); // _m->begin( );
_m->prompt( 66, 3, "Es. " ); // _m->prompt( 66, 3, "Es. " );
_m->field( "ANNO" ); // _m->field( "ANNO" );
_m->flag( "GD" ); // _m->flag( "GD" );
_m->message( "CO,9@" ); // _m->message( "CO,9@" );
_m->end( ); // _m->end( );
_m->control( T_STRINGA, F_CODCF, 6 ); _m->control( T_STRINGA, F_CODCF, 6 );
_m->begin( ); _m->begin( );

View File

@ -1513,51 +1513,37 @@ SIZE=0700
WARNING=Numero di colli errato o non presente !!! WARNING=Numero di colli errato o non presente !!!
HELP=Inserisci il numero dei colli HELP=Inserisci il numero dei colli
[CAUSMAG1] [CAUSMAG]
GROUP=2900 GROUP=2900
X=2 X=2
Y=0 Y=0
FIELDNAME=CAUSMAG1 FIELDNAME=CAUSMAG
MSKID=F_CAUSMAG1 MSKID=F_CAUSMAG
TYPE=T_STRINGA TYPE=T_STRINGA
PROMPT="Causale mag. 1 " PROMPT="Causale magazzino "
SIZE=3 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 FLAG=U
WARNING=Codice causale non trovato WARNING=Codice causale non trovato
HELP=Inserisci il codice della causale HELP=Inserisci il codice della causale
[DESCRMAG1] [DESCRMAG]
GROUP=2900 GROUP=2900
X=24 X=27
Y=0 Y=0
MSKID=F_DESCRMAG1 MSKID=F_DESCRMAG
TYPE=T_STRINGA 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 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] [BLANK]
GROUP=4000 GROUP=4000

View File

@ -24,3 +24,8 @@ IMPFISSO|3|1802|Importo Fisso|18
CODIVA|2|4|Cod.IVA|4 CODIVA|2|4|Cod.IVA|4
ADDIVA|4||Addebito IVA|1 ADDIVA|4||Addebito IVA|1
ASPBENI|2|3|Aspetto beni|3 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

View File

@ -174,8 +174,6 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
read(nomeform); read(nomeform);
_cli_loaded= FALSE; _cli_loaded= FALSE;
_is_lista = FALSE; _is_lista = FALSE;
_condv = new TCond_vendita(_cliente);
_condv = new TCond_vendita(NULL); _condv = new TCond_vendita(NULL);
_doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso _doc = new TDocumentoEsteso(doc, _condv); // istanzia TDocumentoEsteso
_condv->set_clifo(&_doc->clifor()); _condv->set_clifo(&_doc->clifor());

View File

@ -35,8 +35,8 @@
#include <progind.h> #include <progind.h>
#include <modaut.h> #include <modaut.h>
#include "../cg/cg2101.h" #include "../cg/cg2101.h"
#include "../cg/cglib.h" #include "../cg/cg2103.h"
#include "../cg/saldacon.h" #include "../cg/cgsaldac.h"
#include "velib.h" #include "velib.h"
#include "ve6100a.h" #include "ve6100a.h"

View File

@ -34,7 +34,7 @@
#include <effetti.h> #include <effetti.h>
#include <reffetti.h> #include <reffetti.h>
#include "../cg/saldacon.h" #include "../cg/cgsaldac.h"
#include "../ef/ef0101.h" #include "../ef/ef0101.h"
#include "velib.h" #include "velib.h"
#include "sconti.h" #include "sconti.h"

View File

@ -25,8 +25,8 @@
#include "clifor.h" #include "clifor.h"
#endif #endif
#ifndef __PAGAMENT_H #ifndef __CGPAGAME_H
#include "../cg/pagament.h" #include "../cg/cgpagame.h"
#endif #endif
#define RIGA_MERCE 'M' #define RIGA_MERCE 'M'
@ -35,6 +35,7 @@
#define RIGA_SCONTI 'C' #define RIGA_SCONTI 'C'
#define RIGA_OMAGGI 'O' #define RIGA_OMAGGI 'O'
#define RIGA_DESCRIZIONI 'D' #define RIGA_DESCRIZIONI 'D'
#define MAX_TIPI_DOC 10
class TDocumento; class TDocumento;
class TRiga_documento; class TRiga_documento;
@ -228,6 +229,9 @@ public:
const TString & totale_netto() const { return _totale_netto; } const TString & totale_netto() const { return _totale_netto; }
const TString & basesconto() const { return _basesconto;} const TString & basesconto() const { return _basesconto;}
const TString & spese() const { return _spese;} 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 * first_formula() { return succ_formula(TRUE); }
TFormula_documento * succ_formula(bool restart = FALSE); TFormula_documento * succ_formula(bool restart = FALSE);
@ -299,8 +303,18 @@ public:
bool doc_dependent() const; bool doc_dependent() const;
int numero() const { return get_int("NRIGA");} int numero() const { return get_int("NRIGA");}
void set_numero(int numero) { put("NRIGA", numero);} void set_numero(int numero) { put("NRIGA", numero);}
bool generata() const { return get_bool("GENERATA");} bool is_generata() const { return get_bool("GENERATA");}
void set_generata(bool on = TRUE) { put("GENERATA", on);} 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 // @cmember Assegna il documento corrente
void set_doc(TDocumento * doc) { _doc = doc; } void set_doc(TDocumento * doc) { _doc = doc; }
const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;} const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
@ -732,15 +746,19 @@ public:
public: public:
int read(const char * cod); int read(const char * cod);
const TString& codice() const { return get("CODTAB"); } const TString& codice() const { return get("CODTAB"); }
const TString& descrizione() const { return get("S0"); }
const TString& prefisso() const { return get("S6"); } const TString& prefisso() const { return get("S6"); }
const TString& postfisso() const { return get("S7"); } 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 bool auto_num() const { return get_bool("B1"); }
const TString& tipo_doc1() { return get("S2").mid(0,4);} // const TString& tipo_doc1() { return get("S2").mid(0,4);}
const TString& tipo_doc2() { return get("S2").mid(4,4);} // const TString& tipo_doc2() { return get("S2").mid(4,4);}
const TString& tipo_doc3() { return get("S2").mid(8,4);} // const TString& tipo_doc3() { return get("S2").mid(8,4);}
const TString& tipo_doc4() { return get("S2").mid(12,4);} // const TString& tipo_doc4() { return get("S2").mid(12,4);}
const TString& tipo_doc5() { return get("S2").mid(16,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); const char * complete_num (long num);
int status() { return _status; } int status() { return _status; }

View File

@ -7,6 +7,10 @@
#include <expr.h> #include <expr.h>
#endif #endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __VERIG_H #ifndef __VERIG_H
#include "verig.h" #include "verig.h"
#endif #endif
@ -248,7 +252,7 @@ bool codart_handler( TMask_field& f, KEY key )
} }
row_mask.field(FR_LIV1).on_hit(); 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(); TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask();
TCond_vendita & condv = mask.condv(); TCond_vendita & condv = mask.condv();
@ -264,7 +268,10 @@ bool codart_handler( TMask_field& f, KEY key )
TString80 codart(f.get()); TString80 codart(f.get());
anamag.setkey(1); anamag.setkey(1);
anamag.put("CODART", codart); 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); TLocalisamfile codalt(LF_CODCORR);
@ -275,15 +282,18 @@ bool codart_handler( TMask_field& f, KEY key )
codart = codalt.get("CODART"); codart = codalt.get("CODART");
anamag.zero(); anamag.zero();
anamag.put("CODART", codart); anamag.put("CODART", codart);
if (anamag.read() == NOERR) found = anamag.read() == NOERR;
f.set(codart); if (found)
row_mask.set(FR_CODARTMAG, codart, TRUE);
} }
} }
row_mask.set(FR_CHECKED, "X");
if (anamag.good()) if (!found)
row_mask.set(FR_CODARTMAG, "", TRUE);
else
{ {
const TString16 lingua = mask.get(F_CODLIN); 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")); TString desc(anamag.get("DESCR"));
if (lingua.not_empty()) if (lingua.not_empty())
@ -323,6 +333,28 @@ bool codart_handler( TMask_field& f, KEY key )
return TRUE; 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 ) bool liv_handler( TMask_field& f, KEY key )
{ {
if (f.to_check(key, TRUE)) 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(); real & val = stack.peek_real();
if (_row) if (_row)
{ {
if (_row->tipo().tipo() == RIGA_SCONTI) if (_row->is_sconto())
val = -_row->importo(FALSE, FALSE, ndec); val = -_row->importo(FALSE, FALSE, ndec);
else else
val = _row->importo(FALSE, FALSE, ndec) - _row->importo(TRUE, FALSE, ndec); val = _row->importo(FALSE, FALSE, ndec) - _row->importo(TRUE, FALSE, ndec);

View File

@ -5,8 +5,8 @@
#include <applicat.h> #include <applicat.h>
#endif #endif
#ifndef __VE0100C_H #ifndef __TABUTIL_H
#include "ve0100c.h" #include <tabutil.h>
#endif #endif
#ifndef __VERIG_H #ifndef __VERIG_H
@ -152,6 +152,7 @@ TVariable_mask * TTipo_riga_documento::mask()
_mask->set_handler( FR_LIV2, liv_handler ); _mask->set_handler( FR_LIV2, liv_handler );
_mask->set_handler( FR_LIV3, liv_handler ); _mask->set_handler( FR_LIV3, liv_handler );
_mask->set_handler( FR_UMQTA, umart_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_DESCR, descr_handler );
_mask->set_handler( FR_QTA, qta_handler ); _mask->set_handler( FR_QTA, qta_handler );
} }
@ -267,7 +268,7 @@ bool TRiga_documento::sola_descrizione() const
void TRiga_documento::forza_sola_descrizione() void TRiga_documento::forza_sola_descrizione()
{ {
// In realta' il test serve anche a caricare la lista dei tipi riga! // 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(); _tipi.restart();
for (const TObject* o = _tipi.get(); o; o = _tipi.get()) for (const TObject* o = _tipi.get(); o; o = _tipi.get())
@ -457,7 +458,7 @@ real TRiga_documento::imponibile() const
if (field.not_empty()) 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); TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field);
CHECKS(f, "Field UNKNOWN : ", 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) void TRiga_documento::zero(const char * fieldname)
{ {
if (strcmp(fieldname, "TIPORIGA") == 0) 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( "CODIVA", row.get( f.cid2index(FR_CODIVA )) );
put( "ADDIVA", row.get( f.cid2index(FR_ADDIVA )) ); put( "ADDIVA", row.get( f.cid2index(FR_ADDIVA )) );
put( "ASPBENI", row.get( f.cid2index(FR_ASPBENI )) ); 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( "CODIVA" ), f.cid2index(FR_CODIVA ));
row.add( get( "ADDIVA" ), f.cid2index(FR_ADDIVA )); row.add( get( "ADDIVA" ), f.cid2index(FR_ADDIVA ));
row.add( get( "ASPBENI" ), f.cid2index(FR_ASPBENI )); 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));
} }

View File

@ -10,6 +10,10 @@
#include "veuml.h" #include "veuml.h"
#endif #endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __UTILITY_H #ifndef __UTILITY_H
#include <utility.h> #include <utility.h>
#endif #endif
@ -18,15 +22,49 @@
#include "veini.h" #include "veini.h"
#endif #endif
#ifndef __DEFMASK_H #ifndef __MGLIB_H
//#include <defmask.h> #include "../mg/mglib.h"
#endif #endif
#ifndef __SCONTI_H #ifndef __SCONTI_H
#include "sconti.h" #include "sconti.h"
#endif #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 // Tipo documento
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -610,6 +648,10 @@ void TDocumento::dirty_fields()
int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
{ {
const bool nuovo = _nuovo || numero() <= 0; // E' nuovo di zecca! 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 ... if (nuovo && re) // quindi ...
re = FALSE; // ... non fare la rewrite 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)); const TString80 occ_code(occas().get(OCC_CFPI));
((TDocumento *)this)->put("OCFPI", occ_code); ((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) if (re)
{ {
err = _rows.write(re); err = _rows.write(re);
@ -662,7 +834,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
} }
return err; return err;
} }
// eliminare anche il mov di mag. ??????
int TDocumento::remove(TBaseisamfile& f) const int TDocumento::remove(TBaseisamfile& f) const
{ {
int err = _rows.remove(); 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); 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) if (preserve_old)
return; return;
@ -1047,7 +1219,7 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
TRiga_documento & riga = new_row(tipo); TRiga_documento & riga = new_row(tipo);
riga.put("CODART", s); riga.put("CODART", s);
riga.set_generata(); riga.generata();
riga.put("DESCR", sp.descrizione()); riga.put("DESCR", sp.descrizione());
switch (sp.tipo()) switch (sp.tipo())
{ {

View File

@ -5,6 +5,10 @@
#include <execp.h> #include <execp.h>
#endif #endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Lista di documenti // Lista di documenti
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

View File

@ -1,5 +1,9 @@
#include "velib.h" #include "velib.h"
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////
// TCodice_numerazione // TCodice_numerazione
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////

View File

@ -13,6 +13,10 @@
#include "veuml1.h" #include "veuml1.h"
#endif #endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __UTILITY_H #ifndef __UTILITY_H
#include <utility.h> #include <utility.h>
#endif #endif

View File

@ -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 ); void row_set_handler( TMask& m, const int field, const int index );
bool liv_handler( TMask_field& f, KEY key ); bool liv_handler( TMask_field& f, KEY key );
bool sppr_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 ); bool iva_handler( TMask_field& f, KEY key );
void sppr_calc(TRectype & rec, const TString & valuta_doc, const real & cambio, real & prezzo); 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);

View File

@ -26,6 +26,8 @@
// UMQTA UMQTASP UMQTAPR alternativi definirne uno solo // UMQTA UMQTASP UMQTAPR alternativi definirne uno solo
#define FR_UMQTA 111 #define FR_UMQTA 111
#define FR_UMQTASP 111 #define FR_UMQTASP 111
// UMQTA2 da non definire
#define FR_UMQTA2 211
// QTA PERCSP alternativi definirne uno solo // QTA PERCSP alternativi definirne uno solo
#define FR_QTA 112 #define FR_QTA 112
#define FR_PERCSP 112 #define FR_PERCSP 112
@ -46,7 +48,13 @@
#define FR_CODIVA 124 #define FR_CODIVA 124
#define FR_ADDIVA 125 #define FR_ADDIVA 125
#define FR_ASPBENI 126 #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 MAX_COLUMNS FR_END-FR_STATORIGA
#define FR_DESMAG 150 #define FR_DESMAG 150
@ -54,4 +62,7 @@
#define FR_DESIVA 152 #define FR_DESIVA 152
#define FR_DESASP 153 #define FR_DESASP 153
#define FR_DESTIPORIGA 154 #define FR_DESTIPORIGA 154
#define FR_DESCRCAUS 155
#define FR_DESMAGC 156
#define FR_DESDEPC 157
#endif #endif

View File

@ -108,7 +108,7 @@ IFDEF(F_CODDEP)
STRING FR_CODDEP 2 STRING FR_CODDEP 2
BEGIN BEGIN
IFDEF(X_CODDEP) IFDEF(X_CODDEP)
PROMPT X_DESMAG Y_DESMAG PR_DESMAG PROMPT X_CODDEP Y_CODDEP PR_CODDEP
ELSEIF ELSEIF
PROMPT 2 4 "Deposito " PROMPT 2 4 "Deposito "
ENDIF ENDIF
@ -173,6 +173,20 @@ ENDIF
ADD RUN ve2 -3 ADD RUN ve2 -3
END 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 STRING FR_LIV1 10
BEGIN BEGIN
IFDEF(X_LIV1) IFDEF(X_LIV1)
@ -478,7 +492,7 @@ ELSEIF
ENDIF ENDIF
USE LF_UMART KEY 2 USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM JOIN %UMS INTO CODTAB=UM
INPUT CODART FR_CODART SE INPUT CODART FR_CODARTMAG SE
INPUT UM FR_UMQTA INPUT UM FR_UMQTA
DISPLAY "Codice@20" UM DISPLAY "Codice@20" UM
DISPLAY "Descrizione@50" %UMS->S0 DISPLAY "Descrizione@50" %UMS->S0
@ -491,6 +505,27 @@ ELSEIF
CHECKTYPE NORMAL CHECKTYPE NORMAL
ENDIF ENDIF
END 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 ENDIF
IFDEF(F_UMQTASP) IFDEF(F_UMQTASP)
@ -775,6 +810,131 @@ END
ENDIF ENDIF
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 #ifndef FULL_SCREEN
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN

View File

@ -24,6 +24,12 @@ DEFINE_FIELD(DESIVA)
DEFINE_FIELD(ADDIVA) DEFINE_FIELD(ADDIVA)
DEFINE_FIELD(ASPBENI) DEFINE_FIELD(ASPBENI)
DEFINE_FIELD(DESASP) DEFINE_FIELD(DESASP)
DEFINE_FIELD(CAUS)
DEFINE_FIELD(DESCRCAUS)
DEFINE_FIELD(CODMAGC)
DEFINE_FIELD(DESMAGC)
DEFINE_FIELD(CODDEPC)
DEFINE_FIELD(DESDEPC)
#include "verig.uml" #include "verig.uml"

View File

@ -29,6 +29,13 @@ DEFINE_FIELD(CODIVA)
F_POS(CODIVA, 2, 13,"Cod. IVA " ) F_POS(CODIVA, 2, 13,"Cod. IVA " )
DEFINE_FIELD(DESIVA) DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 13,"" ) 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" #include "verig.uml"

View File

@ -25,6 +25,12 @@ F_POS(CODIVA, 2, 11,"Cod. IVA " )
DEFINE_FIELD(DESIVA) DEFINE_FIELD(DESIVA)
F_POS(DESIVA, 22, 11,"" ) F_POS(DESIVA, 22, 11,"" )
DEFINE_FIELD(ADDIVA) DEFINE_FIELD(ADDIVA)
DEFINE_FIELD(CAUS)
DEFINE_FIELD(DESCRCAUS)
DEFINE_FIELD(CODMAGC)
DEFINE_FIELD(DESMAGC)
DEFINE_FIELD(CODDEPC)
DEFINE_FIELD(DESDEPC)
#include "verig.uml" #include "verig.uml"

View File

@ -59,8 +59,7 @@
#define F_UMPNETTO 161 #define F_UMPNETTO 161
#define F_PNETTO 162 #define F_PNETTO 162
#define F_NCOLLI 163 #define F_NCOLLI 163
#define F_CAUSMAG1 164 #define F_CAUSMAG 164
#define F_CAUSMAG2 165
#define F_NOTE 166 #define F_NOTE 166
#define F_G1 167 #define F_G1 167
#define F_G2 168 #define F_G2 168

View File

@ -38,8 +38,7 @@
#define F_DESCRBENI2 323 #define F_DESCRBENI2 323
#define F_DESUMTARA 324 #define F_DESUMTARA 324
#define F_DESUMPNETTO 325 #define F_DESUMPNETTO 325
#define F_DESCRMAG1 326 #define F_DESCRMAG 326
#define F_DESCRMAG2 327
#define F_COFI 328 #define F_COFI 328
#define F_STATOPAIVA 329 #define F_STATOPAIVA 329
#define F_LOCALITACF 330 #define F_LOCALITACF 330