diff --git a/ve/batbeld.uml b/ve/batbeld.uml
index 4d6315246..16cac42f8 100755
--- a/ve/batbeld.uml
+++ b/ve/batbeld.uml
@@ -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
diff --git a/ve/batbnum.h b/ve/batbnum.h
index 866b7622a..77e664019 100755
--- a/ve/batbnum.h
+++ b/ve/batbnum.h
@@ -5,7 +5,8 @@
#define F_PREFISSO 105
#define F_SUFFISSO 106
#define F_ULTDATA 107
-#define F_ANNO 108
+#define F_ANNO 108
+#define F_TIPO 109
#define F_TIPODOC1 110
#define F_DESDOC1 111
#define F_TIPODOC2 112
diff --git a/ve/batbnum.uml b/ve/batbnum.uml
index 1e96bd4af..22b674025 100755
--- a/ve/batbnum.uml
+++ b/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
- BEGIN
- PROMPT 2 2 "Tipi di documento validi per la numerazione"
- END
+ LIST F_TIPO 24
+ BEGIN
+ 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
diff --git a/ve/batbstd.uml b/ve/batbstd.uml
index 15a99b75e..ff1583f82 100755
--- a/ve/batbstd.uml
+++ b/ve/batbstd.uml
@@ -26,7 +26,7 @@ BEGIN
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESSTA S0
KEY 1
- FLAG "UZ"
+ FLAG "U"
END
STRING F_DESSTA 50
diff --git a/ve/batbtip.h b/ve/batbtip.h
index 3c4993c92..4bcfbfba5 100755
--- a/ve/batbtip.h
+++ b/ve/batbtip.h
@@ -7,4 +7,8 @@
#define F_NCOPIE 107
#define F_RIFERIMENTO 108
#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
diff --git a/ve/batbtip.uml b/ve/batbtip.uml
index 348efbc3a..51d9f72ec 100755
--- a/ve/batbtip.uml
+++ b/ve/batbtip.uml
@@ -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
diff --git a/ve/bollac.src b/ve/bollac.src
index 004afd828..39180ee15 100755
--- a/ve/bollac.src
+++ b/ve/bollac.src
@@ -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
diff --git a/ve/bollaf.src b/ve/bollaf.src
index 64050bfff..5f3728c7e 100755
--- a/ve/bollaf.src
+++ b/ve/bollaf.src
@@ -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
diff --git a/ve/clifor.h b/ve/clifor.h
index a226f4bff..b4d1b7d6a 100755
--- a/ve/clifor.h
+++ b/ve/clifor.h
@@ -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);
diff --git a/ve/f33.dir b/ve/f33.dir
index 3d6a76ce1..21e897d80 100755
--- a/ve/f33.dir
+++ b/ve/f33.dir
@@ -1,3 +1,3 @@
33
0
-$doc|0|0|386|31|Documenti di vendita|NDOC||
+$doc|0|0|391|31|Documenti di vendita|NDOC||
diff --git a/ve/f33.trr b/ve/f33.trr
index b8763c914..08ac8542b 100755
--- a/ve/f33.trr
+++ b/ve/f33.trr
@@ -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
rovvisorio 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
diff --git a/ve/f34.dir b/ve/f34.dir
index d81bbf6a8..af761e438 100755
--- a/ve/f34.dir
+++ b/ve/f34.dir
@@ -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||
diff --git a/ve/f34.trr b/ve/f34.trr
index f4eabe497..6ad7f828d 100755
--- a/ve/f34.trr
+++ b/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 rovvisoria 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|
diff --git a/ve/fatturaa.src b/ve/fatturaa.src
index 026c952b5..dd7a850b9 100755
--- a/ve/fatturaa.src
+++ b/ve/fatturaa.src
@@ -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
diff --git a/ve/sconti.cpp b/ve/sconti.cpp
index 2021cbbb7..8ea5acf06 100755
--- a/ve/sconti.cpp
+++ b/ve/sconti.cpp
@@ -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())
+ 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.set_generata();
+ r.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");
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;
}
}
diff --git a/ve/ve0100.cpp b/ve/ve0100.cpp
index 2f9b3e883..dbce8cb5b 100755
--- a/ve/ve0100.cpp
+++ b/ve/ve0100.cpp
@@ -10,6 +10,10 @@
#include "veini.h"
#endif
+#ifndef __MODAUT_H
+#include
+#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 ) );
-
- // Propone il primo tipo di documento come default
- m.set( F_TIPODOC, tipidocs.left( 4 ) );
+ {
+ 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, 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,36 +332,17 @@ 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( );
- if ( curtipo == tipo )
- {
- tipo_valido = TRUE;
- break;
- }
+ const TString16 curtipo(c->tipo_doc(i));
+ if (curtipo == tipo)
+ return TRUE;
}
- if ( ! tipo_valido )
- {
- message_box( "Tipo non valido per la numerazione selezionata!" );
- f.set( "" );
- return FALSE;
- }
+ return message_box( "Tipo non valido per la numerazione selezionata!" );
}
- 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;
}
@@ -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)
@@ -600,7 +584,14 @@ TMask* TMotore_application::get_mask( int mode )
msk1->enable(F_CODAG, gesage);
msk1->enable(F_DESAG, 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
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
@@ -623,42 +614,32 @@ 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())
+ // Se per questa numerazione h abilitata le numerazione automatica
+ if( _cod_num->auto_num())
{
- 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
- {
- TLocalisamfile doc(LF_DOC);
- doc.zero();
- doc.put("CODNUM", value);
- doc.put("ANNO", m.get(F_ANNO));
- doc.put("PROVV", m.get(F_PROVV));
+ TLocalisamfile doc(LF_DOC);
+ doc.zero();
+ doc.put("CODNUM", value);
+ doc.put("ANNO", m.get(F_ANNO));
+ doc.put("PROVV", m.get(F_PROVV));
- TRectype cmp_rec(doc.curr()); // record campione
+ TRectype cmp_rec(doc.curr()); // record campione
- doc.put( "NDOC", 9999999L );
- if (doc.read(_isgreat) == NOERR)
- doc.prev();
+ doc.put( "NDOC", 9999999L );
+ if (doc.read(_isgreat) == NOERR)
+ doc.prev();
- const long num = ((doc.curr() == cmp_rec) ? doc.get_long( "NDOC" ) : 0) + 1;
+ const long num = ((doc.curr() == cmp_rec) ? doc.get_long( "NDOC" ) : 0) + 1;
- key.format( "%d|%d", F_NDOC, num);
- }
+ 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);
+ _doc->set_relation(_rel);
+ _cod_num = NULL;
_condv = new TCond_vendita(&doc().clifor(), _config_ditta);
_doc->set_condv(_condv);
_msk = new TMask("ve0100a");
- query_mask( ).set_handler( F_CODNUM, num_handler );
+ 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;
diff --git a/ve/ve0100.h b/ve/ve0100.h
index 979536c30..c5b48445b 100755
--- a/ve/ve0100.h
+++ b/ve/ve0100.h
@@ -69,14 +69,6 @@
#include
#endif
-#ifndef __VE0100C_H
-#include "ve0100c.h"
-#endif
-
-#ifndef __VE0100D_H
-#include "ve0100d.h"
-#endif
-
#ifndef __VARMASK_H
#include
#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;
diff --git a/ve/ve0100a.uml b/ve/ve0100a.uml
index 9c3d3df4f..3176d80da 100755
--- a/ve/ve0100a.uml
+++ b/ve/ve0100a.uml
@@ -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
diff --git a/ve/ve0300.cpp b/ve/ve0300.cpp
index c1d812fa7..9d91aa1a1 100755
--- a/ve/ve0300.cpp
+++ b/ve/ve0300.cpp
@@ -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( );
diff --git a/ve/ve0300a.src b/ve/ve0300a.src
index 5c318e97b..ff7ea3b7e 100755
--- a/ve/ve0300a.src
+++ b/ve/ve0300a.src
@@ -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
diff --git a/ve/ve0300b.dat b/ve/ve0300b.dat
index 6bff337d6..8b5aa258e 100755
--- a/ve/ve0300b.dat
+++ b/ve/ve0300b.dat
@@ -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
diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp
index d5f45cb95..29dbf83f8 100755
--- a/ve/ve1100.cpp
+++ b/ve/ve1100.cpp
@@ -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());
diff --git a/ve/ve6100.cpp b/ve/ve6100.cpp
index 45a5c4090..98e4a2bfd 100755
--- a/ve/ve6100.cpp
+++ b/ve/ve6100.cpp
@@ -35,8 +35,8 @@
#include
#include
#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"
diff --git a/ve/ve6300.cpp b/ve/ve6300.cpp
index f59bbc6fc..c8ba0c571 100755
--- a/ve/ve6300.cpp
+++ b/ve/ve6300.cpp
@@ -34,7 +34,7 @@
#include
#include
-#include "../cg/saldacon.h"
+#include "../cg/cgsaldac.h"
#include "../ef/ef0101.h"
#include "velib.h"
#include "sconti.h"
diff --git a/ve/velib.h b/ve/velib.h
index a999f8076..9373ca39b 100755
--- a/ve/velib.h
+++ b/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;
@@ -220,15 +221,18 @@ public:
bool is_bolla() const { return tipo() == _bolla; }
bool is_ordine() const { return tipo() == _ordine; }
- const TString& descrizione() const { return get("S0"); }
- const TString& riferimento() const { return get("S1"); }
- const TString& imponibile() const { return _imponibile;}
- const TString& imposta() const { return _imposta;}
- const TString& totale_doc() const { return _totale;}
- const TString& totale_netto() const { return _totale_netto; }
- const TString& basesconto() const { return _basesconto;}
- const TString& spese() const { return _spese;}
-
+ const TString & descrizione() const { return get("S0"); }
+ const TString & riferimento() const { return get("S1"); }
+ const TString & imponibile() const { return _imponibile;}
+ const TString & imposta() const { return _imposta;}
+ const TString & totale_doc() const { return _totale;}
+ 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;}
@@ -722,7 +736,7 @@ struct dec_parm {
imp_val;
// add other groups here
};
-
+
class TCodice_numerazione : public TRectype
{
int _status;
@@ -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; }
diff --git a/ve/velib01.cpp b/ve/velib01.cpp
index 0c4d35a2a..fe7c463e8 100755
--- a/ve/velib01.cpp
+++ b/ve/velib01.cpp
@@ -6,6 +6,10 @@
#ifndef __EXPR_H
#include
#endif
+
+#ifndef __TABUTIL_H
+#include
+#endif
#ifndef __VERIG_H
#include "verig.h"
@@ -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())
@@ -321,6 +331,28 @@ bool codart_handler( TMask_field& f, KEY key )
iva_handler(row_mask.fld(pos), 0);
}
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 )
@@ -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);
diff --git a/ve/velib02.cpp b/ve/velib02.cpp
index 40b36b463..c56067b15 100755
--- a/ve/velib02.cpp
+++ b/ve/velib02.cpp
@@ -5,8 +5,8 @@
#include
#endif
-#ifndef __VE0100C_H
-#include "ve0100c.h"
+#ifndef __TABUTIL_H
+#include
#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));
}
diff --git a/ve/velib03.cpp b/ve/velib03.cpp
index 6f336b4a8..09288fc34 100755
--- a/ve/velib03.cpp
+++ b/ve/velib03.cpp
@@ -10,6 +10,10 @@
#include "veuml.h"
#endif
+#ifndef __TABUTIL_H
+#include
+#endif
+
#ifndef __UTILITY_H
#include
#endif
@@ -18,15 +22,49 @@
#include "veini.h"
#endif
-#ifndef __DEFMASK_H
-//#include
+#ifndef __MGLIB_H
+#include "../mg/mglib.h"
#endif
-
#ifndef __SCONTI_H
#include "sconti.h"
#endif
+#ifndef __MODAUT_H
+#include
+#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
///////////////////////////////////////////////////////////
@@ -608,8 +646,12 @@ 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 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);
@@ -659,10 +831,10 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
err = _occas.write(o);
if (err == _isreinsert)
err = _occas.rewrite(o);
- }
+ }
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())
{
diff --git a/ve/velib04.cpp b/ve/velib04.cpp
index e72c8051d..a0c9067f8 100755
--- a/ve/velib04.cpp
+++ b/ve/velib04.cpp
@@ -5,6 +5,10 @@
#include
#endif
+#ifndef __TABUTIL_H
+#include
+#endif
+
///////////////////////////////////////////////////////////
// Lista di documenti
///////////////////////////////////////////////////////////
diff --git a/ve/velib05.cpp b/ve/velib05.cpp
index 4e69536eb..0ad8f1cce 100755
--- a/ve/velib05.cpp
+++ b/ve/velib05.cpp
@@ -1,5 +1,9 @@
#include "velib.h"
+#ifndef __TABUTIL_H
+#include
+#endif
+
/////////////////////////////////////////////////////////////
// TCodice_numerazione
/////////////////////////////////////////////////////////////
diff --git a/ve/velib06.cpp b/ve/velib06.cpp
index a7bf576a2..a6a611745 100755
--- a/ve/velib06.cpp
+++ b/ve/velib06.cpp
@@ -13,6 +13,10 @@
#include "veuml1.h"
#endif
+#ifndef __TABUTIL_H
+#include
+#endif
+
#ifndef __UTILITY_H
#include
#endif
diff --git a/ve/vepriv.h b/ve/vepriv.h
index d41bbc27b..30a6c2b81 100755
--- a/ve/vepriv.h
+++ b/ve/vepriv.h
@@ -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);
diff --git a/ve/verig.h b/ve/verig.h
index b422f22d4..e7caaa0dd 100755
--- a/ve/verig.h
+++ b/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
diff --git a/ve/verig.uml b/ve/verig.uml
index 864f2eecd..30a99939c 100755
--- a/ve/verig.uml
+++ b/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
diff --git a/ve/verig00.uml b/ve/verig00.uml
index 6d18d827c..027e4520c 100755
--- a/ve/verig00.uml
+++ b/ve/verig00.uml
@@ -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"
diff --git a/ve/verig01.uml b/ve/verig01.uml
index 212306db0..febd785d3 100755
--- a/ve/verig01.uml
+++ b/ve/verig01.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"
diff --git a/ve/verig09.uml b/ve/verig09.uml
index 51e8b9126..2a7855170 100755
--- a/ve/verig09.uml
+++ b/ve/verig09.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"
diff --git a/ve/veuml.h b/ve/veuml.h
index bda26b726..8a7f15133 100755
--- a/ve/veuml.h
+++ b/ve/veuml.h
@@ -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
diff --git a/ve/veuml1.h b/ve/veuml1.h
index b947f01e8..d9699fde7 100755
--- a/ve/veuml1.h
+++ b/ve/veuml1.h
@@ -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