This commit was generated by cvs2svn to compensate for changes in r1680,

which included commits to RCS files with non-trunk default branches.

git-svn-id: svn://10.65.10.50/trunk@1681 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-08-07 07:59:09 +00:00
parent 7af71b88ec
commit 8792453bd0
68 changed files with 7095 additions and 0 deletions

11
ve/batbacr.h Executable file
View File

@ -0,0 +1,11 @@
#define F_TIPO 101
#define F_CODCATCON 102
#define F_CODART 103
#define F_CODCATCON1 104
#define F_CODCATCON2 110
#define F_CODART1 105
#define F_CODCONCONT1 106
#define F_CODCONCONT2 107
#define F_CODCONCONT3 108
#define F_CODCONCONT4 109

146
ve/batbacr.uml Executable file
View File

@ -0,0 +1,146 @@
#include "BATBACR.H"
#define LF_ANAMAG 47 //ANAGRAFICA DI MAGAZZINO
#define LF_PCON 19 //PIANO DEI CONTI
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio costi e ricavi " 11 60 14
LISTBOX F_TIPO 8
BEGIN
PROMPT 3 3 "Tipo lavoro "
FIELD ACR->S0
ITEM "1|Ricavi "
MESSAGE SHOW, F_CODCATCON
MESSAGE HIDE, F_CODCATCON1
ITEM "2|Costi "
MESSAGE HIDE, F_CODCATCON
MESSAGE SHOW, F_CODCATCON1
FLAG "R"
END
STRING F_CODCATCON 3
BEGIN
PROMPT 3 5 "Codice categoria contabile "
FIELD ACR->CODTAB
KEY 1
FLAG "U"
USE CRA // CATEGORIE RICAVI ARTICOLI
INPUT CODTAB F_CODCATCON
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCATCON CODTAB
OUTPUT F_CODCATCON2 S0
CHECKTYPE REQUIRED
MESSAGE COPY , F_CODCATCON1
END
STRING F_CODCATCON1 3
BEGIN
PROMPT 3 5 "Codice categoria contabile "
FIELD ACR->CODTAB
KEY 1
FLAG "U"
USE CAA // CATEGORIE ACQUISTI ARTICOLI
INPUT CODTAB F_CODCATCON1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCATCON1 CODTAB
OUTPUT F_CODCATCON2 S0
CHECKTYPE REQUIRED
MESSAGE COPY , F_CODCATCON
END
STRING F_CODCATCON2 40
BEGIN
PROMPT 19 6 ""
FLAG "D"
END
STRING F_CODART 20
BEGIN
PROMPT 3 7 "Codice articolo "
FIELD ACR->S1
USE LF_ANAMAG KEY 1
FLAG "R"
INPUT CODART F_CODART
DISPLAY "Codice articolo" CODART
DISPLAY "Descrizione@30" DESCR
OUTPUT F_CODART CODART
OUTPUT F_CODART1 DESCR
END
STRING F_CODART1 30
BEGIN
PROMPT 19 8 ""
FIELD ACR->S2
FLAG "U"
USE LF_ANAMAG KEY 2
INPUT DESCR F_CODART1
DISPLAY "Codice articolo" CODART
DISPLAY "Descrizione@30" DESCR
OUTPUT F_CODART CODART
OUTPUT F_CODART1 DESCR
END
NUMBER F_CODCONCONT1 2
BEGIN
PROMPT 3 9 "Codice conto contabile "
FIELD ACR->S3
USE LF_PCON
INPUT GRUPPO F_CODCONCONT1
INPUT CONTO F_CODCONCONT2
INPUT SOTTOCONTO F_CODCONCONT3
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODCONCONT1 GRUPPO
OUTPUT F_CODCONCONT2 CONTO
OUTPUT F_CODCONCONT3 SOTTOCONTO
OUTPUT F_CODCONCONT4 DESCR
END
NUMBER F_CODCONCONT2 2
BEGIN
PROMPT 34 9 ""
FIELD ACR->S4
END
NUMBER F_CODCONCONT3 6
BEGIN
PROMPT 42 9 ""
FIELD ACR->S5
FLAG "R"
END
STRING F_CODCONCONT4 50
BEGIN
PROMPT 10 10 ""
FLAG "D"
END
GROUPBOX DLG_NULL 70 13
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

6
ve/batbcaa.h Executable file
View File

@ -0,0 +1,6 @@
#define F_CODICE 101
#define F_DESCR 103
#define F_DESCR1 105
#define F_CODCON 106
#define F_CODCON1 107
#define F_CODCON2 108

103
ve/batbcaa.uml Executable file
View File

@ -0,0 +1,103 @@
#include "BATBCAA.H"
#define LF_PCON 19 //PIANO DEI CONTI
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella categoria acquisti articoli " 11 60 14
STRING F_CODICE 3
BEGIN
PROMPT 3 3 "Codice tabella "
FIELD CAA->CODTAB
KEY 1
USE CAA
FLAG "U"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 40
BEGIN
PROMPT 3 5 "Descrizione "
FIELD CAA->S0
KEY 2
USE CAA KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_CODCON 2
BEGIN
PROMPT 3 7 "Codice conto "
FIELD CAA->S1
USE LF_PCON
// CHECKTYPE REQUIRED
FLAG "R"
INPUT GRUPPO F_CODCON
INPUT CONTO F_CODCON1
INPUT SOTTOCONTO F_CODCON2
DISPLAY "Gruppo " GRUPPO
DISPLAY "Conto " CONTO
DISPLAY "Sottoconto " SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODCON GRUPPO
OUTPUT F_CODCON1 CONTO
OUTPUT F_CODCON2 SOTTOCONTO
OUTPUT F_DESCR1 DESCR
// KEY 1
END
STRING F_CODCON1 2
BEGIN
PROMPT 23 7 ""
FIELD CAA->S2
// CHECKTYPE REQUIRED
END
STRING F_CODCON2 6
BEGIN
PROMPT 28 7 ""
FIELD CAA->S3
// CHECKTYPE REQUIRED
END
STRING F_DESCR1 50
BEGIN
PROMPT 10 9 ""
FLAG "D"
END
GROUPBOX DLG_NULL 65 11
BEGIN
PROMPT 1 1 ""
FLAG "R"
END
ENDPAGE
ENDMASK

7
ve/batbcra.h Executable file
View File

@ -0,0 +1,7 @@
#define F_CODICE 101
#define F_DESCR 102
#define F_DESCR1 103
#define F_CODCON 104
#define F_CODCON1 105
#define F_CODCON2 106

101
ve/batbcra.uml Executable file
View File

@ -0,0 +1,101 @@
#include "BATBCRA.H"
#define LF_PCON 19 //PIANO DEI CONTI
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella categoria ricavi articoli " 11 60 14
STRING F_CODICE 3
BEGIN
PROMPT 3 3 "Codice tabella "
FIELD CRA->CODTAB
KEY 1
USE CRA
FLAG "U"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 40
BEGIN
PROMPT 3 5 "Descrizione "
FIELD CRA->S0
KEY 2
USE CRA KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_CODCON 2
BEGIN
PROMPT 3 7 "Codice conto "
FIELD CRA->S1
USE LF_PCON
// CHECKTYPE REQUIRED
FLAG "R"
INPUT GRUPPO F_CODCON
INPUT CONTO F_CODCON1
INPUT SOTTOCONTO F_CODCON2
DISPLAY "Gruppo " GRUPPO
DISPLAY "Conto " CONTO
DISPLAY "Sottoconto " SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODCON GRUPPO
OUTPUT F_CODCON1 CONTO
OUTPUT F_CODCON2 SOTTOCONTO
OUTPUT F_DESCR1 DESCR
// KEY 1
END
STRING F_CODCON1 2
BEGIN
PROMPT 23 7 ""
FIELD CRA->S2
// CHECKTYPE REQUIRED
END
STRING F_CODCON2 6
BEGIN
PROMPT 28 7 ""
FIELD CRA->S3
// CHECKTYPE REQUIRED
END
STRING F_DESCR1 50
BEGIN
PROMPT 10 9 ""
FLAG "D"
END
GROUPBOX DLG_NULL 68 11
BEGIN
PROMPT 1 1 ""
FLAG "R"
END
ENDPAGE
ENDMASK

103
ve/batbfid.h Executable file
View File

@ -0,0 +1,103 @@
#define F_COD 300
#define F_DESC1 101
#define F_DESC2 102
#define F_DESC3 103
#define F_DESC4 104
#define F_DESC5 105
#define F_DESC6 106
#define F_DESC7 107
#define F_DESC8 108
#define F_DESC9 109
#define F_DESC10 110
#define F_DESC11 111
#define F_DESC12 112
#define F_DESC13 113
#define F_DESC14 114
#define F_DESC15 115
#define F_TIPO1 201
#define F_TIPO2 202
#define F_TIPO3 203
#define F_TIPO4 204
#define F_TIPO5 205
#define F_TIPO6 206
#define F_TIPO7 207
#define F_TIPO8 208
#define F_TIPO9 209
#define F_TIPO10 210
#define F_TIPO11 211
#define F_TIPO12 212
#define F_TIPO13 213
#define F_TIPO14 214
#define F_TIPO15 215
#define F_VALID1 116
#define F_VALID2 117
#define F_VALID3 118
#define F_VALID4 119
#define F_VALID5 120
#define F_VALID6 121
#define F_VALID7 122
#define F_VALID8 123
#define F_VALID9 124
#define F_VALID10 125
#define F_VALID11 126
#define F_VALID12 127
#define F_VALID13 128
#define F_VALID14 129
#define F_VALID15 130
#define F_GRUPPO1 131
#define F_CONTO1 132
#define F_CLIFOR1 133
#define F_GRUPPO2 134
#define F_CONTO2 135
#define F_CLIFOR2 136
#define F_GRUPPO3 137
#define F_CONTO3 138
#define F_CLIFOR3 139
#define F_GRUPPO4 140
#define F_CONTO4 141
#define F_CLIFOR4 142
#define F_GRUPPO5 143
#define F_CONTO5 144
#define F_CLIFOR5 145
#define F_GRUPPO6 146
#define F_CONTO6 147
#define F_CLIFOR6 148
#define F_GRUPPO7 149
#define F_CONTO7 150
#define F_CLIFOR7 151
#define F_GRUPPO8 152
#define F_CONTO8 153
#define F_CLIFOR8 154
#define F_GRUPPO9 155
#define F_CONTO9 156
#define F_CLIFOR9 157
#define F_GRUPPO10 158
#define F_CONTO10 159
#define F_CLIFOR10 160
#define F_SOTTO1 216
#define F_SOTTO2 217
#define F_SOTTO3 218
#define F_SOTTO4 219
#define F_SOTTO5 220
#define F_SOTTO6 221
#define F_SOTTO7 222
#define F_SOTTO8 223
#define F_SOTTO9 224
#define F_SOTTO10 225
#define F_TIPOAFF 161
#define F_TESTO1 162
#define F_TESTO2 163
#define F_TESTO3 164
#define F_TESTO4 165

780
ve/batbfid.uml Executable file
View File

@ -0,0 +1,780 @@
#include "BATBFID.H"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella controllo fido clienti " 11 60 14
TEXT F_TESTO1 40
BEGIN
PROMPT 1 0 "Tipo documento da considerare nel calcolo fido :"
END
TEXT F_TESTO2 30
BEGIN
PROMPT 1 2 "Codice descr. documento"
END
TEXT F_TESTO3 30
BEGIN
PROMPT 50 2 "Valido fino allo stato"
END
STRING F_COD 2
BEGIN
PROMPT 1 1 "Codice tabella "
FIELD FID->CODTAB
KEY 1
CHECKTYPE REQUIRED
END
STRING F_DESC1 2
BEGIN
PROMPT 1 3 " 1) "
FIELD FID->S0[1,2]
USE %TPD
INPUT CODTAB F_DESC1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC1 CODTAB
OUTPUT F_TIPO1 S0
END
STRING F_TIPO1 50
BEGIN
PROMPT 13 3 ""
FLAG "D"
END
NUMBER F_VALID1 1
BEGIN
PROMPT 66 3 ""
FIELD FID->S4[1]
END
STRING F_DESC2 2
BEGIN
PROMPT 1 4 " 2) "
FIELD FID->S0[3,4]
USE %TPD
INPUT CODTAB F_DESC2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC2 CODTAB
OUTPUT F_TIPO2 S0
END
STRING F_TIPO2 50
BEGIN
PROMPT 13 4 ""
FLAG "D"
END
NUMBER F_VALID2 1
BEGIN
PROMPT 66 4 ""
FIELD FID->S4[2]
END
STRING F_DESC3 2
BEGIN
PROMPT 1 5 " 3) "
FIELD FID->S0[5,6]
USE %TPD
INPUT CODTAB F_DESC3
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC3 CODTAB
OUTPUT F_TIPO3 S0
END
STRING F_TIPO3 50
BEGIN
PROMPT 13 5 ""
FLAG "D"
END
NUMBER F_VALID3 1
BEGIN
PROMPT 66 5 ""
FIELD FID->S4[3]
END
STRING F_DESC4 2
BEGIN
PROMPT 1 6 " 4) "
FIELD FID->S0[7,8]
USE %TPD
INPUT CODTAB F_DESC4
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC4 CODTAB
OUTPUT F_TIPO4 S0
END
STRING F_TIPO4 50
BEGIN
PROMPT 13 6 ""
FLAG "D"
END
NUMBER F_VALID4 1
BEGIN
PROMPT 66 6 ""
FIELD FID->S4[4]
END
STRING F_DESC5 2
BEGIN
PROMPT 1 7 " 5) "
FIELD FID->S0[9,10]
USE %TPD
INPUT CODTAB F_DESC5
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC5 CODTAB
OUTPUT F_TIPO5 S0
END
STRING F_TIPO5 50
BEGIN
PROMPT 13 7 ""
FLAG "D"
END
NUMBER F_VALID5 1
BEGIN
PROMPT 66 7 ""
FIELD FID->S4[5]
END
STRING F_DESC6 2
BEGIN
PROMPT 1 8 " 6) "
FIELD FID->S0[11,12]
USE %TPD
INPUT CODTAB F_DESC6
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC6 CODTAB
OUTPUT F_TIPO6 S0
END
STRING F_TIPO6 50
BEGIN
PROMPT 13 8 ""
FLAG "D"
END
NUMBER F_VALID6 1
BEGIN
PROMPT 66 8 ""
FIELD FID->S4[6]
END
STRING F_DESC7 2
BEGIN
PROMPT 1 9 " 7) "
FIELD FID->S0[13,14]
USE %TPD
INPUT CODTAB F_DESC7
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC7 CODTAB
OUTPUT F_TIPO7 S0
END
STRING F_TIPO7 50
BEGIN
PROMPT 13 9 ""
FLAG "D"
END
NUMBER F_VALID7 1
BEGIN
PROMPT 66 9 ""
FIELD FID->S4[7]
END
STRING F_DESC8 2
BEGIN
PROMPT 1 10 " 8) "
FIELD FID->S0[15,16]
USE %TPD
INPUT CODTAB F_DESC8
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC8 CODTAB
OUTPUT F_TIPO8 S0
END
STRING F_TIPO8 50
BEGIN
PROMPT 13 10 ""
FLAG "D"
END
NUMBER F_VALID8 1
BEGIN
PROMPT 66 10 ""
FIELD FID->S4[8]
END
STRING F_DESC9 2
BEGIN
PROMPT 1 11 " 9) "
FIELD FID->S0[17,18]
USE %TPD
INPUT CODTAB F_DESC9
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC9 CODTAB
OUTPUT F_TIPO9 S0
END
STRING F_TIPO9 50
BEGIN
PROMPT 13 11 ""
FLAG "D"
END
NUMBER F_VALID9 1
BEGIN
PROMPT 66 11 ""
FIELD FID->S4[9]
END
STRING F_DESC10 2
BEGIN
PROMPT 1 12 "10) "
FIELD FID->S0[19,20]
USE %TPD
INPUT CODTAB F_DESC10
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC10 CODTAB
OUTPUT F_TIPO10 S0
END
STRING F_TIPO10 50
BEGIN
PROMPT 13 12 ""
FLAG "D"
END
NUMBER F_VALID10 1
BEGIN
PROMPT 66 12 ""
FIELD FID->S4[10]
END
STRING F_DESC11 2
BEGIN
PROMPT 1 13 "11) "
FIELD FID->S0[21,22]
USE %TPD
INPUT CODTAB F_DESC11
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC11 CODTAB
OUTPUT F_TIPO11 S0
END
STRING F_TIPO11 50
BEGIN
PROMPT 13 13 ""
FLAG "D"
END
NUMBER F_VALID11 1
BEGIN
PROMPT 66 13 ""
FIELD FID->S4[11]
END
STRING F_DESC12 2
BEGIN
PROMPT 1 14 "12) "
FIELD FID->S0[23,24]
USE %TPD
INPUT CODTAB F_DESC12
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC12 CODTAB
OUTPUT F_TIPO12 S0
END
STRING F_TIPO12 50
BEGIN
PROMPT 13 14 ""
FLAG "D"
END
NUMBER F_VALID12 1
BEGIN
PROMPT 66 14 ""
FIELD FID->S4[12]
END
STRING F_DESC13 2
BEGIN
PROMPT 1 15 "13) "
FIELD FID->S0[25,26]
USE %TPD
INPUT CODTAB F_DESC13
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC13 CODTAB
OUTPUT F_TIPO13 S0
END
STRING F_TIPO13 50
BEGIN
PROMPT 13 15 ""
FLAG "D"
END
NUMBER F_VALID13 1
BEGIN
PROMPT 66 15 ""
FIELD FID->S4[13]
END
STRING F_DESC14 2
BEGIN
PROMPT 1 16 "14) "
FIELD FID->S0[27,28]
USE %TPD
INPUT CODTAB F_DESC14
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC14 CODTAB
OUTPUT F_TIPO14 S0
END
STRING F_TIPO14 50
BEGIN
PROMPT 13 16 ""
FLAG "D"
END
NUMBER F_VALID14 1
BEGIN
PROMPT 66 16 ""
FIELD FID->S4[14]
END
STRING F_DESC15 2
BEGIN
PROMPT 1 17 "15) "
FIELD FID->S0[29,30]
USE %TPD
INPUT CODTAB F_DESC15
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DESC15 CODTAB
OUTPUT F_TIPO15 S0
END
STRING F_TIPO15 50
BEGIN
PROMPT 13 17 ""
FLAG "D"
END
NUMBER F_VALID15 1
BEGIN
PROMPT 66 17 ""
FIELD FID->S4[15]
END
ENDPAGE
PAGE "Tabella controllo fido clienti " 11 60 14
TEXT F_TESTO4 30
BEGIN
PROMPT 1 1 "Gruppo conto cli/for del piano dei conti"
END
STRING F_GRUPPO1 2
BEGIN
PROMPT 3 3 ""
FIELD FID->S2[1,2]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO1
INPUT CONTO F_CONTO1
INPUT SOTTOCONTO F_SOTTO1
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO1 GRUPPO
OUTPUT F_CONTO1 CONTO
OUTPUT F_SOTTO1 SOTTOCONTO
OUTPUT F_CLIFOR1 DESCR
END
STRING F_CONTO1 2
BEGIN
PROMPT 9 3 ""
FIELD FID->S3[1,2]
END
STRING F_SOTTO1 6
BEGIN
PROMPT 13 3 ""
FIELD FID->S1[1,6]
END
STRING F_CLIFOR1 50
BEGIN
PROMPT 24 3 ""
FLAG "D"
END
STRING F_GRUPPO2 2
BEGIN
PROMPT 3 4 ""
FIELD FID->S2[3,4]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO2
INPUT CONTO F_CONTO2
INPUT SOTTOCONTO F_SOTTO2
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO2 GRUPPO
OUTPUT F_CONTO2 CONTO
OUTPUT F_SOTTO2 SOTTOCONTO
OUTPUT F_CLIFOR2 DESCR
END
STRING F_CONTO2 2
BEGIN
PROMPT 9 4 ""
FIELD FID->S3[3,4]
END
STRING F_SOTTO2 6
BEGIN
PROMPT 13 4 ""
FIELD FID->S1[7,12]
END
STRING F_CLIFOR2 50
BEGIN
PROMPT 24 4 ""
FLAG "D"
END
STRING F_GRUPPO3 2
BEGIN
PROMPT 3 5 ""
FIELD FID->S2[5,6]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO3
INPUT CONTO F_CONTO3
INPUT SOTTOCONTO F_SOTTO3
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO3 GRUPPO
OUTPUT F_CONTO3 CONTO
OUTPUT F_SOTTO3 SOTTOCONTO
OUTPUT F_CLIFOR3 DESCR
END
STRING F_CONTO3 2
BEGIN
PROMPT 9 5 ""
FIELD FID->S3[5,6]
END
STRING F_SOTTO3 6
BEGIN
PROMPT 13 5 ""
FIELD FID->S1[13,18]
END
STRING F_CLIFOR3 50
BEGIN
PROMPT 24 5 ""
FLAG "D"
END
STRING F_GRUPPO4 2
BEGIN
PROMPT 3 6 ""
FIELD FID->S2[7,8]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO4
INPUT CONTO F_CONTO4
INPUT SOTTOCONTO F_SOTTO4
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO4 GRUPPO
OUTPUT F_CONTO4 CONTO
OUTPUT F_SOTTO4 SOTTOCONTO
OUTPUT F_CLIFOR4 DESCR
END
STRING F_CONTO4 2
BEGIN
PROMPT 9 6 ""
FIELD FID->S3[7,8]
END
STRING F_SOTTO4 6
BEGIN
PROMPT 13 6 ""
FIELD FID->S1[19,24]
END
STRING F_CLIFOR4 50
BEGIN
PROMPT 24 6 ""
FLAG "D"
END
STRING F_GRUPPO5 2
BEGIN
PROMPT 3 7 ""
FIELD FID->S2[9,10]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO5
INPUT CONTO F_CONTO5
INPUT SOTTOCONTO F_SOTTO5
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO5 GRUPPO
OUTPUT F_CONTO5 CONTO
OUTPUT F_SOTTO5 SOTTOCONTO
OUTPUT F_CLIFOR5 DESCR
END
STRING F_CONTO5 2
BEGIN
PROMPT 9 7 ""
FIELD FID->S3[9,10]
END
STRING F_SOTTO5 6
BEGIN
PROMPT 13 7 ""
FIELD FID->S1[25,30]
END
STRING F_CLIFOR5 50
BEGIN
PROMPT 24 7 ""
FLAG "D"
END
STRING F_GRUPPO6 2
BEGIN
PROMPT 3 8 ""
FIELD FID->S2[11,12]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO6
INPUT CONTO F_CONTO6
INPUT SOTTOCONTO F_SOTTO6
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO6 GRUPPO
OUTPUT F_CONTO6 CONTO
OUTPUT F_SOTTO6 SOTTOCONTO
OUTPUT F_CLIFOR6 DESCR
END
STRING F_CONTO6 2
BEGIN
PROMPT 9 8 ""
FIELD FID->S3[11,12]
END
STRING F_SOTTO6 6
BEGIN
PROMPT 13 8 ""
FIELD FID->S1[31,36]
END
STRING F_CLIFOR6 50
BEGIN
PROMPT 24 8 ""
FLAG "D"
END
STRING F_GRUPPO7 2
BEGIN
PROMPT 3 9 ""
FIELD FID->S2[13,14]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO7
INPUT CONTO F_CONTO7
INPUT SOTTOCONTO F_SOTTO7
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO7 GRUPPO
OUTPUT F_CONTO7 CONTO
OUTPUT F_SOTTO7 SOTTOCONTO
OUTPUT F_CLIFOR7 DESCR
END
STRING F_CONTO7 2
BEGIN
PROMPT 9 9 ""
FIELD FID->S3[13,14]
END
STRING F_SOTTO7 6
BEGIN
PROMPT 13 9 ""
FIELD FID->S1[37,42]
END
STRING F_CLIFOR7 50
BEGIN
PROMPT 24 9 ""
FLAG "D"
END
STRING F_GRUPPO8 2
BEGIN
PROMPT 3 10 ""
FIELD FID->S2[15,16]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO8
INPUT CONTO F_CONTO8
INPUT SOTTOCONTO F_SOTTO8
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO8 GRUPPO
OUTPUT F_CONTO8 CONTO
OUTPUT F_SOTTO8 SOTTOCONTO
OUTPUT F_CLIFOR8 DESCR
END
STRING F_CONTO8 2
BEGIN
PROMPT 9 10 ""
FIELD FID->S3[15,16]
END
STRING F_SOTTO8 6
BEGIN
PROMPT 13 10 ""
FIELD FID->S1[43,48]
END
STRING F_CLIFOR8 50
BEGIN
PROMPT 24 10 ""
FLAG "D"
END
STRING F_GRUPPO9 2
BEGIN
PROMPT 3 11 ""
FIELD FID->S2[17,18]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO9
INPUT CONTO F_CONTO9
INPUT SOTTOCONTO F_SOTTO9
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO9 GRUPPO
OUTPUT F_CONTO9 CONTO
OUTPUT F_SOTTO9 SOTTOCONTO
OUTPUT F_CLIFOR9 DESCR
END
STRING F_CONTO9 2
BEGIN
PROMPT 9 11 ""
FIELD FID->S3[17,18]
END
STRING F_SOTTO9 6
BEGIN
PROMPT 13 11 ""
FIELD FID->S1[49,54]
END
STRING F_CLIFOR9 50
BEGIN
PROMPT 24 11 ""
FLAG "D"
END
STRING F_GRUPPO10 2
BEGIN
PROMPT 3 12 ""
FIELD FID->S2[19,20]
USE 19 //PIANO DEI CONTI
INPUT GRUPPO F_GRUPPO10
INPUT CONTO F_CONTO10
INPUT SOTTOCONTO F_SOTTO10
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO10 GRUPPO
OUTPUT F_CONTO10 CONTO
OUTPUT F_SOTTO10 SOTTOCONTO
OUTPUT F_CLIFOR10 DESCR
END
STRING F_CONTO10 2
BEGIN
PROMPT 9 12 ""
FIELD FID->S3[19,20]
END
STRING F_SOTTO10 6
BEGIN
PROMPT 13 12 ""
FIELD FID->S1[55,60]
END
STRING F_CLIFOR10 50
BEGIN
PROMPT 24 12 ""
FLAG "D"
END
LISTBOX F_TIPOAFF 33
BEGIN
PROMPT 1 14 "Tipo affidabilità "
ITEM "1|Controllo completo con blocco "
ITEM "2|Controllo completo con forzatura "
ITEM "3|Solo mastrino con forzatura "
FIELD FID->S5[1]
END
ENDPAGE
ENDMASK

5
ve/batbgmc.h Executable file
View File

@ -0,0 +1,5 @@
#define F_CODICE 101
#define F_TIPO 102
#define F_DESCR 103

52
ve/batbgmc.uml Executable file
View File

@ -0,0 +1,52 @@
#include "BATBGMC.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Gruppi merceologici " 11 60 14
STRING F_CODICE 2
BEGIN
PROMPT 4 4 "Codice merceologico "
FIELD %GMC->CODTAB
KEY 1
USE %GMC
FLAG "U"
FLAG "R"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 50
BEGIN
PROMPT 4 6 "Descrizione "
FIELD %GMC->S0
KEY 2
USE %GMC KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 70 7
BEGIN
PROMPT 3 2 ""
FLAG "R"
END
ENDPAGE
ENDMASK

8
ve/batbimb.h Executable file
View File

@ -0,0 +1,8 @@
#define F_CODICE 101
#define F_DESCR 102
#define F_DIMX 103
#define F_DIMY 104
#define F_DIMZ 105
#define F_PESO 106

94
ve/batbimb.uml Executable file
View File

@ -0,0 +1,94 @@
#include "BATBIMB.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Gestione imballi" 11 60 14
STRING F_CODICE 5
BEGIN
PROMPT 4 4 "Codice dell'imballaggio "
FIELD IMB->CODTAB
KEY 1
USE IMB
FLAG "U"
FLAG "R"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@30 " S0
DISPLAY "lunghezza " R0
DISPLAY "altezza " R1
DISPLAY "spessore " R2
DISPLAY "peso " R3
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_DIMX R0
OUTPUT F_DIMY R1
OUTPUT F_DIMZ R2
OUTPUT F_PESO R3
CHECKTYPE REQUIRED
END
STRING F_DESCR 30
BEGIN
PROMPT 4 6 "Descrizione "
FIELD IMB->S0
KEY 2
USE IMB KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@20 " S0
DISPLAY "lunghezza " R0
DISPLAY "altezza " R1
DISPLAY "spessore " R2
DISPLAY "peso " R3
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_DIMX R0
OUTPUT F_DIMY R1
OUTPUT F_DIMZ R2
OUTPUT F_PESO R3
CHECKTYPE REQUIRED
END
NUMBER F_DIMX 6 2
BEGIN
PROMPT 4 8 "Lunghezza "
FIELD IMB->R0
END
NUMBER F_DIMY 6 2
BEGIN
PROMPT 26 8 "Altezza "
FIELD IMB->R1
END
NUMBER F_DIMZ 6 2
BEGIN
PROMPT 45 8 "Spessore "
FIELD IMB->R2
END
NUMBER F_PESO 6 2
BEGIN
PROMPT 4 10 "Peso "
HELP "Indicare la tara"
FIELD IMB->R3
END
GROUPBOX DLG_NULL 68 10
BEGIN
PROMPT 1 2 ""
FLAG "R"
END
ENDPAGE
ENDMASK

22
ve/batbmag.h Executable file
View File

@ -0,0 +1,22 @@
#define F_CODICE 101
#define F_DESCR 102
#define F_IND 103
#define F_LOC 104
#define F_CAP 105
#define F_PROV 106
#define F_NATMAG 107
#define F_CODMAGSTA 108
#define F_CODLGIOR 109
#define F_CODLUNICO 110
#define F_GESTGIA 111
#define F_STALDIS 112
#define F_FREQSTA 113
#define F_STAFISART 114
#define F_STAFISCAU 115
#define F_ULTCORR 116
#define F_PAGULTCORR 117
#define F_ULTPREC 118
#define F_PAGULTPREC 119
#define F_STARIS 120
#define F_LUNGMOD 121
#define F_INTDITTA 122

222
ve/batbmag.uml Executable file
View File

@ -0,0 +1,222 @@
#include "BATBMAG.h"
#define LF_COMUNI 13
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Gestione magazzini" 11 60 14
STRING F_CODICE 6
BEGIN
PROMPT 2 2 "Codice del magazzino "
FIELD MAG->CODTAB
KEY 1
USE MAG
FLAG "U"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
DISPLAY "Indirizzo@25 " S1
DISPLAY "Località@25 " S2
DISPLAY "Prov." S7
DISPLAY "C.A.P." S6
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_IND S1
OUTPUT F_LOC S2
OUTPUT F_CAP S6
OUTPUT F_PROV S7
CHECKTYPE REQUIRED
END
STRING F_DESCR 50
BEGIN
PROMPT 2 4 "Descrizione "
FIELD MAG->S0
KEY 2
USE MAG KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
DISPLAY "Indirizzo@25 " S1
DISPLAY "Località@25 " S2
DISPLAY "Prov." S7
DISPLAY "C.A.P." S6
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_IND S1
OUTPUT F_LOC S2
OUTPUT F_CAP S6
OUTPUT F_PROV S7
CHECKTYPE REQUIRED
END
STRING F_IND 40
BEGIN
PROMPT 2 6 "Indirizzo "
FIELD MAG->S1
END
STRING F_LOC 25
BEGIN
PROMPT 2 8 "Località "
FIELD MAG->S2
USE LF_COMUNI
INPUT CAPCOM F_CAP
INPUT DENCOM F_LOC
DISPLAY "Comune@50" DENCOM
DISPLAY "C.A.P." CAPCOM
DISPLAY "Provincia" PROVCOM
OUTPUT F_LOC DENCOM
OUTPUT F_CAP CAPCOM
OUTPUT F_PROV PROVCOM
END
STRING F_CAP 5
BEGIN
PROMPT 41 8 "C.A.P. "
FIELD MAG->S6
USE LF_COMUNI KEY 3
INPUT CAPCOM F_CAP
DISPLAY "Comune@50" DENCOM
DISPLAY "C.A.P." CAPCOM
DISPLAY "Provincia" PROVCOM
OUTPUT F_LOC DENCOM
OUTPUT F_CAP CAPCOM
OUTPUT F_PROV PROVCOM
END
STRING F_PROV 5
BEGIN
PROMPT 58 8 "Prov. "
FIELD MAG->S7
END
LISTBOX F_NATMAG 51
BEGIN
PROMPT 2 11 "Natura del magazzino "
FIELD MAG->I1
ITEM "1|Proprietà dell'azienda "
ITEM "2|Materiale nostro in lavorazione presso terzi"
ITEM "3|Materiale nostro in depositopresso terzi"
ITEM "4|Materiale di terzi, in lavorazione presso l'azienda "
ITEM "5|Materiale di terzi, in deposito presso l'azienda "
END
STRING F_CODMAGSTA 6
BEGIN
PROMPT 2 13 "Codice magazzino sul quale stampare i movimenti "
FIELD MAG->I1
END
STRING F_CODLGIOR 6
BEGIN
PROMPT 2 15 "Codice libro giornale "
FIELD MAG->I2
END
GROUPBOX DLG_NULL 75 11
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
PAGE "Gestione magazzini" 11 60 14
STRING F_CODLUNICO 6
BEGIN
PROMPT 2 2 "Codice libro unico di studio "
FIELD MAG->I3
END
BOOLEAN F_GESTGIA
BEGIN
PROMPT 2 4 "Gestione giacenze in più depositi "
FIELD MAG->B0
END
BOOLEAN F_STALDIS
BEGIN
PROMPT 2 6 "Stampa libri distinti per classe fiscale articoli "
FIELD MAG->B1
END
NUMBER F_FREQSTA 2
BEGIN
PROMPT 2 7 "Frequenza stampa movimenti "
FIELD MAG->I4
END
BOOLEAN F_STAFISART
BEGIN
PROMPT 2 8 "Stampa libri per raggruppamento fiscale articoli "
FIELD MAG->B2
END
BOOLEAN F_STAFISCAU
BEGIN
PROMPT 2 9 "Stampa libri per raggruppamento fiscale causali "
FIELD MAG->B3
END
NUMBER F_PAGULTCORR 3
BEGIN
PROMPT 2 11 "Pagina e data ultima stampa esercizio corrente "
FIELD MAG->I5
END
DATE F_ULTCORR
BEGIN
PROMPT 58 11 ""
FIELD MAG->D0
END
NUMBER F_PAGULTPREC 3
BEGIN
PROMPT 2 12 "Pagina e data ultima stampa esercizio precedente "
FIELD MAG->I6
END
DATE F_ULTPREC
BEGIN
PROMPT 58 12 ""
FIELD MAG->D1
END
TEXT 140
BEGIN
PROMPT 2 14 "Parametri di stampa :"
END
BOOLEAN F_INTDITTA
BEGIN
PROMPT 2 15 "Intestazione della ditta "
FIELD MAG->B4
END
BOOLEAN F_STARIS
BEGIN
PROMPT 2 16 "Stampa ristretta "
FIELD MAG->B5
END
NUMBER F_LUNGMOD 2
BEGIN
PROMPT 2 17 "Lunghezza modulo "
FIELD MAG->I7
END
ENDPAGE
ENDMASK

307
ve/batbnum.uml Executable file
View File

@ -0,0 +1,307 @@
#include "batbnum.h"
TOOLBAR "" 0 20 60 2
#include "toolbar.h"
ENDPAGE
PAGE "Tabella numerazioni Pagina 1/2" -1 -1 60 14
GROUPBOX DLG_NULL 84 4
BEGIN
PROMPT 1 1 ""
// FLAG "R"
END
GROUPBOX DLG_NULL 84 13
BEGIN
PROMPT 1 5 ""
// FLAG "R"
END
STRING F_CODTAB 4
BEGIN
PROMPT 2 2 "Codice numerazione "
FIELD CODTAB
HELP "Codice numerazione"
USE NUM
CHECKTYPE REQUIRED
INPUT CODTAB F_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0
KEY 1
FLAG "UZ"
END
STRING F_DESNUM 40
BEGIN
PROMPT 2 3 "Descrizione numerazione "
FIELD S0
HELP "Descrizione numerazione"
USE NUM
CHECKTYPE REQUIRED
INPUT S0 F_DESNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0
KEY 2
END
NUMBER F_ULTNUM 7 0
BEGIN
PROMPT 2 6 "Numero ultimo documento emesso "
FIELD I0
FLAG "R"
END
NUMBER F_ULTNUMPROV 7 0
BEGIN
PROMPT 2 7 "Numero ultimo documento creato "
FIELD I1
FLAG "R"
END
DATE F_ULTDATA
BEGIN
PROMPT 2 9 "Data emissione ultimo documento "
FIELD D0
END
STRING F_PREFISSO 7
BEGIN
PROMPT 2 11 "Prefisso numerazione "
FIELD S6
END
STRING F_SUFFISSO 7
BEGIN
PROMPT 2 12 "Suffisso numerazione "
FIELD S7
END
STRING F_ANNO 4
BEGIN
PROMPT 2 14 "Anno d'esercizio "
FIELD S8
END
ENDPAGE
PAGE "Tabella numerazioni Pagina 2/2" -1 -1 60 14
GROUPBOX DLG_NULL 64 15
BEGIN
PROMPT 1 1 ""
// FLAG "R"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 2 "Tipi di documento validi per la numerazione"
END
STRING F_TIPODOC1 4
BEGIN
PROMPT 2 4 ""
USE TIP
INPUT CODTAB F_TIPODOC1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC1 TIP->CODTAB
OUTPUT F_DESDOC1 TIP->S0
HELP "Tipo di documento 1"
FIELD S2[1,4]
CHECKTYPE NORMAL
END
STRING F_DESDOC1 40
BEGIN
PROMPT 10 4 ""
FLAG "D"
END
STRING F_TIPODOC2 4
BEGIN
PROMPT 2 5 ""
USE TIP
INPUT CODTAB F_TIPODOC2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC2 TIP->CODTAB
OUTPUT F_DESDOC2 TIP->S0
HELP "Tipo di documento 2"
FIELD S2[5,8]
CHECKTYPE NORMAL
END
STRING F_DESDOC2 40
BEGIN
PROMPT 10 5 ""
FLAG "D"
END
STRING F_TIPODOC3 4
BEGIN
PROMPT 2 6 ""
USE TIP
INPUT CODTAB F_TIPODOC3
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC3 TIP->CODTAB
OUTPUT F_DESDOC3 TIP->S0
HELP "Tipo di documento 3"
FIELD S2[9,12]
CHECKTYPE NORMAL
END
STRING F_DESDOC3 40
BEGIN
PROMPT 10 6 ""
FLAG "D"
END
STRING F_TIPODOC4 4
BEGIN
PROMPT 2 7 ""
USE TIP
INPUT CODTAB F_TIPODOC4
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC4 TIP->CODTAB
OUTPUT F_DESDOC4 TIP->S0
HELP "Tipo di documento 4"
FIELD S2[13,16]
CHECKTYPE NORMAL
END
STRING F_DESDOC4 40
BEGIN
PROMPT 10 7 ""
FLAG "D"
END
STRING F_TIPODOC5 4
BEGIN
PROMPT 2 8 ""
USE TIP
INPUT CODTAB F_TIPODOC5
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC5 TIP->CODTAB
OUTPUT F_DESDOC5 TIP->S0
HELP "Tipo di documento 5"
FIELD S2[17,20]
CHECKTYPE NORMAL
END
STRING F_DESDOC5 40
BEGIN
PROMPT 10 8 ""
FLAG "D"
END
STRING F_TIPODOC6 4
BEGIN
PROMPT 2 9 ""
USE TIP
INPUT CODTAB F_TIPODOC6
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC6 TIP->CODTAB
OUTPUT F_DESDOC6 TIP->S0
HELP "Tipo di documento 6"
FIELD S2[21,24]
CHECKTYPE NORMAL
END
STRING F_DESDOC6 40
BEGIN
PROMPT 10 9 ""
FLAG "D"
END
STRING F_TIPODOC7 4
BEGIN
PROMPT 2 10 ""
USE TIP
INPUT CODTAB F_TIPODOC7
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC7 TIP->CODTAB
OUTPUT F_DESDOC7 TIP->S0
HELP "Tipo di documento 7"
FIELD S2[25,28]
CHECKTYPE NORMAL
END
STRING F_DESDOC7 40
BEGIN
PROMPT 10 10 ""
FLAG "D"
END
STRING F_TIPODOC8 4
BEGIN
PROMPT 2 11 ""
USE TIP
INPUT CODTAB F_TIPODOC8
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC8 TIP->CODTAB
OUTPUT F_DESDOC8 TIP->S0
HELP "Tipo di documento 8"
FIELD S2[29,32]
CHECKTYPE NORMAL
END
STRING F_DESDOC8 40
BEGIN
PROMPT 10 11 ""
FLAG "D"
END
STRING F_TIPODOC9 4
BEGIN
PROMPT 2 12 ""
USE TIP
INPUT CODTAB F_TIPODOC9
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC9 TIP->CODTAB
OUTPUT F_DESDOC9 TIP->S0
HELP "Tipo di documento 9"
FIELD S2[32,36]
CHECKTYPE NORMAL
END
STRING F_DESDOC9 40
BEGIN
PROMPT 10 12 ""
FLAG "D"
END
STRING F_TIPODOC10 4
BEGIN
PROMPT 2 13 ""
USE TIP
INPUT CODTAB F_TIPODOC10
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC10 TIP->CODTAB
OUTPUT F_DESDOC10 TIP->S0
HELP "Tipo di documento 10"
FIELD S2[37,40]
CHECKTYPE NORMAL
END
STRING F_DESDOC10 40
BEGIN
PROMPT 10 13 ""
FLAG "D"
END
ENDMASK

7
ve/batbpro.h Executable file
View File

@ -0,0 +1,7 @@
#define F_CODCLI 101
#define F_CODAGENTE 102
#define F_CODCLI1 103
#define F_CODAGENTE2 104
#define F_IMPORTO 105
#define F_PERCENTUALE 106
#define F_TIPOCF 107

108
ve/batbpro.uml Executable file
View File

@ -0,0 +1,108 @@
#include "BATBPRO.H"
#define LF_CLIFOR 20
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio provvigioni " 11 60 14
LISTBOX F_TIPOCF 1
BEGIN
PROMPT 0 0 ""
ITEM "C|"
FLAG "H"
END
STRING F_CODCLI 6
BEGIN
PROMPT 3 3 "Codice cliente "
FIELD PRO->CODTAB
KEY 1
USE LF_CLIFOR
FLAG "U"
INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CODCLI
DISPLAY "Cod. cliente " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_TIPOCF TIPOCF
OUTPUT F_CODCLI CODCF
OUTPUT F_CODCLI1 RAGSOC
CHECKTYPE REQUIRED
END
STRING F_CODCLI1 50
BEGIN
PROMPT 3 4 "Ragione sociale "
KEY 2
USE LF_CLIFOR KEY 2
FLAG "U"
INPUT RAGSOC F_CODCLI1
INPUT TIPOCF F_TIPOCF SELECT
DISPLAY "Cod. cliente " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_TIPOCF TIPOCF
OUTPUT F_CODCLI CODCF
OUTPUT F_CODCLI1 RAGSOC
CHECKTYPE REQUIRED
END
STRING F_CODAGENTE 6
BEGIN
PROMPT 3 6 "Codice agente "
FIELD PRO->S0
KEY 1
USE AGE
FLAG "U"
INPUT CODTAB F_CODAGENTE
DISPLAY "Cod. agente " CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_CODAGENTE CODTAB
OUTPUT F_CODAGENTE2 S0
CHECKTYPE REQUIRED
END
STRING F_CODAGENTE2 30
BEGIN
PROMPT 3 7 "Descrizione "
KEY 2
USE AGE KEY 2
INPUT S0 F_CODAGENTE2
DISPLAY "Cod. agente " CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_CODAGENTE CODTAB
OUTPUT F_CODAGENTE2 S0
CHECKTYPE REQUIRED
END
NUMBER F_IMPORTO 9 2
BEGIN
PROMPT 3 9 "Importo provvigione "
FIELD PRO->R0
END
NUMBER F_PERCENTUALE 5 2
BEGIN
PROMPT 3 11 "Percentuale provvigione "
FIELD PRO->R1
END
GROUPBOX DLG_NULL 75 14
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

26
ve/batbspp.h Executable file
View File

@ -0,0 +1,26 @@
#define F_CODICE 101
#define F_DESCR 102
#define F_CODASSFIS 103
#define F_CODASSFIS1 125
#define F_CODDIV 104
#define F_CODDIV1 105
#define F_PREZZO 106
#define F_VALORE 107
#define F_NCAMPOCAL 108
#define F_NCAMPOCAL1 122
#define F_PERCENTUALE 109
#define F_TIPO 110
#define F_INCASSO 111
#define F_STAMPA 112
#define F_CODTABAGG 113
#define F_CODTABAGG1 114
#define F_NCAMPOAUTOM 115
#define F_NCAMPOAUTOM1 116
#define F_SEGNO 117
#define F_GRUPPO 118
#define F_CONTO 119
#define F_SOTTO 120
#define F_DESCRCONTO 121
#define F_CODMOVCOM 123
#define F_CODMOVCOM1 124

222
ve/batbspp.uml Executable file
View File

@ -0,0 +1,222 @@
#include "BATBSPP.H"
#define LF_PCON 19
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella spese e prestazioni " 11 60 14
STRING F_CODICE 3
BEGIN
PROMPT 3 1 "Cod. tabella "
FIELD SPP->CODTAB
KEY 1
USE SPP
FLAG "U"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 50
BEGIN
PROMPT 3 2 "Descrizione "
FIELD SPP->S0
KEY 2
USE SPP KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50 " S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_CODASSFIS 4
BEGIN
PROMPT 3 4 "Codice assogg. fiscale "
FIELD SPP->S1[1,4]
USE %IVA
INPUT CODTAB F_CODASSFIS
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_CODASSFIS CODTAB
OUTPUT F_CODASSFIS1 S0
END
STRING F_CODASSFIS1 30
BEGIN
PROMPT 35 4 ""
FLAG "D"
END
STRING F_CODDIV 3
BEGIN
PROMPT 3 5 "Codice divisa "
FIELD SPP->S1[5,7]
USE CVA
INPUT CODTAB F_CODDIV
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT F_CODDIV CODTAB
OUTPUT F_CODDIV1 S0
END
STRING F_CODDIV1 30
BEGIN
PROMPT 30 5 ""
FLAG "D"
END
NUMBER F_PREZZO 13 2
BEGIN
PROMPT 3 6 "Prezzo "
FIELD SPP->R0
END
NUMBER F_VALORE 13 2
BEGIN
PROMPT 30 6 "Valore "
FIELD SPP->R1
END
STRING F_NCAMPOCAL 2
BEGIN
PROMPT 3 7 "N° campo di calcolo "
FIELD SPP->I0
END
STRING F_NCAMPOCAL1 20
BEGIN
PROMPT 29 7 ""
FLAG "D"
END
NUMBER F_PERCENTUALE 5 2
BEGIN
PROMPT 51 7 "Percentuale "
FIELD SPP->R2
END
LISTBOX F_TIPO 8
BEGIN
PROMPT 3 8 "Tipo spesa "
FIELD SPP->S1[9]
ITEM "0|Spesa "
ITEM "1|Merce "
END
BOOLEAN F_INCASSO
BEGIN
PROMPT 3 10 "Spesa da incassare su prima rata "
FIELD SPP->B0
END
BOOLEAN F_STAMPA
BEGIN
PROMPT 3 11 "Stampa riga su corpo documento "
FIELD SPP->B1
END
STRING F_CODTABAGG 2
BEGIN
PROMPT 3 13 "Codice tabella agg. piede "
FIELD SPP->S1[11,12]
END
STRING F_CODTABAGG1 20
BEGIN
PROMPT 40 13 ""
FLAG "D"
END
STRING F_NCAMPOAUTOM 2
BEGIN
PROMPT 3 14 "Num. campo calcolo spese autom. "
FIELD SPP->S1[14,15]
END
STRING F_NCAMPOAUTOM1 15
BEGIN
PROMPT 40 14 ""
FLAG "D"
END
STRING F_SEGNO 1
BEGIN
PROMPT 57 14 "Segno "
FIELD SPP->S1[17]
END
STRING F_GRUPPO 2
BEGIN
PROMPT 3 15 "Conto di ric./costo "
FIELD SPP->S2
USE LF_PCON
INPUT GRUPPO F_GRUPPO
INPUT CONTO F_CONTO
INPUT SOTTOCONTO F_SOTTO
DISPLAY "Gruppo " GRUPPO
DISPLAY "Conto " CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_SOTTO SOTTOCONTO
OUTPUT F_DESCRCONTO DESCR
CHECKTYPE REQUIRED
END
STRING F_CONTO 2
BEGIN
PROMPT 29 15 ""
FIELD SPP->S3
END
STRING F_SOTTO 6
BEGIN
PROMPT 33 15 ""
FIELD SPP->S4
END
STRING F_DESCRCONTO 35
BEGIN
PROMPT 41 15 ""
FLAG "D"
END
STRING F_CODMOVCOM 2
BEGIN
PROMPT 3 16 "Codice movimento commessa "
FIELD SPP->S1[19,20]
END
STRING F_CODMOVCOM1 30
BEGIN
PROMPT 40 16 ""
FLAG "D"
END
GROUPBOX DLG_NULL 73 4
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

9
ve/batbspt.h Executable file
View File

@ -0,0 +1,9 @@
#define F_CODICE 101
#define F_DESCR1 102
#define F_DESCR2 103
#define F_DESCR3 104
#define F_DESCR4 105
#define F_DESCR5 106
#define F_DESCR6 107
#define F_DESCR7 108
#define F_DESCR 109

91
ve/batbspt.uml Executable file
View File

@ -0,0 +1,91 @@
#include "BATBSPT.H"
#define LF_ANAGR 47 //ANAGRAFICO ARTICOLI
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio specifiche tecniche" 11 60 14
STRING F_CODICE 15
BEGIN
PROMPT 1 3 "Codice articolo "
FIELD SPT->CODTAB
KEY 1
USE LF_ANAGR
FLAG "R"
FLAG "U"
INPUT CODART F_CODICE
DISPLAY "Codice " CODART
DISPLAY "Tipo " TIPO
DISPLAY "Descrizione@50 " DESCR
OUTPUT F_CODICE CODART
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_DESCR 30
BEGIN
PROMPT 38 3 ""
KEY 2
USE LF_ANAGR KEY 2
FLAG "R"
INPUT DESCR F_DESCR
DISPLAY "Codice " CODART
DISPLAY "Tipo " TIPO
DISPLAY "Descrizione@50 " DESCR
OUTPUT F_CODICE CODART
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
END
TEXT F_DESCR7
BEGIN
PROMPT 1 5 "Specifiche "
END
STRING F_DESCR1 70
BEGIN
PROMPT 3 7 ""
FIELD SPT->S0
END
STRING F_DESCR2 70
BEGIN
PROMPT 3 8 ""
FIELD SPT->S1
END
STRING F_DESCR3 50
BEGIN
PROMPT 3 9 ""
FIELD SPT->S2
END
STRING F_DESCR4 20
BEGIN
PROMPT 3 10 ""
FIELD SPT->S3
END
STRING F_DESCR5 20
BEGIN
PROMPT 3 11 ""
FIELD SPT->S4
END
STRING F_DESCR6 20
BEGIN
PROMPT 3 12 ""
FIELD SPT->S5
END
ENDPAGE
ENDMASK

17
ve/batbtag.h Executable file
View File

@ -0,0 +1,17 @@
#define F_CODICE 101
#define F_DESCR1 102
#define F_DESCR2 103
#define F_DESCR3 104
#define F_DESCR4 105
#define F_DESCR5 106
#define F_DESCR6 107
#define F_DESCR7 108
#define F_DESCR8 109
#define F_DESCR9 110
#define F_DESCR10 111
#define F_DESCR11 112
#define F_DESCR12 113
#define F_DESCR13 114
#define F_DESCR14 115
#define F_DESCR15 116
#define TESTO 117

159
ve/batbtag.uml Executable file
View File

@ -0,0 +1,159 @@
#include "BATBTAG.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Gestione taglie" 11 60 14
STRING F_CODICE 2
BEGIN
PROMPT 3 4 "Codice della tabella "
USE TAG
FIELD TAG->CODTAB
CHECKTYPE REQUIRED
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Taglia 1 " S0[1,3]
DISPLAY "Taglia 2 " S0[5,7]
DISPLAY "Taglia 3 " S0[9,11]
DISPLAY "Taglia 4 " S0[13,15]
DISPLAY "Taglia 5 " S0[17,19]
DISPLAY "Taglia 6 " S0[21,23]
DISPLAY "Taglia 7 " S0[25,27]
DISPLAY "Taglia 8 " S0[29,31]
DISPLAY "Taglia 9 " S0[33,35]
DISPLAY "Taglia 10 " S0[37,39]
DISPLAY "Taglia 11 " S0[41,43]
DISPLAY "Taglia 12 " S0[45,47]
DISPLAY "Taglia 13 " S0[49,51]
DISPLAY "Taglia 14 " S0[53,55]
DISPLAY "Taglia 15 " S0[57,59]
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR1 S0[1,3]
OUTPUT F_DESCR2 S0[5,7]
OUTPUT F_DESCR3 S0[9,11]
OUTPUT F_DESCR4 S0[13,15]
OUTPUT F_DESCR5 S0[17,19]
OUTPUT F_DESCR6 S0[21,23]
OUTPUT F_DESCR7 S0[25,27]
OUTPUT F_DESCR8 S0[29,31]
OUTPUT F_DESCR9 S0[33,35]
OUTPUT F_DESCR10 S0[37,39]
OUTPUT F_DESCR11 S0[41,43]
OUTPUT F_DESCR12 S0[45,47]
OUTPUT F_DESCR13 S0[49,51]
OUTPUT F_DESCR14 S0[53,55]
OUTPUT F_DESCR15 S0[57,59]
KEY 1
END
TEXT TESTO
BEGIN
PROMPT 3 6 "Taglie "
END
STRING F_DESCR1 3
BEGIN
PROMPT 13 6 ""
FIELD TAG->S0[1,3]
END
STRING F_DESCR2 3
BEGIN
PROMPT 20 6 ""
FIELD TAG->S0[5,7]
END
STRING F_DESCR3 3
BEGIN
PROMPT 27 6 ""
FIELD TAG->S0[9,11]
END
STRING F_DESCR4 3
BEGIN
PROMPT 34 6 ""
FIELD TAG->S0[13,15]
END
STRING F_DESCR5 3
BEGIN
PROMPT 41 6 ""
FIELD TAG->S0[17,19]
END
STRING F_DESCR6 3
BEGIN
PROMPT 13 8 ""
FIELD TAG->S0[21,23]
END
STRING F_DESCR7 3
BEGIN
PROMPT 20 8 ""
FIELD TAG->S0[25,27]
END
STRING F_DESCR8 3
BEGIN
PROMPT 27 8 ""
FIELD TAG->S0[29,31]
END
STRING F_DESCR9 3
BEGIN
PROMPT 34 8 ""
FIELD TAG->S0[33,35]
END
STRING F_DESCR10 3
BEGIN
PROMPT 41 8 ""
FIELD TAG->S0[37,39]
END
STRING F_DESCR11 3
BEGIN
PROMPT 13 10 ""
FIELD TAG->S0[41,43]
END
STRING F_DESCR12 3
BEGIN
PROMPT 20 10 ""
FIELD TAG->S0[45,47]
END
STRING F_DESCR13 3
BEGIN
PROMPT 27 10 ""
FIELD TAG->S0[49,51]
END
STRING F_DESCR14 3
BEGIN
PROMPT 34 10 ""
FIELD TAG->S0[53,55]
END
STRING F_DESCR15 3
BEGIN
PROMPT 41 10 ""
FIELD TAG->S0[57,59]
END
GROUPBOX DLG_NULL 60 12
BEGIN
PROMPT 1 1 ""
FLAG "R"
END
ENDPAGE
ENDMASK

65
ve/batbtip.uml Executable file
View File

@ -0,0 +1,65 @@
#include "ve4.h"
TOOLBAR "" 0 20 60 2
#include "toolbar.h"
ENDPAGE
PAGE "Tabella tipi di documento" -1 -1 60 14
GROUPBOX DLG_NULL 84 10
BEGIN
PROMPT 1 1 ""
// FLAG "R"
END
STRING F_CODTAB 4
BEGIN
PROMPT 2 2 "Codice tipo di documento "
FIELD CODTAB
HELP "Codice tipo documento"
USE TIP
CHECKTYPE REQUIRED
INPUT CODTAB F_CODTAB
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0
KEY 1
FLAG "UZ"
END
STRING F_DESNUM 40
BEGIN
PROMPT 2 4 "Descrizione tipo documento "
FIELD S0
HELP "Descrizione tipo documento"
USE TIP
CHECKTYPE REQUIRED
INPUT S0 F_DESNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESNUM S0
KEY 2
END
STRING F_PROFILO 8
BEGIN
PROMPT 11 6 "Profilo documento "
FIELD S4
FLAG "U"
END
STRING F_PSTAMPA 8
BEGIN
PROMPT 4 8 "Profilo stampa documento "
FIELD S5
FLAG "U"
END
ENDPAGE
ENDMASK

47
ve/batbtri.uml Executable file
View File

@ -0,0 +1,47 @@
TOOLBAR "" 0 20 60 2
#include "toolbar.h"
ENDPAGE
#define F_CODICE 101
#define F_DESCR 102
#define F_PROFILO 103
PAGE "Tabella tipi di riga" -1 -1 60 14
STRING F_CODICE 2
BEGIN
PROMPT 2 2 "Codice "
FIELD CODTAB
USE TRI
INPUT CODTAB F_CODICE
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
KEY 1
END
STRING F_DESCR 30
BEGIN
PROMPT 2 4 "Descrizione "
FIELD S0
USE TRI
INPUT S0 F_DESCR
COPY DISPLAY F_CODICE
COPY OUTPUT F_CODICE
CHECKTYPE REQUIRED
KEY 2
END
STRING f_PROFILO 8
BEGIN
PROMPT 2 6 "Profilo "
CHECKTYPE REQUIRED
FIELD S4
END
END
ENDMASK

9
ve/batbubi.h Executable file
View File

@ -0,0 +1,9 @@
#define F_CODICE 101
#define F_TIPO 102
#define F_DESCR 103
#define F_VAL 104
#define F_VAL1 105
#define F_DATA 106

102
ve/batbubi.uml Executable file
View File

@ -0,0 +1,102 @@
#include "BATBUBI.h"
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Ubicazioni " 11 60 14
STRING F_CODICE 10
BEGIN
PROMPT 4 4 "Codice ubicazione "
FIELD UBI->CODTAB
KEY 1
USE UBI
FLAG "U"
FLAG "R"
INPUT CODTAB F_CODICE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40" S0
DISPLAY "Piano " S6
DISPLAY "Corridoio " S7
DISPLAY "Fila " S8
DISPLAY "Scaffale " S9
DISPLAY "Piano scaffale " S5
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_PIANO S6
OUTPUT F_CORRIDOIO S7
OUTPUT F_FILA S8
OUTPUT F_SCAFFALE S9
OUTPUT F_PSCAFFALE S5
CHECKTYPE REQUIRED
END
STRING F_DESCR 40
BEGIN
PROMPT 4 6 "Descrizione "
FIELD UBI->S0
KEY 2
USE UBI KEY 2
INPUT S0 F_DESCR
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40" S0
DISPLAY "Piano " S6
DISPLAY "Corridoio " S7
DISPLAY "Fila " S8
DISPLAY "Scaffale " S9
DISPLAY "Piano scaffale " S5
OUTPUT F_CODICE CODTAB
OUTPUT F_DESCR S0
OUTPUT F_PIANO S6
OUTPUT F_CORRIDOIO S7
OUTPUT F_FILA S8
OUTPUT F_SCAFFALE S9
OUTPUT F_PSCAFFALE S5
CHECKTYPE REQUIRED
END
STRING F_PIANO 4
BEGIN
PROMPT 4 8 "Piano "
FIELD UBI->S6
END
STRING F_CORRIDOIO 4
BEGIN
PROMPT 28 8 "Corridoio "
FIELD UBI->S7
END
STRING F_FILA 4
BEGIN
PROMPT 49 8 "Fila "
FIELD UBI->S8
END
STRING F_SCAFFALE 4
BEGIN
PROMPT 4 10 "Scaffale "
FIELD UBI->S9
END
STRING F_PSCAFFALE 4
BEGIN
PROMPT 23 10 "Piano scaffale "
FIELD UBI->S5
END
GROUPBOX DLG_NULL 68 11
BEGIN
PROMPT 3 1 ""
FLAG "R"
END
ENDPAGE
ENDMASK

31
ve/ve0.cpp Executable file
View File

@ -0,0 +1,31 @@
#include <xvt.h>
#include <strings.h>
#include <checks.h>
#include "ve0.h"
#define usage "Errore - Utilizzo: %s -{0|1|2}"
int main( int argc, char** argv )
{
int rt = -1;
const int r = (argc > 1) ? atoi( &argv[1][1] ) : -1;
switch (r)
{
case 1:
rt = ve0100( argc, argv );
break;
case 2:
rt = ve0200( argc, argv );
break;
case 3:
rt = ve0300( argc, argv );
break;
default:
error_box( usage, argv[0] );
break;
}
return rt;
}

18
ve/ve0.h Executable file
View File

@ -0,0 +1,18 @@
#ifndef __VE0_H
#define __VE0_H
#ifdef MAIN
#define extern
#endif
int ve0100(int argc, char** argv); // Motore di gestione documenti
int ve0200(int argc, char** argv); // Configurazione vendite
int ve0300(int argc, char** argv); // Generatore di maschere
#ifdef MAIN
#undef extern
#endif
#endif // __VE0_H

27
ve/ve0.url Executable file
View File

@ -0,0 +1,27 @@
#include "default.url"
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"

886
ve/ve0100.cpp Executable file
View File

@ -0,0 +1,886 @@
#include <xvt_defs.h>
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __BRWAPP_H
#include <brwapp.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
#ifndef __DEFMASK_H
#include "defmask.h"
#endif
#ifndef __VEUML_H
#include "\prassi\VEUML.H"
#endif
#ifndef __SHEET_H
#include <sheet.h>
#endif
#ifndef __REAL_H
#include <real.h>
#endif
#ifndef __MSKSHEET_H
#include <msksheet.h>
#endif
#ifndef __VE0100_H
#include "VE0100.H"
#endif
#ifndef __VE0100C_H
#include "VE0100C.H"
#endif
#ifndef __VE0100D_H
#include "VE0100D.H"
#endif
// Numero di colonne presenti sullo sheet totale
#define MAX_COLUMNS 22
// Definizione della classe dell'applicazione motore
class TMotore_application : public TRelation_application
{
// Array di totalizzatori
real _piedi[79];
// Record array per la gestione delle righe
TRecord_array* _righe_rec;
// Puntatore al profilo del documento caricato
TConfig* _pro;
// Puntatore al nome, per evitare di ricrearlo se è uguale
TFilename* _proname;
// Puntatore alla maschera di ricerca
TMask* _msk;
// Puntatore alla maschera di modifica/inserimento ( dipende dal profilo )
TMask* _msk1;
// puntatore alla relazione
TRelation* _rel;
// Puntatore allo sheet delle righe documento
TSheet_field* _sheet;
// Ridefinizione dei metodi virtuali
virtual bool user_create( );
virtual bool user_destroy( );
virtual TMask* get_mask(int mode);
virtual bool changing_mask(int mode);
virtual TRelation* get_relation( ) const { return _rel;}
virtual int read( TMask& m );
virtual bool remove( void );
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual void init_query_mode(TMask&);
// Punti di ingresso per le funzioni utente
// Funzioni da associare ad ogni procedura
int user_function( int index );
// Funzioni per il calcolo delle righe
real user_row_calculate( TRectype& row, int index );
void user_set_handler( int index, int filedid );
long prossimo_numero( bool provv );
int avanza_numero( bool provv );
void get_edit_mask( void );
void azzera_piedi( );
// Esegue, se c'è, la procedura utente relativa ad una certa operazione
int esegui_procedura( int operazione );
protected:
// Procedure e funzioni per la gestione della maschera e dei files
void read_rdoc(TMask& m);
// formato dipendente dallo sheet (sono le varie colonne)
void load_riga( TSheet_field& f, int numrig, TRectype& r );
void store_riga( TSheet_field& f, int numrig, TRectype& r );
void save(TRelation* r) const;
void set_descr (int numrig, const char* descr);
void carica_righe_libere(int from = -1);
bool check_key( TLocalisamfile& rdoc, TString16 codnum, bool provv, TString16 _anno, TString16 _ndoc );
// Procedure e funzioni per la gestione degli stati
void setta_stato_corrente( int nuovostato );
const char* nome_sezione( int op );
int stato_corrente( );
int stato_finale( int operazione );
bool stato_valido( int stato, int operazione );
void segnala_stato_non_valido( int operazione );
TString& stati_validi( int operazione ){ return ( pro( ).get( "STATIVALIDI", nome_sezione( operazione ) ) );};
void calcola_riga( TRectype& rdoc );
// Handle che ritorna la maschera per le righe
static TMask * ss_getmask( int numriga, TMask& fullmask, bool destroy );
// Handler che gestisce la richiesta del tipo riga in inserimento
static bool ss_handler( int r, KEY key );
// Handler per la maschera di ricerca
static bool ndoc_handler(TMask_field& f, KEY key);
static bool num_handler(TMask_field& f, KEY key);
static bool tip_handler(TMask_field& f, KEY key);
// Configurazione dello sheet dato il profilo
void configura_sheet( TSheet_field& sheet, TConfig& config );
public:
// Funzioni di accesso alle variabili privste
TRecord_array& righe_rec( ) { CHECK( _righe_rec, "Record array delle righe nullo!" ); return * _righe_rec; };
TConfig& pro( ) { CHECK( _pro, "Profilo del documento nullo!" ); return *_pro; };
TFilename& proname( ) { CHECK( _proname, "Nome del profilo nullo!" ); return *_proname; };
TMask& query_mask( ) { CHECK( _msk, "Maschera di ricerca nulla!" ); return *_msk; };
TMask& edit_mask( ) { CHECK( _msk1, "Maschera di modifica nulla!" ); return *_msk1; };
TRelation& rel( ) { CHECK( _rel, "Relazione nulla!" ); return *_rel; };
TSheet_field& sheet( ) { CHECK( _sheet, "Sheet nullo!" ); return *_sheet; };
// Operazione
bool valida_operazione( int operazione );
TSheet_field& ss( ) const { return *_sheet; }
TMotore_application( ) { _pro = NULL; }
virtual ~TMotore_application( ) { if ( _pro ) delete _pro; }
virtual const char* get_next_key( );
};
HIDDEN TMotore_application& app( ) { return (TMotore_application&) main_app( ); }
int TMotore_application::user_function( int index )
{
switch( index )
{ case 1:
break;
default:
yesnofatal_box( "Chiamata ad una procedura utente non definita: %d", index );
return FALSE;
break;
};
return NOERR;
};
// Funzione che dato il profilo di riga ottiene la maschera
// Serve per ottenere una maschera diversa per ogni riga
// Da migliorare, mettendo una cache
TMask *TMotore_application::ss_getmask( int numriga, TMask& fullmask, bool destroy )
{ static TMask* m;
if ( destroy )
{ delete m;
return( NULL ); }
else
{ TFilename nome_proriga( fullmask.get( 103 ) );
nome_proriga.ext( "ini" );
TConfig proriga( nome_proriga );
m = new TMask( proriga.get( "MSK", "MAIN" ) );
return( m ); }
}
real TMotore_application::user_row_calculate( TRectype& r, int index )
{ switch( index )
{ case 100 :
return ( f100( r ) );
break;
default:
CHECK( FALSE, "Tentativo di chiamare una funzione di calcolo riga inesistente!" );
return 0.0;
}
};
void TMotore_application::user_set_handler( int fieldid, int index )
{
switch( index )
{ case 100:
// edit_mask( ).set_handler( fieldeid, myhandler );
break;
default:
CHECK( FALSE, "tentativo di installare un handler non definito" );
break;
}
};
bool TMotore_application::ss_handler( int r, KEY key )
{
if ( key == K_INS )
{
TMask m( "ve1000b" );
TList_field& listbox = ( TList_field& ) m.field( F_LBTIPORIGA );
const int numtr = app( ).pro( ).get_int( "NTIPIRIGA", "RIGHE" );
TTable tabtr( "TRI" );
TToken_string keys( "" ), descrs( "" );
for ( int i = 1; i <= numtr; i ++ )
{ TString chiave;
TToken_string item;
chiave.format( "%d", i );
tabtr.zero( );
tabtr.put( "CODTAB", app( ).pro( ).get( chiave, "RIGHE" ) );
tabtr.read( );
keys.add( tabtr.get( "CODTAB" ) );
descrs.add( tabtr.get( "S0" ) );
}
listbox.replace_items( keys, descrs );
if( m.run( ) == K_ESC ) return FALSE;
tabtr.put( "CODTAB", m.get( F_LBTIPORIGA ) );
tabtr.read( );
TToken_string& riga = app( ).sheet( ).row( r );
riga.add( 1, 0 );
riga.add( m.get( F_LBTIPORIGA ), 1 );
riga.add( tabtr.get( "S4" ), 2 );
app( ).sheet( ).force_update( );
return TRUE;
}
return TRUE;
};
bool TMotore_application::num_handler( TMask_field& f, KEY key )
{
TMask& m = f.mask( );
if (key == K_TAB && m.is_running( ) )
{
TTable tabnum( "NUM" );
tabnum.read( );
m.set(F_DESNUM, tabnum.get("S0") );
m.set(F_TIPIDOCS, tabnum.get("S2") );
}
return TRUE;
}
bool TMotore_application::tip_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask( );
if (key == K_TAB && m.is_running( ) )
{
TString tipi_consentiti( m.get( F_TIPIDOCS ) );
TString tipo( f.get( ) );
if( tipi_consentiti.find( tipo ) % 4 )
{ message_box( "Tipo non valido per la numerazione selezionata!" );
f.set( "" );
return FALSE; }
TTable tabtip( "TIP" );
tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") );
};
if (key == K_ENTER && m.is_running( ) )
{ TString tipo( f.get( ) );
if ( ! tipo.blank( ) )
{ TTable tabtip( "TIP" );
tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") );
}
else
{ message_box( "Occorre un tipo documento per inserire un documento!" );
m.first_focus( F_TIPODOC );
return FALSE; }
}
return TRUE;
}
bool TMotore_application::ndoc_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask( );
if (key == K_TAB && m.is_running( ) )
{ TLocalisamfile& doc = app( ).rel( ).lfile( );
doc.zero( );
doc.put("CODNUM", m.get( F_CODNUM ) );
doc.put("PROVV", m.get( F_PROVV ) );
doc.put("ANNO", m.get( F_ANNO ) );
doc.put("NDOC", f.get( ) );
if ( doc.read( ) == NOERR )
{ m.set(F_TIPODOC, doc.get( "TIPODOC" ) );
TTable tabtip( "TIP" );
tabtip.put( "CODTAB", doc.get( "TIPODOC" ) );
tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") );
m.stop_run( K_AUTO_ENTER );
}
}
/* m.set( F_TIPODOC, doc.get( "TIPODOC" );
TTable tabtip( "TIP" );
tabtip.read( );
m.set(F_PROFILO, tabtip.get("S4") );
}
else
{ TString tipodoc = m.get( F_TIPODOC );
if ( ! f.blank( ) )
{ message_box( "Per inserire un nuovo documento occorre\nspecificare il tipo documento!" );
m.first_focus( F_TIPODOC );
return FALSE;
}
}
} */
return TRUE;
}
void TMotore_application::azzera_piedi( )
{
for ( int i = 0; i < 40; i++ )
_piedi[ i ] = 0.0;
}
bool TMotore_application::changing_mask(int mode)
{
static int lastmode = NO_MODE;
const bool change = ( mode != lastmode );
lastmode = mode;
return change;
}
void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config )
{ int i;
const int ncols = config.get_int( "NCOLS", "SHEET" );
for( i = 1; i <= ncols; i ++ )
{ TString col;
col.format( "%d", i );
TToken_string sheet_col( config.get( col, "SHEET" ) );
TString descr( sheet_col.get( 1 ) );
if ( ! descr.blank( ) )
sheet.set_column_header( i, descr );
TString size( sheet_col.get( 2 ) );
if ( ! size.blank( ) )
sheet.set_column_width( i, sheet_col.get_int( 2 ) );
sheet.move_column( sheet_col.get_int( 0 ) - 1, i );
}
for ( int j = MAX_COLUMNS; j >= i - 1; j -- )
sheet.delete_column( j );
};
void TMotore_application::get_edit_mask( void )
{
TFilename fn;
fn = query_mask( ).get( F_PROFILO );
query_mask( ).enable(DLG_NEWREC);
fn.ext( "ini" );
fn.upper( );
if ( _pro )
{ if( (*_proname) == fn ) return;
delete _pro;
};
_pro = new TConfig( fn );
_proname = new TFilename( fn );
_proname->upper( );
if ( _msk1 ) delete _msk1;
_msk1 = new TMask( pro( ).get( "MSKFILE", "MAIN" ) );
edit_mask( ).set( F_PROFILO, query_mask( ).get( F_PROFILO ) );
edit_mask( ).set( F_DESNUM, query_mask( ).get( F_DESNUM ) );
_sheet = &(TSheet_field &)edit_mask( ).field(F_SHEET);
sheet( ).set_notify( ss_handler );
configura_sheet( *_sheet, *_pro );
sheet( ).set_getmask( ss_getmask );
int numhandler = pro( ).get_int( "NHANDLER", "HANDLERS" );
for( int i = 1; i <= numhandler; i ++ )
{ TString chiave;
chiave.format( "%d", i );
TToken_string riga = pro( ).get( chiave, "HANDLERS" );
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
};
}
TMask* TMotore_application::get_mask( int mode )
{
switch ( mode )
{
case MODE_INS:
case MODE_MOD:
get_edit_mask( );
edit_mask( ).enable( DLG_PRINT, ( mode == MODE_MOD ) );
edit_mask( ).enable( 99, ( mode == MODE_MOD ) );
return ( _msk1 );
break;
default:
return _msk;
break;
};
}
void TMotore_application::set_descr(int i, const char * dfi)
{
TToken_string& r = ss( ).row(i);
r.add(dfi, 0);
}
void TMotore_application::carica_righe_libere(int from)
{
if (from < 0) from = ss( ).items( );
for (int i = from; i < 20; i++)
set_descr(i, "");
ss( ).force_update( );
}
void TMotore_application::init_query_mode(TMask& _mask)
{
_mask.disable( DLG_NEWREC );
}
const char* TMotore_application::get_next_key( )
{
TToken_string _t;
_t.add( F_CODNUM );
_t.add( query_mask( ).get( F_CODNUM ) );
_t.add( F_ANNO );
_t.add( query_mask( ).get( F_ANNO ) );
_t.add( F_PROVV );
_t.add( query_mask( ).get( F_PROVV ) );
_t.add( F_NDOC );
_t.add( prossimo_numero( query_mask( ).get( F_PROVV ) == "P" ) );
return( _t );
}
int TMotore_application::read(TMask& m)
{
azzera_piedi( );
int err = TRelation_application::read( m );
if ( err == NOERR )
{ TLocalisamfile& rdoc = rel( ).lfile(LF_RIGHEDOC);
TRectype r = rdoc.curr( );
r.zero( );
r.put( "CODNUM", m.get( F_CODNUM ) );
r.put( "PROVV", m.get( F_PROVV ) );
r.put( "ANNO", m.get( F_ANNO ) );
r.put( "NDOC", m.get_long( F_NDOC ) );
_righe_rec->read( r );
TSheet_field& f = (TSheet_field&) m.field( F_SHEET );
f.destroy( );
int last = _righe_rec->last_row( );
for( int i = 1; i <= last; i ++ )
{ TRectype &rec = _righe_rec->row( i, TRUE );
load_riga( f, i - 1, rec );
calcola_riga( rec );
}
TToken_string s( pro( ).get( "PROGPIEDE", "MAIN" ) );
i = s.get_int( );
int j = 0;
while( i != 0 )
{ real strpiede( _piedi[ i ] );
m.set( BASE_PIEDE + ( ++j ), strpiede.stringa( 15 ) );
i = s.get_int( );
}
}
return err;
}
bool TMotore_application::check_key( TLocalisamfile& rdoc, TString16 codnum, bool provv, TString16 anno, TString16 ndoc )
{
return ( ( rdoc.get("CODNUM") == codnum ) &&
( rdoc.get("NDOC") == ndoc ) &&
( rdoc.get("ANNO" ) == anno ) &&
( rdoc.get_bool( "PROVV" ) == provv ) );
}
/*
void TMotore_application::read_rdoc(TMask& m)
{
TLocalisamfile& rdoc = rel( ).lfile(LF_RIGHEDOC);
TString16 _cod_num = rel( ).lfile( ).get( "CODNUM" );
bool _provv(query_mask( ).get_bool(F_PROVV));
TString16 _anno(query_mask( ).get(F_ANNO));
TString16 _ndoc(query_mask( ).get(F_NDOC));
rdoc.zero( );
rdoc.put("CODNUM", _cod_num);
rdoc.put("PROVV", _provv);
rdoc.put("ANNO", _anno);
rdoc.put("NDOC", _ndoc);
// loop per il caricamento delle righe
for ( int err = rdoc.read(_isgteq); err == NOERR && check_key(rdoc,_cod_num,_provv, _anno, _ndoc ); err = rdoc.next( ) )
{ const numrig = rdoc.get_int( "NRIGA" );
CHECK(numrig > 0, "Documento con numero di riga nullo!!");
const int TipoRiga = rdoc.get_int( "TIPORIGA" );
const TString16 Codart = rdoc.get( "CODART" );
const TString Descr = rdoc.get( "DESCR" );
const TString16 UmQta = rdoc.get( "UMQTA" );
const real Qta = rdoc.get_real( "QTA" );
// add_riga(numrig-1, TipoRiga, (TString &)Codart, (TString &)Descr, (TString &)UmQta, Qta);
// calcola_riga( rdoc );
}
}
*/
int TMotore_application::write(const TMask& m)
{ int err;
if ( esegui_procedura( OP_NUOVO ) != NOERR )
return FALSE;
err = NOERR; // avanza_numero( m.get_bool( F_PROVV ) );
if ( err == NOERR )
{ err = TRelation_application::write( m );
if ( err == NOERR )
{ TSheet_field& f = ss( );
_righe_rec->destroy_rows( );
if ( m.insert_mode( ) )
_righe_rec->renum_key( "NRIGA", 1 );
for ( int i = 0; i < f.items( ); i ++ )
{
TToken_string& t = f.row( i );
TRectype& rec = _righe_rec->row(i + 1, TRUE);
store_riga( f, i, rec );
}
err = _righe_rec->write( );
}
}
return err;
};
int TMotore_application::rewrite(const TMask& m)
{
if ( ! valida_operazione( OP_MODIFICA ) )
return FALSE;
int err = TRelation_application::rewrite( m );
if ( err == NOERR )
{ TSheet_field& f = ss( );
_righe_rec->destroy_rows( );
if ( m.insert_mode( ) )
_righe_rec->renum_key( "NRIGA", 1 );
for ( int i = 0; i < f.items( ); i ++ )
{
TToken_string& t = f.row( i );
TRectype& rec = _righe_rec->row(i + 1, TRUE);
store_riga( f, i, rec );
}
err = _righe_rec->rewrite( );
}
return err;
};
// La funzione si trova in ve0100b
long TMotore_application::prossimo_numero( bool provv )
{
long ret;
TTable tabnum( "NUM" );
tabnum.read( );
if ( provv )
ret = tabnum.get_long( "I0" ) + 1;
else
ret = tabnum.get_long( "I1" ) + 1;
return ( ret );
};
int TMotore_application::avanza_numero( bool provv )
{
TTable tabnum( "NUM" );
int err = tabnum.read( );
if ( err == NOERR )
{ if ( provv )
tabnum.put( "I0", tabnum.get_long( "I0" ) + 1 );
else
tabnum.put( "I1", tabnum.get_long( "I1" ) + 1 );
err = tabnum.rewrite( );
}
return err;
};
// int TMotore_application::nuovo_documento( )
// {
//
// };
/*int TMotore_application::modifica_documento( )
{
KEY k;
edit_mask( ).autoload( _rel );
k = edit_mask( ).run( );
if ( k == K_SAVE )
{
if ( esegui_procedura( pro( ).indice_procedura( OP_MODIFICA ) ) != NOERR )
return FALSE;
edit_mask( ).autosave( _rel );
rel( ).rewrite( );
};
modify_mode( );
return NOERR;
};*/
bool TMotore_application::remove( void )
{
if ( ! valida_operazione( OP_CANCELLA ) )
return FALSE;
return TRelation_application::remove && ( _righe_rec->remove( ) == NOERR );
}
void TMotore_application::load_riga( TSheet_field& f, int numrig, TRectype& r )
{
TToken_string& riga = f.row(numrig);
// riga= "";
// riga.add( r.get( "NRIGA" ) );
riga = r.get( "STATORIGA" );
riga.add( r.get( "TIPORIGA" ) );
/*
switch(r.get_int( "TIPORIGA" ) )
{ case 1: riga.add("Merce"); break;
case 2: riga.add("Articolo Merce"); break;
case 3: riga.add("Spese"); break;
case 4: riga.add("Commento"); break;
case 5: riga.add("Omaggio"); break;
default: riga.add("Tipo Errato"); break;
}*/
riga.add( r.get( "PROFRIGA" ) );
riga.add( r.get( "CODMAG" ) );
riga.add( r.get( "CODART" ) );
riga.add( r.get( "DESCR" ) );
riga.add( r.get( "DESCLUNGA" ) );
riga.add( r.get( "PREZZO" ) );
riga.add( r.get( "UMQTA" ) );
riga.add( r.get_real( "QTA" ).string(11) );
riga.add( r.get( "QTAEVASA" ) );
riga.add( r.get( "RIGAEVASA" ) );
riga.add( r.get( "TARA" ) );
}
void TMotore_application::store_riga( TSheet_field& f, int numrig, TRectype& r )
{
TToken_string& riga = f.row(numrig);
r.put( "CODNUM", edit_mask( ).get( F_CODNUM ) );
r.put( "ANNO", edit_mask( ).get( F_ANNO ) );
r.put( "PROVV", edit_mask( ).get( F_PROVV ) );
r.put( "NDOC", edit_mask( ).get_long( F_NDOC ) );
// r.put( "NRIGA", riga.get( 0 ) );
r.put( "STATORIGA", riga.get( 0 ) );
r.put( "TIPORIGA", riga.get( 1 ) );
r.put( "PROFRIGA", riga.get( 2 ) );
r.put( "CODMAG", riga.get( 3 ) );
r.put( "CODART", riga.get( 4 ) );
r.put( "DESCR", riga.get( 5 ) );
r.put( "DESCLUNGA", riga.get( 6 ) );
r.put( "PREZZO", riga.get( 7 ) );
r.put( "UMQTA", riga.get( 8 ) );
r.put( "QTA", riga.get( 9 ) );
r.put( "QTAEVASA", riga.get( 10 ) );
r.put( "RIGAEVASA", riga.get( 11 ) );
r.put( "TARA", riga.get( 12 ) );
}
void TMotore_application::calcola_riga( TRectype& r )
{
TFilename proriganame( r.get("PROFRIGA") );
proriganame.ext( "INI" );
TConfig proriga( proriganame );
TToken_string s(proriga.get("PROGPIEDE", "MAIN"));
int func = s.get_int( );
while( func )
{ _piedi[ s.get_int( ) ] += user_row_calculate( r, func );
func = s.get_int( );
}
}
bool TMotore_application::user_create( )
{ azzera_piedi( );
// Carico la maschera di ricerca dei documenti
_msk = new TMask("VE1000A");
query_mask( ).set_handler( F_NDOC, ndoc_handler );
query_mask( ).set_handler( F_CODNUM, num_handler );
query_mask( ).set_handler( F_TIPODOC, tip_handler );
// La maschera di inserimento/modifica per ora non la so!
// Viene letta dal profilo non appena trovato il record
_msk1 = NULL;
// Metto in relazione testata e righe
_rel = new TRelation(LF_DOC);
rel( ).add( LF_RIGHEDOC,"CODNUM=CODNUM;ANNO=ANNO;PROVV=PROVV;NDOC=NDOC" );
// Inizializzo il Record_array
_righe_rec = new TRecord_array( LF_RIGHEDOC, "NRIGA", 1 );
return TRUE;
}
bool TMotore_application::user_destroy( )
{
// Se è ancora allocata, distruggo la maschera di modifica
if ( _msk1 ) delete _msk1;
// Distruggo la maschera di modifica
delete _msk;
// Distruggo la relazione
delete _rel;
// Distruggo il Record_array
delete _righe_rec;
return TRUE;
}
int TMotore_application::esegui_procedura( int operazione )
{
// Accesso unico alla chiamata di procedure tramite operazione
int index = ( int )pro( ).get_long( nome_sezione( operazione ), "MAIN" );
if ( index )
return ( user_function( index ) );
return ( NOERR );
}
bool TMotore_application::valida_operazione( int operazione )
{
if ( operazione != OP_NUOVO )
{ if ( !stato_valido( stato_corrente( ), operazione ) )
{ segnala_stato_non_valido( operazione );
return FALSE;
};
};
if ( esegui_procedura( operazione ) == NOERR )
return FALSE;
return TRUE;
}
const char * TMotore_application::nome_sezione( int op )
{ switch( op )
{ case OP_NUOVO:
return "INSERIMENTO";
break;
case OP_MODIFICA:
return "MODIFICA";
break;
case OP_CANCELLA:
return "CANCELLAZIONE";
break;
case OP_STAMPA:
return "STAMPA";
break;
case OP_RAGGRUPPA:
return "RAGGRUPPA";
break;
case OP_USER:
return "SPECIALE";
break;
default:
CHECK( FALSE, "tentativo di ottenere il nome di una operazione inesistente!" );
// Per evitare la warning
return "";
break;
};
}
int TMotore_application::stato_finale( int operazione )
{
TString s( pro( ).get( "STATOFINALE", nome_sezione( operazione ) ) );
if( strcmp( s, "N" ) == 0 ) return NO_CHANGE_STATUS;
return ( atoi( s ) );
};
bool TMotore_application::stato_valido( int stato, int operazione )
{
#ifdef _DEBUG
warning_box( "Controllo stati validi!\nStato corrente %d.\nStati validi %s.", stato_corrente( ), ( const char * )stati_validi( operazione ) );
#endif
char p[2] = "0";
TToken_string ret ( stati_validi( operazione ), ',' );
p[0] += (char)stato;
return ( ret.get_pos( p ) != -1 );
};
void TMotore_application::setta_stato_corrente( int nuovostato )
{
// warning_box( "Settaggio stati validi!\nStato corrente %s.\nStati validi %s.\nStato finale %s.", stato_corrente( ), stati_validi( operazione ), stato_finale( operazione ) );
TString p;
p.format( "%d", nuovostato );
TLocalisamfile& doc = rel( ).lfile(LF_DOC);
p[0] += (char)nuovostato;
doc.put("STATO", p);
doc.rewrite( );
query_mask( ).set( F_STATO, p );
// warning_box( "Settaggio stati validi!\nStato corrente %s.\nStati validi %s.\nStato finale %s.", stato_corrente( ), stati_validi( operazione ), stato_finale( operazione ) );
}
int TMotore_application::stato_corrente( )
{
int i = query_mask( ).get_int( F_STATO );
return ( i == 0 ? NO_DOC_STATUS : i );
};
void TMotore_application::segnala_stato_non_valido( int operazione )
{
TString messaggio;
switch( operazione )
{
case OP_NUOVO:
// Sempre valido
break;
case OP_MODIFICA:
messaggio = "Il documento non si trova in uno stato valido per poter essere modificato!";
break;
case OP_CANCELLA:
messaggio = "Il documento non si trova in uno stato valido per poter essere cancellato!";
break;
case OP_STAMPA:
messaggio = "Il documento non si trova in uno stato valido per poter essere stampato!";
break;
case OP_RAGGRUPPA:
messaggio = "Il documento non si trova in uno stato valido per poter essere raggruppato!";
break;
case OP_USER:
messaggio = "Il documento non si trova in uno stato valido per effettuare la operazione richiesta!";
break;
default:
CHECK( FALSE, "Tentativo di segnalare stato non valido di una operazione non esistente!" );
break;
};
messaggio << "\nStato corrente :%d.\nStati validi :%s.";
warning_box( messaggio, stato_corrente( ), ( const char * )stati_validi( operazione ) );
};
int ve0100(int argc, char** argv)
{
TMotore_application a;
a.run(argc, argv, "Gestione documenti");
return 0;
}

17
ve/ve0100.h Executable file
View File

@ -0,0 +1,17 @@
#define _VE0100_H
// Operazioni che può fare il motore su un documento
#define OP_NUOVO 1
#define OP_MODIFICA 2
#define OP_CANCELLA 3
#define OP_STAMPA 4
#define OP_RAGGRUPPA 5
#define OP_USER 6
// Costante per il non-cambiamento di stato
#define NO_CHANGE_STATUS -1
#define NO_DOC_STATUS -2
#define F_SHEET 500
#define BASE_PIEDE 600

34
ve/ve0100b.cpp Executable file
View File

@ -0,0 +1,34 @@
int numerazione_definitiva( TRectype& rec )
{ TTable tabnum( "NUM" );
TRectype* oldrec( rec.dup );
tabnum.zero( );
tabnum.set( "CODTAB", rec.get( "CODNUM" ) );
int err = tabnum.read( _islock );
// Modifico la chiave del record passato!
rec.set( "NDOC", tabnum.get_long( "I1" ) );
rec.set( "PROVV", "D" );
if ( err == NOERR )
{ // Aggiorno la tabella!
tabnum.put( "I1", tabnum.get_long( "I1" ) + 1 );
err = tabnum.rewrite();
}
int err = tabnum.read( _isunlock );
if ( err = NOERR )
{
// carico le righe usando la vecchia chiave
TRecord_array righe_rec( LF_RIGHEDOC, "NRIGA" );
righe_rec.read( r );
int last = righe_rec->last_row();
for ( int i = 1; i <= last; i ++ )
{ // Le aggiorno con la nuova chiave
TRectype &rigarec = righe_rec->row( i, TRUE );
rigarec.set( "PROVV", "D" );
rigarec.set( "NDOC", rec.get( "NDOC" ) );
}
righe_rec.rewrite( );
};
return err;
};

6
ve/ve0100c.cpp Executable file
View File

@ -0,0 +1,6 @@
// Handler di marco sui campi delle maschere
#ifndef __VE0100C_H
#include "ve0100c.h"
#endif

1
ve/ve0100c.h Executable file
View File

@ -0,0 +1 @@
#define __VE0100C_H

8
ve/ve0100d.cpp Executable file
View File

@ -0,0 +1,8 @@
#ifndef __VE0100D_H
#include "ve0100d.h"
#endif
real f100( TRectype& r )
{
return( r.get_real( "PREZZO" ) * r.get_real( "QTA" ) );
};

12
ve/ve0100d.h Executable file
View File

@ -0,0 +1,12 @@
#define __VE0100D_H
#ifndef __REAL_H
#include "real.h"
#endif
#ifndef __ISAM_H
#include "isam.h"
#endif
real f100( TRectype& r );

67
ve/ve0200.cpp Executable file
View File

@ -0,0 +1,67 @@
#include <xvt.h>
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __CONFAPP_H
#include <confapp.h>
#endif
#ifndef __EXECP_H
#include <execp.h>
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
// #include "ve5.h"
class Conf_vendite_app : public TConfig_application
{
public:
virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config (TMask& mask, TConfig& config);
Conf_vendite_app() : TConfig_application(CONFIG_DITTA) {}
virtual ~Conf_vendite_app() {}
};
bool Conf_vendite_app::preprocess_config (TMask& mask, TConfig& config)
{
disable_menu_item(M_FILE_NEW);
disable_menu_item(M_FILE_REVERT);
return TRUE;
}
bool Conf_vendite_app::postprocess_config(TMask& mask, TConfig& config)
{ TExternal_app *cl;
TTable t("TIP");
t.first();
while( ! t.eof() )
{
TString s( "Eseguirò \"vegenmsk " );
s << t.get( "S1" );
s << "\"!";
message_box( s );
s = "vegenmsk ";
s << t.get( "S1" );
cl = new TExternal_app( s );
cl->run( );
delete cl;
t.next();
}
enable_menu_item(M_FILE_NEW);
enable_menu_item(M_FILE_REVERT);
return TRUE;
}
int ve0200(int argc, char** argv)
{
Conf_vendite_app appc;
appc.run(argc, argv, "Parametri gestione vendite");
return 0;
}

700
ve/ve0300.cpp Executable file
View File

@ -0,0 +1,700 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
"Compilatore di profili" per la gestione vendite.
Considerando:
- Profilo documento
- Configurazione vendite per la ditta
- Condizioni atmosferiche
genera le maschere appropriate.
Accetta sulla riga di comando il nome del profilo documento per cui deve generare
la maschera. Il nome del file .MSK viene dedotto dal profilo documento stesso.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef XVT_INCL_DEFS
#include <xvt_defs.h>
#endif
#include "\prassi\veuml.h"
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __FSTREAM_H
#include <fstream.h>
#endif
#ifndef __SCANNER_H
#include <scanner.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#ifndef __APPLICATION_H
#include <applicat.h>
#endif
#ifndef __UTILITY_H
#include <utility.h>
#endif
#ifndef __DEFMASK_H
#include <defmask.h>
#endif
#ifndef __VE0100_H
#include "ve0100.h"
#endif
// Costanti simboliche per i tipi di campo
#define T_DATE 1
#define T_STRING 2
#define T_NUMBER 3
#define T_BOOLEAN 4
#define T_LISTBOX 5
#define T_MEMO 6
// Costanti simboliche per flags del campo
#define FS_HIDDEN 0
#define FS_DISABLED 1
#define FS_NORMAL 2
#define FS_REQUIRED 3
// Significato delle colonne nella tabella _tab0300a
#define A_NOME 0
#define A_FILEFLD 1
#define A_MSKFLD 2
#define A_MSKTYPE 3
#define A_DESCR 4
#define A_MSKSIZE 5
#define A_FLAG 6
#define A_USE 7
#define A_INPUT 8
#define A_DISPLAY 9
#define A_OUTPUT 10
#define A_SPECIAL 11
#define A_ITEMS 12
// Significato delle colonne nella tabella _tab0300b
#define B_NOME 0
#define B_MSKTYPE 1
#define B_MSKSIZE 2
#define B_DESCR 3
#define B_WIDTH 4
// Numero massimo di linee per pagina
#define MAX_LINES_PER_PAGE 14
class TMask_generator
{
private:
// Identificatore corrente per lo sheet
int _curid;
// Linea corrente
int _curline;
// Pagina corrente
int _curpage;
// Vero se la pagina è aperta
bool _pageopen;
// nome del file di .INI di input
TFilename _proname;
// File .INI di input
TConfig* _pro;
// File .MSK di output
ofstream* _out;
// Ultima linea letta
TToken_string _line;
// Tabelle per la generazione
// Campi dei documenti
TString_array _tab0300a;
// Campi dello sheet
TString_array _tab0300b;
protected:
// Carica un file di tabella in un TString array
void carica_tabella( const TFilename& fn, TString_array& tabella );
// Scrive sul file di output una serie di righe uguali per funzione ( DISPLAY, ecc. )
void outline( const TString& s = "", const TString& prefix = "", const char sep = '~' );
// Crea un controllo del tipo specificato
void control( const int type, const int id = DLG_NULL, const int size = -1 );
// Ritorna vero se una componente della maschera è presente
int present( const int i, TToken_string line ){ const TString s = line.get( i ); return !(s.blank( )); };
// Funzioni per generare la maschera
// ---------------------------------
// CHECKTYPE
void check( const int i );
// PAGE
void pagina( const int i ){ (*_out) << "PA \"Pagina " << i << "\" 11 60 14\n"; };
// PROMPT
void prompt( const int x, const int y, const TString& s = "" ){ (*_out) << "PR " << x << " " << y << " \"" << s << "\"\n"; };
// BEGIN
void begin( void ) { outline ( "BE" ); };
// END
void end( void ) { outline ( "EN" ); };
// ENDMASK
void endmask( void ) { outline ( "ENDMASK" ); };
// FLAG
void flag( const TString& s ) { (*_out) << "FLAG \"" << s << "\"\n"; };
// GROUP
void group( const int g ) { (*_out) << "GR " << g << "\n"; };
// FIELD
void field( const TString& s ) { outline( s, "FI "); };
// ITEM
void item( const TString& s );
// MESSAGE
void message( const TString& s ) { outline( s, "ME "); };
// USE
void use( const TString& s ){ outline( s, "US " ); };
// DISPLAY
void display( const TString& s ){ outline( s, "DI " ); };
// INPUT
void input( const TString& s ){ outline( s, "IN " ); };
// OUTPUT
void output( const TString& s ){ outline( s, "OU " ); };
// Funzioni di accesso alle variabili private
// ------------------------------------------
// Funzioni per la lettura/scrittura di ID. Si incrementa da solo.
int id ( ) { return( _curid++ ); };
void id( const int i ){ _curid = i; };
// Funzioni per la lettura/scrittura di CURPAGE
int page( ) { return _curpage; };
void page( const int i ){ _curpage = i; };
// Funzioni per la lettura/scrittura di CURLINE
int line( ) { return _curline; };
void line( const int i ){ _curline = i; };
// Funzioni di generazione ad alto livello
// ---------------------------------------
// Genera un campo a partire da una linea del file VE0300A.DAT
void genera_campo( TToken_string _line );
// Genera un campo dello sheet a partire da una linea del file VE0300B.DAT
void genera_campo_sheet( TToken_string _line );
// Genera la colonna dello sheet a partire da una linea del file VE0300B.DAT
void genera_item_sheet( TToken_string _line );
// Genera l'intestazione di una pagina ( non la prima )
void intestazione_pagina( );
public:
// Costruttore, vuole il nome del file .INI
TMask_generator( const TString& profilo );
// Attiva la generazione della maschera
void genera( );
// Distruttore
virtual ~TMask_generator( );
};
// Definizione dei metodi di TMask_generator
// -----------------------------------------
TMask_generator::TMask_generator( const TString& profilo ) : _proname( profilo )
{
// All'inizio la pagina è 'chiusa'
_pageopen = FALSE;
// La pagina iniziale è la 1
_curpage = 1;
// La linea iniziale è la 8
_curline = 8;
// Forza l'estensione al profilo
_proname.ext( "ini" );
// Se il file di profilo non esiste, esci con un errore fatale
if ( !fexist( _proname ) )
fatal_box( "Il file %s non esiste!", _proname );
CHECK( fexist( "ve0300a.dat" ), "Il file ve0300a.dat non esiste!" );
carica_tabella( "ve0300a.dat", _tab0300a );
CHECK( fexist( "ve0300b.dat" ), "Il file ve0300b.dat non esiste!" );
carica_tabella( "ve0300b.dat", _tab0300b );
};
TMask_generator::~TMask_generator( )
{
delete _out;
};
void TMask_generator::carica_tabella( const TFilename& fn, TString_array& tabella )
{ TScanner in( fn );
TToken_string line = in.line();
while( line.not_empty( ) )
{ // Attacca tutte le righe che finiscono con §
while ( line.right( 1 ) == "§" )
{ line.rtrim( 1 );
line << in.line( );
};
tabella.add( line );
line = in.line();
}
};
void TMask_generator::outline( const TString& s, const TString& prefix, const char sep )
{
if ( s.left( 1 ) == "§" )
(*_out) << "CO " << prefix << s.mid( 1 ) << "\n";
else
{ TToken_string u( s, sep );
for ( int i = 0; i < u.items(); i ++ )
(*_out) << prefix << u.get( i ) << "\n";
}
};
void TMask_generator::check( const int i )
{
switch( i )
{
case FS_REQUIRED:
outline ( "CH REQUIRED" );
break;
default:
outline ( "CH NORMAL" );
break;
}
};
void TMask_generator::control( const int type, const int id, const int size )
{
switch ( type )
{ case T_DATE : (*_out) << "DA"; break;
case T_STRING : (*_out) << "ST"; break;
case T_BOOLEAN : (*_out) << "BO"; break;
case T_NUMBER : (*_out) << "NU"; break;
case T_LISTBOX : (*_out) << "LI"; break;
};
(*_out) << " " << id;
if ( size > 0 )
if ( size > 100 )
(*_out) << " " << ( int )( size / 100 ) << " " << ( size % 100 );
else
(*_out) << " " << size;
(*_out) << "\n";
};
void TMask_generator::item( const TString& str )
{ int i, j;
TToken_string u( str, '~' );
TString s, mess;
for( i = 0; i < u.items(); i ++ )
{ s = u.get( i );
if ( ( j = s.find( "£" ) ) != -1 )
{ mess = s.mid( j + 1 );
s = s.left( j );
};
if ( ( j = s.find ( "§" ) ) != -1 )
s[ j ] = '|';
(*_out) << "IT \"" << s << "\"\n";
if ( mess.not_empty( ) )
(*_out) << "ME " << mess << "\n";
}
}
void TMask_generator::genera_campo_sheet( TToken_string _line )
{
const int type( _line.get_int( B_MSKTYPE ) );
control( type, id( ), _line.get_int( B_MSKSIZE ) );
begin( );
prompt( 2, 2 );
end( );
}
void TMask_generator::genera_item_sheet( TToken_string _line )
{
(*_out) << "IT \"" << _line.get( B_DESCR );
(*_out) << "@" << _line.get_int( B_WIDTH ) << "\"\n";
}
void TMask_generator::genera_campo( TToken_string _line )
{
TString s;
const int type( _line.get_int( A_MSKTYPE ) );
const int size( _line.get_int( A_MSKSIZE ) );
if ( present( A_MSKSIZE, _line ) )
control( type, _line.get_int( A_MSKFLD ), size );
else
control( type, _line.get_int( A_MSKFLD ) );
begin();
TString name( _line.get( A_NOME ) );
name.trim();
int value = _pro->get_int( name, "PROFILO" );
switch( value )
{ case FS_HIDDEN:
prompt( 2, 2 );
s = "H";
s << _line.get( A_FLAG );
flag( s ) ;
break;
case FS_DISABLED :
prompt( 2, line( ), _line.get( A_DESCR ) );
s = "D";
s << _line.get( A_FLAG );
flag( s ) ;
line( line( ) + 1 );
break;
case FS_NORMAL :
case FS_REQUIRED :
prompt( 2, line( ), _line.get( A_DESCR ) );
flag( _line.get( A_FLAG ) );
line( line( ) + 1 );
break;
}
const TString chiave( _line.get( A_NOME ) );
check( _pro->get_int( chiave, "PROFILO" ) );
if ( present( A_FILEFLD, _line ) ) field( _line.get( A_FILEFLD ) );
if ( present( A_ITEMS, _line ) ) item( _line.get( A_ITEMS ) );
if ( present( A_USE, _line ) ) use( _line.get( A_USE ) );
if ( present( A_INPUT, _line ) ) input( _line.get( A_INPUT ) );
if ( present( A_DISPLAY, _line ) ) display( _line.get( A_DISPLAY ) );
if ( present( A_OUTPUT, _line ) ) output( _line.get( A_OUTPUT ) );
if ( present( A_SPECIAL, _line ) ) outline( _line.get( A_SPECIAL ) );
end();
if ( ( line() > MAX_LINES_PER_PAGE ) && ( _pageopen == TRUE))
{ end();
_pageopen = FALSE;
line( 8 );
};
}
void TMask_generator::intestazione_pagina( )
{
page( page( ) + 1 );
pagina( page( ) );
(*_out) << "GR " << DLG_NULL << " 77 4\n";
begin();
prompt( 1, 1 );
end();
control( T_STRING, DLG_NULL, 4 );
begin();
prompt( 2, 2, "Codice numerazione " );
group( 2 );
flag( "DUZ" );
end();
control( T_STRING, DLG_NULL, 40 );
begin();
prompt( 32, 2 );
flag( "DU" );
group( 3 );
end();
control( T_STRING, DLG_NULL, 12 );
begin();
prompt( 32, 3, "Profilo :" );
flag( "DU" );
group( 4 );
end();
control( T_STRING, DLG_NULL, 4 );
begin();
prompt( 2, 3, "Esercizio " );
flag( "D" );
group( 5 );
end();
control( T_LISTBOX, DLG_NULL, 14 );
begin();
prompt( 32, 5, "Numerazione " );
item( "P§Provvisoria" );
item( "D§Definitiva " );
flag( "D" );
group( 6 );
end();
control( T_NUMBER, DLG_NULL, 7 );
begin();
prompt( 2, 5, "Numero documento " );
group( 7 );
flag( "DZ" );
end();
control( T_NUMBER, DLG_NULL, 1 );
begin();
prompt( 2, 6, "Stato corrente " );
group( 8 );
flag( "D" );
end();
control( T_DATE );
begin();
prompt( 51, 6, "Data documento " );
group( 9 );
flag( "D" );
end();
}
void TMask_generator::genera( )
{
int i;
_pro = new TConfig( _proname );
TFilename _mskname( _pro->get( "MSKFILE", "MAIN") );
_mskname.ext( "msk" );
_out = new ofstream( _mskname );
// Definizione della toolbar
outline( "TOOLBAR \"\" 0 20 0 2" );
outline( "BU 18 8 2" );
begin();
prompt( -15, -1, "~Registra" );
message( "EXIT,20082" );
end();
outline( "BU 17 8 2" );
begin();
prompt( -25, -1, "~Elimina" );
message( "EXIT,127" );
end();
outline( "BU 99 8 2" );
begin();
prompt( -35, -1, "E~labora" );
message( "EXIT,345" );
end();
outline( "BU 24 8 2" );
begin();
prompt( -45, -1 );
message( "EXIT,346" );
end();
outline( "BU 2 8 2" );
begin();
prompt( -55, -1 );
message( "EXIT,27" );
end();
// End della toolbar
end();
// Header della prima pagina
outline( "PA \"Pagina \" 11 60 14" );
(*_out) << "GR " << DLG_NULL << " 77 4\n";
begin();
prompt( 1, 1 );
end();
control( T_STRING, F_CODNUM, 4 );
begin();
prompt( 2, 2, "Codice numerazione " );
field( "CODNUM" );
flag( "GDUZ" );
message( "CO,2@" );
end();
control( T_STRING, F_DESNUM, 40 );
begin();
prompt( 32, 2 );
flag( "GDU" );
message( "CO,3@" );
end();
control( T_STRING, F_PROFILO, 12 );
begin();
prompt( 32, 3, "Profilo :" );
flag( "GDU" );
message( "CO,4@" );
end();
control( T_STRING, F_ANNO, 4 );
begin();
prompt( 2, 3, "Esercizio " );
field( "ANNO" );
flag( "GD" );
message( "CO,5@" );
end();
control( T_LISTBOX, F_PROVV, 14 );
begin();
prompt( 32, 5, "Numerazione " );
field( "PROVV" );
item( "P§Provvisoria£CO,6@" );
item( "D§Definitiva £CO,6@" );
end();
control( T_NUMBER, F_NDOC, 7 );
begin();
prompt( 2, 5, "Numero documento " );
field( "NDOC" );
message( "CO, 7@" );
flag( "Z" );
end();
control( T_NUMBER, F_STATO, 1 );
begin();
prompt( 2, 6, "Stato corrente " );
field( "STATO" );
message( "CO,8@" );
flag( "GD" );
end();
control( T_DATE, F_DATADOC );
begin();
prompt( 51, 6, "Data documento " );
message( "CO,9@" );
field( "DATADOC" );
end();
// Generazione
_pageopen = TRUE;
for( i = 0; i < _tab0300a.items( ); i ++ )
{ if (_pageopen == FALSE)
{ intestazione_pagina( );
_pageopen = TRUE;
}
genera_campo( _tab0300a.row( i ) );
}
if ( _pageopen == TRUE ) end( );
intestazione_pagina( );
// Generazione dello sheet : vedi il profilo
TScanner sheet_in( "ve0300b.dat" );
(*_out) << "SPREADSHEET " << F_SHEET << "\n";
begin();
prompt( 2, 7 );
for( i = 0; i < _tab0300b.items( ); i ++ )
genera_item_sheet( _tab0300b.row( i ) );
end();
end();
// Generazione pagina dei piedi
TToken_string s(_pro->get( "PROGPIEDE", "MAIN" ) );
if ( s.not_empty() )
{ intestazione_pagina( );
TConfig ditta(CONFIG_DITTA);
int cp = 1;
int piede = s.get_int();;
while ( piede != 0 )
{ control( T_NUMBER, BASE_PIEDE + cp, 1805 );
begin();
TString header = ditta.get( "PIEDE", "ve", piede );
while( header.len() < 40 ) header << " ";
prompt( 2, 7 + cp, header );
flag( "D" );
end();
cp ++;
piede = s.get_int();
}
end();
};
endmask( );
// Stategia al 30/06/95
// Creo una maschera con tutte le colonne, poi, a RUNTIME,
// dal motore, nascondo e adatto le colonne.
// Generazione maschera dello sheet
(*_out) << "PA \"Pagina 1\" 8 5 64 13\n";
id( 101 );
for( i = 0; i < _tab0300b.items( ); i ++ )
genera_campo_sheet( _tab0300b.row( i ) );
end();
end();
endmask( );
delete _pro;
delete _out;
}
// Applicazione guscio
class TGenMask_application : public TApplication
{
protected:
virtual bool create( );
virtual bool menu( MENU_TAG m );
};
bool TGenMask_application::menu(MENU_TAG m)
{
TMask_generator a( argv( 2 ) );
a.genera( );
return( TRUE );
};
bool TGenMask_application::create( )
{
TApplication::create();
menu( 0 );
return FALSE;
};
int ve0300( int argc, char** argv )
{
if ( argc < 3 )
fatal_box( "Sintassi: VE0 -3 <Nome file di profilo>" );
TGenMask_application a;
a.run ( argc, argv, "Generazione in corso ..." );
return 0;
}

272
ve/ve0300.uml Executable file
View File

@ -0,0 +1,272 @@
#include "VeUML1.h"
TIPOCF |TIPOCF |F_TIPOCF |2|Tipo cliente/fornitore |1|
CODCF |CODCF |F_CODCF |3|Codice cliente/fornitore |6|R|§
LF_CLIFO KEY 1|§
CODCF F_CODCF|§
"Codice" LF_CLIFO->CODCF~"Ragione sociale@50" LF_CLIFO->RAGSOC~"Indirizzo@35" LF_CLIFO->INDCF|§
F_CODCF LF_CLIFO->CODCF~F_RAGSOC LF_CLIFO->RAGSOC~F_INDCF LF_CLIFO->INDCF~§
F_CIVCF LF_CLIFO->CIVCF~F_CODAG LF_CFVEN->CODAG~F_CODVAL LF_CLIFO->CODVAL~§
F_OCCAS LF_CLIFO->OCCAS~F_CODLIN LF_CLIFO->CODLIN~F_CODABIA LF_CLIFO->CODABI~§
F_CODCABA LF_CLIFO->CODCAB~F_CODLIST LF_CFVEN->CODLIST~§
F_CODPAG LF_CLIFO->CODPAG|§
HELP "Inserire il codice del cliente"~§
WARNING "Cliente non presente"~§
JOIN LF_CFVEN TO LF_CLIFO KEY 1 INTO TIPOCF=TIPOCF CODCF=CODCF|
RAGSOC | |F_RAGSOC |2|Ragione sociale |50|U|§
LF_CLIFO KEY 2|§
RAGSOC F_RAGSOC|§
"Ragione sociale@50" LF_CLIFO->RAGSOC~"Codice" LF_CLIFO->CODCF~"Indrizzo@35" LF_CLIFO->INDCF|§
|COPY OUTPUT F_CODCF~§
HELP "Inserire la ragione sociale della ditta"~§
WARNING "Ragione sociale non trovata"§
~JOIN LF_CFVEN TO LF_CLIFO KEY 1 INTO TIPOCF=TIPOCF CODCF=CODCF|
INDCF | |F_INDCF |2|Indirizzo |35|U|
CIVCF | |F_CIVCF |2|N. |3|R|
OCFPI |OCFPI |F_OCFPI |2|Partita IVA |16|
OCCAS |OCCAS |F_OCCAS |4|Clienti occasionali ||
CODVAL |CODVAL |F_CODVAL |2|Codice valuta |3|U|§
%VAL|§
CODTAB F_CODVAL|§
"Codice" CODTAB~"Valuta@25" S0~"Cambio" R0|§
F_CODVAL CODTAB~F_NOME_VAL S0~F_CAMBIO R0|§
HELP "Inserisci il codice della valuta"~§
WARNING "Codice valuta non trovata"|
CAMBIO |CAMBIO |F_CAMBIO |3|Cambio |1505|R|
NOME_VAL | |F_NOME_VAL |2|Valuta |25|U|
CODLIN |CODLIN |F_CODLIN |2|Codice lingua |1|U|
RAGGR |RAGGR |F_RAGGR |4|Raggruppamenti ||
CODPAG |CODPAG |F_CODPAG |2|Codice pagamento |4|U|§
%CPG|§
CODTAB F_CODPAG|§
"Codice" CODTAB~"Descrizione@50" S0|§
F_CODPAG CODTAB~F_DESCODPAG S0|§
HELP "Inserisci il codice del tipo di pagamento"§
~WARNING "Codice tipo pagamento non trovato"|
DESCODPAG | |F_DESCODPAG |2|Pagamento |7050|
DATAINSC |DATAINSC |F_DATAINSC |1|Data inizio scadenza ||A|||||§
HELP "Inserisci la data di inizio scadenza"§
~WARNING "E' richiesta una data valida"|
DATASCAD1 | |F_DATASCAD1 |1|Data prima scadenza ||
DATASCAD2 | |F_DATASCAD2 |1|Data seconda scadenza ||
DATASCAD3 | |F_DATASCAD3 |1|Data terza scadenza ||
DATASCAD4 | |F_DATASCAD4 |1|Data quarta scadenza ||
DATASCAD5 | |F_DATASCAD5 |1|Data quinta scadenza ||
CODABIA |CODABIA |F_CODABIA |3|Codice ABI banca d'appoggio |5|Z|§
%BAN KEY 1|§
CODTAB[1,5] F_CODABIA~CODTAB[6,10] F_CODCABA|§
"Cod. Istit." CODTAB[1,5]~"Cod. Fil." CODTAB[6,10]~"Denominazione@50" S0|§
F_CODABIA CODTAB[1,5]~F_CODCABA CODTAB[6,10]~F_BANCA_APP S0|§
HELP "Inserisci il codice della Banca (istituto)"~§
WARNING "Codice Banca non trovato"|
CODCABA |CODCABA |F_CODCABA |3|Codice CAB banca d'appoggio |5|Z§
|§F_CODABIA||§
"Cod. Fil." CODTAB[6,10]~"Cod. Istit." CODTAB[1,5]~"Denominazione@50" S0||§
COPY INPUT F_CODABIA~§
COPY OUTPUT F_CODABIA~§
HELP "Inserisci il codice della filiale"~§
WARNING "Codice della filiale non trovato"|
BANCA_APP | |F_BANCA_APP |2|Denominazione |50|U|§
%BAN KEY 2|§
S0 F_BANCA_APP|§
"Denominazione@50" S0~"Cod. Istit." CODTAB[1,5]~"Cod. Fil." CODTAB[6,10]||§
COPY OUTPUT F_CODABIA~§
HELP "Inserisci il nome della Banca"~§
WARNING "Nome di Banca non trovato."|
CODABIP |CODABIP |F_CODABIP |3|Codice ABI banca provenienza |5|Z|§
%BAN KEY 1|§
CODTAB[1,5] F_CODABIP~CODTAB[6,10] F_CODCABP|§
"Cod. Istit." CODTAB[1,5]~"Cod. Fil." CODTAB[6,10]~"Denominazione@50" S0|§
F_CODABIP CODTAB[1,5]~F_CODCABP CODTAB[6,10]~F_BANCA_PRE S0|§
HELP "Inserisci il codice della Banca (istituto)"~§
WARNING "Codice Banca non trovato"|
CODCABP |CODCABP |F_CODCABP |3|Codice CAB banca provenienza |5|Z§
|§F_CODABIP||§
"Cod. Fil." CODTAB[6,10]~"Cod. Istit." CODTAB[1,5]~"Denominazione@50" S0||§
COPY INPUT F_CODABIP~§
COPY OUTPUT F_CODABIP~§
HELP "Inserisci il codice della filiale"~§
WARNING "Codice della filiale non trovato"|
BANCA_PRE | |F_BANCA_PRE |2|Denominazione |50|U|§
%BAN KEY 2|§
S0 F_BANCA_PRE|§
"Denominazione@50" S0~"Cod. Istit." CODTAB[1,5]~"Cod. Fil." CODTAB[6,10]||§
COPY OUTPUT F_CODABIP~§
HELP "Inserisci il nome della Banca"~§
WARNING "Nome di Banca non trovato."|
CODLIST |CODLIST |F_CODLIST |2|Codice listini |5|U|||||§
HELP "Inserisci il codice del listino"~§
WARNING "Codice del listino non corretto o non presente !!!"|
CODCONT |CODCONT |F_CODCONT |2|Codice contratti |2|
CODCAMP |CODCAMP |F_CODCAMP |2|Codice campagne |1|
SCONTOPERC|SCONTOPERC |F_SCONTOPERC |3|Percentuale di sconto |0602|
CODINDSP |CODINDSP |F_CODINDSP |2|Codice indirizzo spedizione |3||§
LF_INDSP|§
TIPOCF F_TIPOCF~CODCF F_CODCF SELECT~CODIND F_CODINDSP|§
"Codice" CODIND~"Indirizzo@35" INDIR|§
F_CODINDSP CODIND~F_INDSP INDIR~F_CIVSP CIV~F_CAPSP CAP~F_LOCALITASP LOCALITA|§
HELP "Inserisci il codice dell'indirizzo di spedizione"~§
WARNING "Indirizzo di spedizione non trovato"|
INDSP | |F_INDSP |2|Indirizzo di spedizione |35|U|
CIVSP | |F_CIVSP |2|Numero civico |10|R|
CAPSP | |F_CAPSP |2|CAP |5|R|
LOCALITASP| |F_LOCALITASP |2|Località |35|R|
DATADOCRIF|DATADOCRIF |F_DATADOCRIF |1|Data del documento di riferimento ||
NUMDOCRIF |NUMDOCRIF |F_NUMDOCRIF |2|Numero del documento di riferimento |7|
CODAG |CODAG |F_CODAG |2|Codice |2|
CODAGVIS |CODAGVIS |F_CODAGVIS |2|Codice |2|
CODSPMEZZO|CODSPMEZZO |F_CODSPMEZZO |5|Codice spedizione mezzo |2||||||§
HELP "Trasporto a mezzo di VETTORE, MITTENTE o DESTINATARIO"~§
WARNING "Il tipo di vettore pùo essere solo 1,2 o 3"|§
1§MITTENTE £DISABLE,GR_VETTORI@~§
2§VETTORE £ENABLE,GR_VETTORI@~§
3§DESTINATARIO£DISABLE,GR_VETTORI@
CODPORTO |CODPORTO |F_CODPORTO |2|Codice porto |2||§
%POR|§
CODTAB F_CODPORTO|§
"Codice" CODTAB~"Porto@50" S0|F_CODPORTO CODTAB~F_PORTO S0|§
HELP "Inserisci il codice del porto"§
~WARNING "Codice porto non trovato"|
PORTO | |F_PORTO |2|Porto |50|
CODNOTESP1|CODNOTESP1 |F_CODNOTESP1 |2|Codice note spese 1 |2|
CODNOTESP2|CODNOTESP2 |F_CODNOTESP2 |2|Codice note spese 2 |2|
CAUSTRASP |CAUSTRASP |F_CAUSTRASP |2|Codice causale trasporto |2||§
%CLR|§
CODTAB F_CAUSTRASP|§
"Codice" CODTAB~"Causale trasporto@50" S0|§
F_CAUSTRASP CODTAB~F_DENCAUSTRASP S0|§
HELP "Inserisci il codice dalla causale del trasporto"~§
WARNING "Codice di causale non trovato"|
DENCAUSTRASP| |F_DENCAUSTRASP |2|Causale trasporto |2|U|
CODVETT1 |CODVETT1 |F_CODVETT1 |2|Codice vettore 1 |3||§
%VET|§
CODTAB F_CODVETT1|§
"Codice" CODTAB~"Nome@50" S0|§
F_CODVETT1 CODTAB~F_NOMEVETT1 S0|§
HELP "Inserisci il codice del primo (o unico) vettore"~§
WARNING "Codice primo vettore non trovato"~GROUP GR_VETTORI|
NOMEVETT1 | |F_NOMEVETT1 |2|Vettore 1 |50|
CODVETT2 |CODVETT2 |F_CODVETT2 |2|Codice vettore 2 |3|§
|§F_CODVETT1|§
CODTAB F_CODVETT2|§
§F_CODVETT1|§
F_CODVETT2 CODTAB~ F_NOMEVETT2 S0|§
HELP "Inserisci il codice del secondo vettore"~§
WARNING "Codice secondo vettore non trovato"~GROUP GR_VETTORI|
NOMEVETT2 | |F_NOMEVETT2 |2|Vettore 2 |50|
CODVETT3 |CODVETT3 |F_CODVETT3 |2|Codice vettore 3 |3|§
|§F_CODVETT1|§
CODTAB F_CODVETT3|§
§F_CODVETT1|§
F_CODVETT3 CODTAB~F_NOMEVETT3 S0|§
HELP "Inserisci il codice del terzo vettore"~§
WARNING "Codice terzo vettore non trovato"~GROUP GR_VETTORI|
NOMEVETT3 | |F_NOMEVETT3 |2|Vettore 3 |50|
NCOPIE |NCOPIE |F_NCOPIE |3|Numero copie |0200|
DATAPART |DATAPART |F_DATAPART |1|Data partenza |||||||§
HELP "Inserisci la data di partenza nel formato gg-mm-aaaa"|
ORAPART |ORAPART |F_ORAPART |2|Ora partenza |0400||||||§
HELP "Inserisci l'orario di partenza nel formato oo:mm (24 ore)"
IMPPAGATO |IMPPAGATO |F_IMPPAGATO |3|Importo pagato |1802|
ACCSALDO |ACCSALDO |F_ACCSALDO |4|Acconto/saldo ||
DOC1 |DOC1 |F_DOC1 |2|Documento 1 |12|
DOC2 |DOC2 |F_DOC2 |2|Documento 2 |12|
DOC3 |DOC3 |F_DOC3 |2|Documento 3 |12|
DATACONS |DATACONS |F_DATACONS |1|Data consegna ||
ASPBENI1 |ASPBENI1 |F_ASPBENI1 |2|Aspetto beni 1 |2||§
%CLR|§
CODTAB F_ASPBENI1|§
"Codice" CODTAB~"Aspetto beni@50" S0|§
F_ASPBENI1 CODTAB~F_DESCRBENI1 S0|§
HELP "Inserisci il codice dell'aspetto dei beni"~§
WARNING "Codice aspetto beni non trovato"|
DESCRBENI1| |F_DESCRBENI1 |2|Descrizione beni 1 |50|U|
ASPBENI2 |ASPBENI2 |F_ASPBENI2 |2|Aspetto beni 2 |2||§
%CLR|§
CODTAB F_ASPBENI2|§
"Codice" CODTAB~"Aspetto beni@50" S0|§
F_ASPBENI2 CODTAB~F_DESCRBENI2 S0|§
HELP "Inserisci il codice dell'aspetto dei beni"~§
WARNING "Codice aspetto beni non trovato"|
DESCRBRNI2| |F_DESCRBENI2 |2|Descrizione beni 2 |50|U|
IMPNETTI |IMPNETTI |F_IMPNETTI |4|Importi netti ||
RAGGREFF |RAGGREFF |F_RAGGREFF |4|Raggruppamento effetti ||
SPESEINC |SPESEINC |F_SPESEINC |4|Spese all'incasso ||
ADDBRB |ADDBRB |F_ADDBRB |4|Addebito bolli ricevute bancarie ||
ADDBTR |ADDBTR |F_ADDBTR |4|Addebito bolli tratte ||
ADDBDE |ADDBDE |F_ADDBDE |4|Addebito bolli debiti esteri ||
CODIVABRB |CODIVABRB |F_CODIVABRB |2|Codice iva bolli ricevute bancarie |4|
CODIVABTR |CODIVABTR |F_CODIVABTR |2|Codice iva bolli tratte |4|
CODIVABTRE|CODIVABTRE |F_CODIVABTRE |2|Codice iva bolli tratte estere |4|
CODIVABDE |CODIVABDE |F_CODIVABDE |2|Codice iva bolli esteri |4|
UMTARA |UMTARA |F_UMTARA |2|Codice Unità misura tara |2||§
%CLR|§
CODTAB F_UMTARA|§
"Codice" CODTAB~"Unità di misura" S0|§
F_UMTARA CODTAB~F_DESUMTARA S0|§
HELP "Inserisci il codice dell'unità di misura della tara"~§
WARNING "Codice unità di misura non trovato"|
TARA |TARA |F_TARA |3|Tara |1502|R|||||§
HELP "Inserisci la tara della merce"~§
WARNING "Tara errata o non presente !!!"|
DESUMTARA | |F_DESUMTARA |2|Unità di misura della tara |25|U|
UMPNETTO |UMPNETTO |F_UMPNETTO |2|Codice Unità misura peso netto |2||§
%CLR|§
CODTAB F_UMPNETTO|§
"Codice" CODTAB~"Unità di misura" S0|§
F_UMPNETTO CODTAB~F_DESUMPNETTO S0|§
HELP "Inserisci il codice dell'unità di misura del peso netto"~§
WARNING "Codice unità di misura del peso netto non trovato"|
PNETTO |PNETTO |F_PNETTO |3|Peso netto |1502|R|||||§
HELP "Inserisci il peso netto della merce"~§
WARNING "Peso netto non corretto o non presente !!!"|
DESUMPNETTO| |F_DESUMPNETTO |2|Unità di misura del peso netto |25|U|
NCOLLI |NCOLLI |F_NCOLLI |3|Numero colli |0700||||||§
HELP "Inserisci il numero dei colli"~§
WARNING "Numero di colli errato o non presente !!!"|
CAUSMAG1 |CAUSMAG1 |F_CAUSMAG1 |2|Codice causale di magazzino 1 |3|U|§
LF_CAUSALI|§
CODCAUS F_CAUSMAG1|§
"Codice" CODCAUS~"Causale@50" DESCR|§
F_CAUSMAG1 CODCAUS~F_DESCRMAG1 DESCR|§
HELP "Inserisci il codice della causale"~§
WARNING "Codice causale non trovato"|
DESCRMAG1 |DESCRMAG1 |F_DESCRMAG1 |2|Causale di magazzino 1 |50|U|
CAUSMAG2 |CAUSMAG2 |F_CAUSMAG2 |2|Codice causale di magazzino 2 |3|U|§
LF_CAUSALI|§
CODCAUS F_CAUSMAG2§
|§ F_CAUSMAG1|§
F_CAUSMAG2 CODCAUS~F_DESCRMAG2 DESCR|§
HELP "Inserisci il codice della causale"~§
WARNING "Codice causale non trovato"|
DESCRMAG2 |DESCRMAG2 |F_DESCRMAG2 |2|Causale di magazzino 2 |50|U|

24
ve/ve1000b.uml Executable file
View File

@ -0,0 +1,24 @@
#include "veuml.h"
PAGE "Tipo di riga da aggiungere" -1 -1 50 8
LISTBOX F_LBTIPORIGA 30
BEGIN
PROMPT 2 2 "Tipo riga "
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 5 ""
MESSAGE EXIT, K_SAVE
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 5 ""
MESSAGE EXIT, K_ESC
END
END
ENDMASK

36
ve/ve2.cpp Executable file
View File

@ -0,0 +1,36 @@
#include <xvt.h>
#include <strings.h>
#include <checks.h>
// #define MAIN
#define usage "Errore - Utilizzo: %s -{1|2|3}"
extern int ve2100(int argc, char* argv[]); // listini
extern int ve2200(int argc, char* argv[]); // contratti
extern int ve2300(int argc, char* argv[]); // offerte-campagne
int main( int argc, char** argv)
{
int rt = -1;
const int r = (argc > 1) ? atoi( &argv[1][1] ) : -1;
switch (r)
{
case 1:
rt = ve2100( argc, argv );
break;
case 2:
rt = ve2200( argc, argv );
break;
case 3:
rt = ve2300( argc, argv );
break;
default:
error_box( usage, argv[0] );
break;
}
return rt;
}

17
ve/ve2.h Executable file
View File

@ -0,0 +1,17 @@
#ifndef __VE2_H
#define __VE2_H
#ifdef MAIN
#define extern
#endif
int ve2100(int argc, char* argv[]); // Tabella testate listini e righe listini
int ve2200(int argc, char* argv[]); // Archivio contratti e righe contratti
int ve2300(int argc, char* argv[]); // Archivio indirizzo clienti
#ifdef MAIN
#undef extern
#endif
#endif

27
ve/ve2.url Executable file
View File

@ -0,0 +1,27 @@
#include <default.url>
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"

60
ve/ve2100.cpp Executable file
View File

@ -0,0 +1,60 @@
#include "ve2100.h"
#define LF_CONDV 52
#define LF_RCONDV 53
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
class Tlistino_application : public TRelation_application
{
TMask* _msk;
TRelation* _rel;
virtual bool user_create();
virtual bool user_destroy();
virtual TMask* get_mask(int mode) { return _msk;}
virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;}
public:
Tlistino_application( ) { };
virtual ~Tlistino_application() { }
};
bool Tlistino_application::user_create()
{
_msk = new TMask( "VE2100" );
_rel = new TRelation( LF_CONDV );
// _rel.add( "%PIP" )
return TRUE;
}
bool Tlistino_application::user_destroy()
{
delete _msk;
delete _rel;
return TRUE;
}
int ve2100(int argc, char* argv[])
{
Tlistino_application a;
a.run(argc, argv, "Gestione listini " );
return 0;
}

47
ve/ve2100.h Executable file
View File

@ -0,0 +1,47 @@
#define F_TIPO 101
#define F_CATVEN 102
#define F_CATVEN1 103
#define F_CODDIV1 107
#define F_COD 108
#define F_COD1 109
#define F_DESCR 110
#define F_CODVAL 111
#define F_CODVAL1 112
#define F_CAMBIO 113
#define F_DATACAM 114
#define F_VALIN 115
#define F_VALFIN 116
#define F_IMPLORDI 117
#define F_GESTUM 118
#define F_GESTSCAGL 119
#define F_GESTSCO 120
#define F_SCONST 121
#define F_CODLISSUCC 123
#define F_SEQRIC 124
#define F_FLART 125
#define F_FLCAT 126
#define F_FLLIN 127
#define F_FLRAGG 128
#define F_CATVEN2 129
#define F_COD2 130
#define F_SHEET1 301
#define FS_QLIM 101
#define FS_PREZZO 102
#define FS_SCONTO 103
#define FS_ADDIVA 104
#define FS_CODIVA 105
#define FS_PRECPROVV 106
#define FS_QOM 107
#define FS_QBASE 108
#define FS_CODARTOM 109
#define FS_PROMAGGIO 110
#define FS_UMOM 111
#define FS_CODIVA1 114
#define FS_CODARTOM1 115

60
ve/ve2200.cpp Executable file
View File

@ -0,0 +1,60 @@
#include "ve2200.h"
#define LF_CONDV 52
#define LF_RCONDV 53
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
class TConcli_application : public TRelation_application
{
TMask* _msk;
TRelation* _rel;
virtual bool user_create();
virtual bool user_destroy();
virtual TMask* get_mask(int mode) { return _msk;}
virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;}
public:
TConcli_application( ) { };
virtual ~TConcli_application() { }
};
bool TConcli_application::user_create()
{
_msk = new TMask( "VE2200" );
_rel = new TRelation( LF_CONDV );
// _rel.add( "%PIP" )
return TRUE;
}
bool TConcli_application::user_destroy()
{
delete _msk;
delete _rel;
return TRUE;
}
int ve2200(int argc, char* argv[])
{
TConcli_application a;
a.run(argc, argv, "Gestione contratti " );
return 0;
}

49
ve/ve2200.h Executable file
View File

@ -0,0 +1,49 @@
#define F_TIPO 101
#define F_TIPOCF 104
#define F_CODCF 105
#define F_CODCF1 106
#define F_CODDIV1 107
#define F_COD 108
#define F_COD1 109
#define F_DESCR 110
#define F_CODVAL 111
#define F_CODVAL1 112
#define F_CAMBIO 113
#define F_DATACAM 114
#define F_VALIN 115
#define F_VALFIN 116
#define F_IMPLORDI 117
#define F_GESTUM 118
#define F_GESTSCAGL 119
#define F_GESTSCO 120
#define F_SCONST 121
#define F_OBBLIG 122
#define F_SEQRIC 124
#define F_FLART 125
#define F_FLCAT 126
#define F_FLLIN 127
#define F_FLRAGG 128
#define F_CATVEN2 129
#define F_COD2 130
#define F_SHEET2 302
#define FS_QLIM 101
#define FS_PREZZO 102
#define FS_SCONTO 103
#define FS_ADDIVA 104
#define FS_CODIVA 105
#define FS_PRECPROVV 106
#define FS_QOM 107
#define FS_QBASE 108
#define FS_CODARTOM 109
#define FS_PROMAGGIO 110
#define FS_UMOM 111
#define FS_CODLOTTO 112
#define FS_CODIVA1 114
#define FS_CODARTOM1 115
#define FS_CODLOTTO1 116

59
ve/ve2300.cpp Executable file
View File

@ -0,0 +1,59 @@
#include "ve2300.h"
#define LF_CONDV 52
#define LF_RCONDV 53
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
class Tofferte_application : public TRelation_application
{
TMask* _msk;
TRelation* _rel;
virtual bool user_create();
virtual bool user_destroy();
virtual TMask* get_mask(int mode) { return _msk;}
virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;}
public:
Tofferte_application( ) { };
virtual ~Tofferte_application() { }
};
bool Tofferte_application::user_create()
{
_msk = new TMask( "VE2300" );
_rel = new TRelation( LF_CONDV );
// _rel.add( "%PIP" )
return TRUE;
}
bool Tofferte_application::user_destroy()
{
delete _msk;
delete _rel;
return TRUE;
}
int ve2300(int argc, char* argv[])
{
Tofferte_application a;
a.run(argc, argv, "Gestione offerte/campagne " );
return 0;
}

45
ve/ve2300.h Executable file
View File

@ -0,0 +1,45 @@
#define F_TIPO 101
#define F_COD 108
#define F_COD1 109
#define F_DESCR 110
#define F_CODVAL 111
#define F_CODVAL1 112
#define F_CAMBIO 113
#define F_DATACAM 114
#define F_VALIN 115
#define F_VALFIN 116
#define F_IMPLORDI 117
#define F_GESTUM 118
#define F_GESTSCAGL 119
#define F_GESTSCO 120
#define F_SCONST 121
#define F_SEQRIC 124
#define F_FLART 125
#define F_FLCAT 126
#define F_FLLIN 127
#define F_FLRAGG 128
#define F_CATVEN2 129
#define F_COD2 130
#define F_SHEET3 303
#define FS_QLIM 101
#define FS_PREZZO 102
#define FS_SCONTO 103
#define FS_ADDIVA 104
#define FS_CODIVA 105
#define FS_PRECPROVV 106
#define FS_QOM 107
#define FS_QBASE 108
#define FS_CODARTOM 109
#define FS_PROMAGGIO 110
#define FS_UMOM 111
#define FS_CODLOTTO 112
#define FS_ARTES 113
#define FS_CODIVA1 114
#define FS_CODARTOM1 115
#define FS_CODLOTTO1 116

257
ve/ve2400.cpp Executable file
View File

@ -0,0 +1,257 @@
#include "ve2400.h"
#define LF_ANAMAG 47
#define LF_CODCORR 48
#define LF_DESLIN 51
#ifndef __CHECKS_H
#include <checks.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
#ifndef __MSKSHEET_H
#include <msksheet.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
#define F_SHEET1 300
#define F_SHEET2 301
class TAnamag_application : public TRelation_application
{
TMask* _msk;
TRelation* _rel;
TRecord_array * _linee_rec1;
TSheet_field * _sheet1;
TRecord_array * _linee_rec2;
TSheet_field * _sheet2;
virtual int read(TMask& m);
virtual bool user_create();
virtual bool user_destroy();
virtual TMask* get_mask(int mode) { return _msk;}
virtual bool changing_mask(int mode) { return FALSE;}
virtual TRelation* get_relation() const { return _rel;}
TSheet_field& ss() const { return *_sheet1; }
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
public:
TAnamag_application( ) { };
virtual ~TAnamag_application() { }
};
bool TAnamag_application::user_create()
{
_msk = new TMask( "VE2400" );
_sheet1 = &(TSheet_field &)_msk->field( F_SHEET1 );
_sheet2 = &(TSheet_field &)_msk->field( F_SHEET2 );
_rel = new TRelation( LF_ANAMAG );
_linee_rec1 = new TRecord_array( LF_DESLIN, "NRIGA", 1 );
_rel->add( LF_DESLIN, "CODART=CODART" );
_linee_rec2 = new TRecord_array( LF_CODCORR, "NRIGA", 1 );
_rel->add( LF_CODCORR, "CODART=CODART" );
return TRUE;
}
bool TAnamag_application::user_destroy()
{
delete _msk;
delete _rel;
return TRUE;
}
int TAnamag_application::read(TMask& m)
{
int err = TRelation_application::read( m );
if ( err == NOERR )
{
// message_box( "Entrato nel ciclo di caricamento delle righe!" );
TLocalisamfile& rdoc = _rel->lfile(LF_DESLIN);
TRectype r(rdoc.curr());
r.zero();
r.put( "CODART", m.get( F_CODART ) );
_linee_rec1->read( r );
TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 );
f.destroy();
int last = _linee_rec1->last_row();
for( int i = 1; i <= last; i ++ )
{ TRectype &rec = _linee_rec1->row( i, TRUE );
TToken_string& row = f.row( i -1 );
row = rec.get("CODLIN");
row.add( rec.get("DESCR") );
}
TLocalisamfile& rdoccor = _rel->lfile(LF_CODCORR);
TRectype rcor(rdoccor.curr());
rcor.zero();
rcor.put( "CODART", m.get( F_CODART ) );
_linee_rec2->read( rcor );
TSheet_field& fcorr = (TSheet_field&) m.field( F_SHEET2 );
fcorr.destroy();
last = _linee_rec2->last_row();
for( i = 1; i <= last; i ++ )
{ TRectype &rec = _linee_rec2->row( i, TRUE );
TToken_string& row = f.row( i -1 );
row = rec.get("CODARTALT");
row.add( rec.get("TIPO") );
}
}
return err;
}
int TAnamag_application::write(const TMask& m)
{
int err = TRelation_application::write(m);
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 );
_linee_rec1->destroy_rows();
if (m.insert_mode())
_linee_rec1->renum_key("CODART", m.get(F_CODART));
for (int i = 0; i < f.items(); i++)
{
TToken_string & row = f.row(i);
const TString16 codlin(row.get(0));
const TString80 descr(row.get());
if (codlin.not_empty() || descr.not_empty() )
{
TRectype & rec = _linee_rec1->row( i+1 , TRUE);
rec.put("CODLIN", codlin);
rec.put("DESCR", descr);
}
}
err = _linee_rec1->write();
}
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field( F_SHEET2 );
_linee_rec2->destroy_rows();
if (m.insert_mode())
_linee_rec2->renum_key("CODART", m.get(F_CODART));
for (int i = 0; i < f.items(); i++)
{
TToken_string & row = f.row(i);
const TString80 codartalt(row.get(0));
const TString16 tipo(row.get());
if (codartalt.not_empty() || tipo.not_empty() )
{
TRectype & reccor = _linee_rec2->row( i+1 , TRUE);
reccor.put("CODARTALT", codartalt);
reccor.put("TIPO", tipo);
}
}
err = _linee_rec2->write();
}
return err;
}
int TAnamag_application::rewrite(const TMask& m)
{
int err = TRelation_application::rewrite(m);
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field( F_SHEET1 );
_linee_rec1->destroy_rows();
if (m.insert_mode())
_linee_rec1->renum_key("CODART", m.get(F_CODART));
for (int i = 0; i < f.items(); i++)
{
TToken_string & row = f.row(i);
const TString16 codlin(row.get(0));
const TString80 descr(row.get());
if (codlin.not_empty() || descr.not_empty() )
{
TRectype & rec = _linee_rec1->row( i+1 , TRUE);
rec.put("CODLIN", codlin);
rec.put("DESCR", descr);
}
}
err = _linee_rec1->rewrite();
}
if (err == NOERR)
{
TSheet_field& f = (TSheet_field&) m.field( F_SHEET2 );
_linee_rec2->destroy_rows();
if (m.insert_mode())
_linee_rec2->renum_key("CODART", m.get(F_CODART));
for (int i = 0; i < f.items(); i++)
{
TToken_string & row = f.row(i);
const TString80 codartalt(row.get(0));
const TString80 tipo(row.get());
if (codartalt.not_empty() || tipo.not_empty() )
{
TRectype & reccor = _linee_rec2->row( i+1 , TRUE);
reccor.put("CODARTALT", codartalt);
reccor.put("TIPO", tipo);
}
}
err = _linee_rec2->write();
}
return err;
}
int main(int argc, char** argv)
{
TAnamag_application a;
a.run(argc, argv, "Anagrafica di magazzino " );
return 0;
}

62
ve/ve2400.h Executable file
View File

@ -0,0 +1,62 @@
#define F_CODART 101
#define F_TIPO 102
#define F_DESCR 103
#define F_GRMERC1 104
#define F_GRMERC1A 105
#define F_GRMERC2 106
#define F_GRMERC2A 107
#define F_GRMERC3 108
#define F_GRMERC3A 109
#define F_UMA 111
#define F_FCA 112
#define F_UMV 113
#define F_UM2 114
#define F_FC2 115
#define F_UM3 116
#define F_CATCONA 117
#define F_CATCONA1 118
#define F_GRUPPOA 119
#define F_CONTOA 120
#define F_SOTTOCA 121
#define F_DESCRA 122
#define F_CATCONV 123
#define F_CATCONV1 124
#define F_GRUPPOV 125
#define F_CONTOV 126
#define F_SOTTOCV 127
#define F_DESCRV 128
#define F_UMP 129
#define F_PESO 130
#define F_CLASSDOG 131
#define F_CLASSDOG1 132
#define F_UBICAZIONE 133
#define F_UBICAZIONE1 134
#define F_COSTSTD 135
#define F_CODIVA 136
#define F_CODIVA1 137
#define F_CODFORN 138
#define F_CODFORN1 139
#define F_ARTFIS 140
#define F_RAGGFIS 142
#define F_RAGGFIS1 143
#define F_CLASSEFIS 144
#define F_CLASSEFIS1 145
#define F_ARTPROD 146
#define F_TIPOCF 147
#define F_LINEAPROD 148
#define F_LINEAPROD1 149
#define FS_CODLIN 101
#define FS_DESCR 102
//#define FS_CODLIN1 103
#define FS_CODARTALT 101
#define FS_TIPO 102
//#define FS_CODARTALT1 103

506
ve/ve2400.uml Executable file
View File

@ -0,0 +1,506 @@
#include "VE2400.H"
#define ANAMAG 47
#define PCON 19
#define CLIFOR 20
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Gestione anagrafica di magazzino " 0 0 70 20
STRING F_CODART 30
BEGIN
PROMPT 2 1 "Codice articolo "
FIELD ANAMAG->CODART
KEY 1
FLAG "U"
USE ANAMAG
INPUT CODART F_CODART
DISPLAY "Codice@30" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODART CODART
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_TIPO 1
BEGIN
PROMPT 55 1 "Tipo "
FIELD ANAMAG->TIPO
END
STRING F_DESCR 50
BEGIN
PROMPT 2 3 "Descrizione "
FIELD ANAMAG->DESCR
KEY 2
USE ANAMAG KEY 2
INPUT DESCR F_DESCR
DISPLAY "Codice@30" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODART CODART
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 71 5
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
STRING F_GRMERC1 3
BEGIN
PROMPT 1 5 "Gruppo merc. 1 "
FIELD ANAMAG->GRMERC1
USE GMC
INPUT CODTAB F_GRMERC1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC1 CODTAB
OUTPUT F_GRMERC1A S0
END
STRING F_GRMERC1A 50
BEGIN
PROMPT 23 5 ""
USE GMC KEY 2
INPUT S0 F_GRMERC1A
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC1 CODTAB
OUTPUT F_GRMERC1A S0
END
STRING F_GRMERC2 3
BEGIN
PROMPT 1 6 "Gruppo merc. 2 "
FIELD ANAMAG->GRMERC2
USE GMC
INPUT CODTAB F_GRMERC2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC2 CODTAB
OUTPUT F_GRMERC2A S0
END
STRING F_GRMERC2A 50
BEGIN
PROMPT 23 6 ""
USE GMC KEY 2
INPUT S0 F_GRMERC2A
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC2 CODTAB
OUTPUT F_GRMERC2A S0
END
STRING F_GRMERC3 3
BEGIN
PROMPT 1 7 "Gruppo merc. 3 "
FIELD ANAMAG->GRMERC3
USE GMC
INPUT CODTAB F_GRMERC3
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC3 CODTAB
OUTPUT F_GRMERC3A S0
END
STRING F_GRMERC3A 50
BEGIN
PROMPT 23 7 ""
USE GMC KEY 2
INPUT S0 F_GRMERC3A
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_GRMERC3 CODTAB
OUTPUT F_GRMERC3A S0
END
STRING F_UMA 3
BEGIN
PROMPT 1 8 "U.M. di acq. "
FIELD ANAMAG->UMA
END
NUMBER F_FCA 15 5
BEGIN
PROMPT 21 8 "Fatt. di conv. "
FIELD ANAMAG->FCA
END
STRING F_UMV 3
BEGIN
PROMPT 55 8 "U.M. di vendita "
FIELD ANAMAG->UMV
END
STRING F_UM2 3
BEGIN
PROMPT 1 9 "Seconda U.M. "
FIELD ANAMAG->UM2
END
NUMBER F_FC2 15 5
BEGIN
PROMPT 21 9 "Fatt. di conv. "
FIELD ANAMAG->FC2
END
STRING F_UM3 3
BEGIN
PROMPT 55 9 "Terza U.M. "
FIELD ANAMAG->UM3
END
STRING F_CATCONA 3
BEGIN
PROMPT 1 10 "Categoria conto acquisti "
FIELD ANAMAG->CATCONA
// MESSAGE CLEAR , F_GRUPPOA
// MESSAGE CLEAR , F_CONTOA
// MESSAGE CLEAR , F_SOTTOCA
// MESSAGE CLEAR , F_DESCRA
USE CAA
INPUT CODTAB F_CATCONA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "Gruppo" S1
DISPLAY "Conto" S2
DISPLAY "Sottoconto" S3
OUTPUT F_CATCONA CODTAB
OUTPUT F_CATCONA1 S0
END
STRING F_CATCONA1 40
BEGIN
PROMPT 33 10 ""
FLAG "D"
END
STRING F_GRUPPOA 2
BEGIN
PROMPT 1 11 "Conto d'acquisto "
FIELD ANAMAG->GRUPPOA
// MESSAGE CLEAR , F_CATCONA
// MESSAGE CLEAR , F_CATCONA1
USE PCON
INPUT GRUPPO F_GRUPPOA
INPUT CONTO F_CONTOA
INPUT SOTTOCONTO F_SOTTOCA
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_GRUPPOA GRUPPO
OUTPUT F_CONTOA CONTO
OUTPUT F_SOTTOCA SOTTOCONTO
OUTPUT F_DESCRA DESCR
END
STRING F_CONTOA 2
BEGIN
PROMPT 24 11 ""
FIELD ANAMAG->CONTOA
END
STRING F_SOTTOCA 6
BEGIN
PROMPT 28 11 ""
FIELD ANAMAG->SOTTOCA
END
STRING F_DESCRA 40
BEGIN
PROMPT 36 11 ""
FLAG "D"
END
STRING F_CATCONV 3
BEGIN
PROMPT 1 12 "Categoria conto vendite "
FIELD ANAMAG->CATCONV
// MESSAGE CLEAR , F_GRUPPOV
// MESSAGE CLEAR , F_CONTOV
// MESSAGE CLEAR , F_SOTTOCV
// MESSAGE CLEAR , F_DESCRV
USE CRA
INPUT CODTAB F_CATCONV
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "Gruppo" S1
DISPLAY "Conto" S2
DISPLAY "Sottoconto" S3
OUTPUT F_CATCONV CODTAB
OUTPUT F_CATCONV1 S0
END
STRING F_CATCONV1 40
BEGIN
PROMPT 33 12 ""
FLAG "D"
END
STRING F_GRUPPOV 2
BEGIN
PROMPT 1 13 "Conto di vendita "
FIELD ANAMAG->GRUPPOV
// MESSAGE CLEAR , F_CATCONV
// MESSAGE CLEAR , F_CATCONV1
USE PCON
INPUT GRUPPO F_GRUPPOV
INPUT CONTO F_CONTOV
INPUT SOTTOCONTO F_SOTTOCV
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_GRUPPOV GRUPPO
OUTPUT F_CONTOV CONTO
OUTPUT F_SOTTOCV SOTTOCONTO
OUTPUT F_DESCRV DESCR
END
STRING F_CONTOV 2
BEGIN
PROMPT 24 13 ""
FIELD ANAMAG->CONTOV
END
STRING F_SOTTOCV 6
BEGIN
PROMPT 28 13 ""
FIELD ANAMAG->SOTTOCV
END
STRING F_DESCRV 40
BEGIN
PROMPT 36 13 ""
FLAG "D"
END
STRING F_UMP 3
BEGIN
PROMPT 1 14 "U.M. peso "
FIELD ANAMAG->UMP
END
NUMBER F_PESO 15 5
BEGIN
PROMPT 30 14 "Peso "
FIELD ANAMAG->PESO
END
STRING F_CLASSDOG 10
BEGIN
PROMPT 1 15 "Classe doganale "
FIELD ANAMAG->CLASSDOG
END
STRING F_CLASSDOG1 40
BEGIN
PROMPT 34 15 ""
FLAG "D"
END
STRING F_UBICAZIONE 10
BEGIN
PROMPT 1 16 "Ubicazione "
FIELD ANAMAG->CLASSDOG
USE UBI
INPUT CODTAB F_UBICAZIONE
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40" S0
DISPLAY "Piano " S6
DISPLAY "Corridoio " S7
DISPLAY "Fila " S8
DISPLAY "Scaffale " S9
DISPLAY "Piano scaffale " S5
OUTPUT F_UBICAZIONE CODTAB
OUTPUT F_UBICAZIONE1 S0
END
STRING F_UBICAZIONE1 40
BEGIN
PROMPT 34 16 ""
FLAG "D"
END
/*
STRING F_LINEAPROD 5
BEGIN
PROMPT 1 17 "Linea prodotto "
FIELD ANAMAG->LINEAPROD
USE LIC
INPUT CODTAB F_LINEAPROD
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_LINEAPROD CODTAB
OUTPUT F_LINEAPROD1 S0
END
STRING F_LINEAPROD1 40
BEGIN
PROMPT 34 17 ""
FLAG "D"
END
*/
ENDPAGE
PAGE "Gestione anagrafica di magazzino " 0 0 70 20
STRING F_CODIVA 4
BEGIN
PROMPT 2 1 "Codice IVA "
FIELD ANAMAG->CODIVA
USE %IVA
INPUT CODTAB F_CODIVA
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODIVA CODTAB
OUTPUT F_CODIVA1 S0
END
STRING F_CODIVA1 40
BEGIN
PROMPT 23 1 ""
FLAG "D"
END
NUMBER F_COSTSTD 18 2
BEGIN
PROMPT 37 2 "Costo standard "
FIELD ANAMAG->COSTSTD
END
LISTBOX F_TIPOCF 1
BEGIN
PROMPT 0 0 ""
FLAG "H"
ITEM "F|"
END
NUMBER F_CODFORN 6
BEGIN
PROMPT 2 2 "Codice fornitore "
FIELD ANAMAG->CODFORN
USE CLIFOR
INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CODFORN
DISPLAY "Codice " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_CODFORN CODCF
OUTPUT F_CODFORN1 RAGSOC
END
STRING F_CODFORN1 50
BEGIN
PROMPT 2 3 "Ragione sociale "
USE CLIFOR KEY 2
INPUT TIPOCF F_TIPOCF SELECT
INPUT RAGSOC F_CODFORN1
DISPLAY "Codice " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_CODFORN CODCF
OUTPUT F_CODFORN1 RAGSOC
END
BOOLEAN F_ARTFIS
BEGIN
PROMPT 2 4 "Articolo fiscale "
FIELD ANAMAG->ARTFIS
END
STRING F_RAGGFIS 1
BEGIN
PROMPT 2 5 "Raggruppamento fiscale "
FIELD ANAMAG->RAGGFIS
END
STRING F_RAGGFIS1 40
BEGIN
PROMPT 32 5 ""
FLAG "D"
END
STRING F_CLASSEFIS 3
BEGIN
PROMPT 2 6 "Classe fiscale "
FIELD ANAMAG->CLASSEFIS
END
STRING F_CLASSEFIS1 40
BEGIN
PROMPT 32 6 ""
FLAG "D"
END
BOOLEAN F_ARTPROD
BEGIN
PROMPT 2 7 "Articolo di produzione "
FIELD ANAMAG->ARTPROD
END
SPREADSHEET 300 70 5
BEGIN
PROMPT 2 8 ""
ITEM "Cod. lingua"
ITEM "Descrizione@50"
END
SPREADSHEET 301 60 5
BEGIN
PROMPT 2 14 ""
ITEM "Cod. art.@30"
ITEM "Tipo@10"
END
ENDPAGE
ENDMASK
#include "VE2400B.UML"
#include "VE2400C.UML"

48
ve/ve2400b.uml Executable file
View File

@ -0,0 +1,48 @@
// SHEET DI VE2400
#include "VE2400.H"
#define DESLIN 51
PAGE "Pagina 1" 8 5 65 14
STRING FS_CODLIN 1
BEGIN
PROMPT 3 3 "Codice lingua "
FIELD DESLIN->CODLIN
USE %LIN
INPUT CODTAB FS_CODLIN
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@30" S0
OUTPUT FS_CODLIN CODTAB
// OUTPUT FS_CODLIN1 S0
END
STRING FS_DESCR 50
BEGIN
PROMPT 1 7 "Descrizione "
FIELD DESLIN->DESCR
END
/*
STRING FS_CODLIN1 30
BEGIN
PROMPT 1 5 ""
FLAG "D"
END
*/
BUTTON 1 9 2
BEGIN
PROMPT 15 12 ""
END
BUTTON 2 9 2
BEGIN
PROMPT 38 12 ""
END
ENDPAGE
ENDMASK

54
ve/ve2400c.uml Executable file
View File

@ -0,0 +1,54 @@
// SHEET DI VE2400
#include "VE2400.H"
#define CODCORR 48
#define ANAMAG 47
PAGE "Pagina 1" 8 5 65 14
STRING FS_CODARTALT 30
BEGIN
PROMPT 3 3 "Codice art. alt. "
FIELD CODCORR->CODARTALT
USE ANAMAG
INPUT CODART FS_CODARTALT
DISPLAY "Codice" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT FS_CODARTALT CODART
// OUTPUT FS_CODARTALT1 DESCR
END
LISTBOX FS_TIPO 10
BEGIN
PROMPT 2 7 "Tipo di codice "
ITEM "N|Normal "
ITEM "8|EAN8 "
ITEM "1|EA13 "
ITEM "3|3/9 "
ITEM "C|Codabar"
FIELD CODCORR->TIPO
END
/* STRING FS_CODARTALT1 50
BEGIN
PROMPT 2 5 ""
FLAG "D"
END
*/
BUTTON 1 9 2
BEGIN
PROMPT 15 12 ""
END
BUTTON 2 9 2
BEGIN
PROMPT 38 12 ""
END
ENDPAGE
ENDMASK

40
ve/ve2500.h Executable file
View File

@ -0,0 +1,40 @@
#define F_GESTUM 101
#define F_GESTSCAGL 102
#define F_GESTSCONTI 103
#define F_SEQRICRIG 104
#define F_SELARCRIG 105
#define F_TIPOIMM 106
#define FS_CODVAL 101
#define FS_CODVAL1 102
#define FS_CODART 103
#define FS_CODART1 104
#define FS_UM 105
#define FS_SCAGL 106
#define FS_QLIM 107
#define FS_PREZZONETTO 108
#define FS_PREZZOLORDO 109
#define FS_PROVV 110
#define FS_SCONTO 111
#define FS_DATAINI 112
#define FS_DATAFIN 113
#define FS_APPLPREZZO 114
#define FS_APPLSCONTO 115
#define FS_APPLPROVV 116
#define FS_ARTESAURIM 117
#define FS_UMOMAGGI 118
#define FS_ADDIVA 119
#define FS_CODIVA 120
#define FS_CODIVA1 121
#define FS_PREZZOMAGGI 122
#define FS_QMERCESCON 123
#define FS_QBASE 124
#define FS_CODTAGLIE 125
#define FS_TAGLIE 126
#define FS_COLORE 127
#define FS_QUALIT 128
#define FS_CODLOTTO 129

9
ve/ve3100.h Executable file
View File

@ -0,0 +1,9 @@
#define F_TIPO 101
#define F_CODCAT 102
#define F_CODART 103
#define F_UM 104
#define F_SCONTO 105
#define F_CODCAT1 106
#define F_DESCR 107

96
ve/ve3100.uml Executable file
View File

@ -0,0 +1,96 @@
#include "VE3100.H"
// #define LF_SCONTI
#define LF_ANAMAG 47
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio sconti riga " 11 60 14
LISTBOX F_TIPO 1
BEGIN
PROMPT 0 0 ""
ITEM "R|"
FLAG "H"
// FIELD LF_SCONTI->TIPO
END
STRING F_CODCAT 2
BEGIN
PROMPT 3 2 "Categoria vendita "
// FIELD LF_SCONTI->CODCAT
USE %CVE // CATEGORIE VENDITA
FLAG "U"
INPUT CODTAB F_CODCAT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCAT CODTAB
OUTPUT F_CODCAT1 S0
END
STRING F_CODCAT1 40
BEGIN
PROMPT 28 2 ""
USE %CVE KEY 2
FLAG "U"
INPUT S0 F_CODCAT1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCAT CODTAB
OUTPUT F_CODCAT1 S0
END
STRING F_CODART 30
BEGIN
PROMPT 3 4 "Codice articolo "
// FIELD LF_SCONTI->CODART
USE LF_ANAMAG
INPUT CODART F_CODART
DISPLAY "Codice@30" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODART CODART
OUTPUT F_DESCR DESCR
END
STRING F_DESCR 50
BEGIN
PROMPT 3 5 "Descrizione "
USE LF_ANAMAG KEY 2
INPUT DESCR F_DESCR
DISPLAY "Codice@30" CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODART CODART
OUTPUT F_DESCR DESCR
END
LISTBOX F_UM 10
BEGIN
PROMPT 3 7 "U.M. "
ITEM " "
// TROVARE DA ANAGRAFICA ARTICOLI
// FIELD LF_SCONTI->UM
END
STRING F_SCONTO 25
BEGIN
PROMPT 3 8 "Sconto di riga "
// FIELD LF_SCONTI->SCONTO
END
GROUPBOX DLG_NULL 70 13
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

5
ve/ve3200.h Executable file
View File

@ -0,0 +1,5 @@
#define F_TIPO 101
#define F_CODCAT 102
#define F_SCONTO 103

45
ve/ve3200.uml Executable file
View File

@ -0,0 +1,45 @@
#include "VE3200.H"
// #define LF_SCONTI
#define LF_ANAMAG 47
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio sconti documenti " 11 60 14
LISTBOX F_TIPO 1
BEGIN
PROMPT 0 0 ""
ITEM "R|"
FLAG "H"
// FIELD LF_SCONTI->TIPO
END
STRING F_CODCAT 2
BEGIN
PROMPT 3 2 "Codice "
// FIELD LF_SCONTI->CODCAT
FLAG "U"
END
STRING F_SCONTO 25
BEGIN
PROMPT 3 4 "Sconto documento "
// FIELD LF_SCONTI->SCONTO
END
GROUPBOX DLG_NULL 60 7
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

13
ve/ve3300.h Executable file
View File

@ -0,0 +1,13 @@
#define F_TIPO 101
#define F_CODCAT 102
#define F_CODCAT1 103
#define F_SCONTOC 104
#define F_SCONTOC1 105
#define F_ZONA 106
#define F_ZONA1 107
#define F_CODPAG 108
#define F_CODPAG1 109
#define F_SCONTO 110

133
ve/ve3300.uml Executable file
View File

@ -0,0 +1,133 @@
#include "VE3300.H"
// #define LF_SCONTI
TOOLBAR "" 0 20 60 2
#include <toolbar.h>
ENDPAGE
PAGE "Archivio sconti incondizionati " 11 60 14
LISTBOX F_TIPO 1
BEGIN
PROMPT 0 0 ""
ITEM "I|"
FLAG "H"
// FIELD LF_SCONTI->TIPO
END
STRING F_CODCAT 2
BEGIN
PROMPT 3 2 "Categoria vendita "
// FIELD LF_SCONTI->CODART[1,2]
USE %CVE // CATEGORIE VENDITA
FLAG "U"
INPUT CODTAB F_CODCAT
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCAT CODTAB
OUTPUT F_CODCAT1 S0
END
STRING F_CODCAT1 40
BEGIN
PROMPT 30 2 ""
USE %CVE KEY 2
FLAG "U"
INPUT S0 F_CODCAT1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODCAT CODTAB
OUTPUT F_CODCAT1 S0
END
STRING F_SCONTOC 2
BEGIN
PROMPT 3 4 "Sconto cliente "
// FIELD LF_SCONTI->CODART[4,5]
USE %SCC // CATEGORIE VENDITA
FLAG "U"
INPUT CODTAB F_SCONTOC
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_SCONTOC CODTAB
OUTPUT F_SCONTOC1 S0
END
STRING F_SCONTOC1 40
BEGIN
PROMPT 25 4 ""
USE %SCC KEY 2
FLAG "U"
INPUT S0 F_SCONTOC1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_SCONTOC CODTAB
OUTPUT F_SCONTOC1 S0
END
STRING F_ZONA 2
BEGIN
PROMPT 3 6 "Zona "
// FIELD LF_SCONTI->CODART[7,8]
USE %ZON // ZONE
FLAG "U"
INPUT CODTAB F_ZONA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_ZONA CODTAB
OUTPUT F_ZONA1 S0
END
STRING F_ZONA1 40
BEGIN
PROMPT 20 6 ""
USE %SCC KEY 2
FLAG "U"
INPUT S0 F_ZONA1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_ZONA CODTAB
OUTPUT F_ZONA1 S0
END
STRING F_CODPAG 4
BEGIN
PROMPT 3 8 "Codice pagamento "
// FIELD LF_SCONTI->CODART[10,13]
END
STRING F_CODPAG1 40
BEGIN
PROMPT 25 8 ""
FLAG "D"
END
STRING F_SCONTO 25
BEGIN
PROMPT 3 10 "Sconto incondizionato "
// FIELD LF_SCONTI->SCONTO
END
GROUPBOX DLG_NULL 70 13
BEGIN
PROMPT 0 0 ""
FLAG "R"
END
ENDPAGE
ENDMASK

25
ve/ve6.cpp Executable file
View File

@ -0,0 +1,25 @@
#include <xvt.h>
#include <strings.h>
#include <checks.h>
#include <rectypes.h>
#include "ve6.h" // dichiarazioni delle procedure
#define usage "Errore - Utilizzo: %s -1"
int main( int argc, char** argv )
{
int rt = -1;
const int r = (argc > 1) ? atoi( &argv[1][1] ) : -1;
switch (r)
{
case 1:
rt = ve6100( argc, argv);
break;
default:
error_box( usage, argv[0] );
break;
}
return rt;
}

15
ve/ve6.h Executable file
View File

@ -0,0 +1,15 @@
// Dichiarazione della classe per l'applicazione ve6.cpp
#if !defined(_VE6_ELAB_STRUCT)
#define _VE6_ELAB_STRUCT
/* struttura in cui sono memorizzati i campi dell'elaborazione differita che
servono sia alla ve6gen che alle procedure particolari di generazione */
typedef struct TElab_structTag
{
TString tipo_doc_org; // tipo documento originale
TString tipo_doc_des; // tipo documento finale
TString stato_doc_ini; // stato documento originale prima dell'elaborazione
TString stato_doc_fin; // dopo l'elaborazione
TString codnum; // codice per la numerazione del documento di destinazione
} TElab_struct;
#endif

36
ve/ve6.url Executable file
View File

@ -0,0 +1,36 @@
#include <default.url>
/* ba1 -0 */
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
/* ba1 -1 */
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Test"
/* ba1 -2 */
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Test"
ITEM BAR_ITEM(2) "~Debug"
/* ba1 -3 */
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"
/* ba1 -4 */
MENUBAR MENU_BAR(4)
MENU MENU_BAR(4)
SUBMENU MENU_FILE "~File"

185
ve/ve6100.cpp Executable file
View File

@ -0,0 +1,185 @@
// ve6100.cpp: modulo per la generazione delle fatture.
#include "ve6retv.h" // valori di ritorno dalle varie funzioni
class TCrea_fatture : public TElaborazioni
{
protected:
virtual bool menu (MENU_TAG);
virtual bool create () ;
virtual bool destroy();
public:
TCrea_fatture (void) {} // costruttore
};
bool TCrea_fatture::create()
{
cod_elab = "01"; // imposta il codice elaborazione (per il riferimento alla tabella ELD)
dispatch_e_menu(BAR_ITEM(1)); // chiama il metodo menu
return TRUE;
}
bool TCrea_fatture::destroy()
{
delete _msk;
return TRUE;
}
bool TCrea_fatture::menu(MENU_TAG)
{
int err; // errore ritornato dalle funzioni
if (err = scan_doc()) // se durante la scansione c'è un errore, esci
return !errore_fatale(err);
switch (ordinamento) // in base all'ordinamento, lancia diverse procedure di creazione
{
case CLIENTE:
// crea fatture raggruppando per cliente
err = per_cliente();
break;
case AGENTE:
// crea fatture per agente
break;
case ZONA:
// crea fatture per zona
break;
case DATA_NUMDOC:
if (raggruppa)
// crea fatture per data/numero documento
else
// crea una fattura per ogni cliente
break;
default:
break;
}
if (err) while (!getchar()); // se c'è un errore, attende la pressione di invio
return !errore_fatale(err) // ritorna FALSE se c'è stato un errore fatale
}
int per_cliente(void)
{
TLocalisamfile f(LF_DOC);
TLocalisamfile rdoc(LF_RDOC);
int current = 0; // chiave corrente
TToken_string tempt; // ttoken string temporanea
TString cliente;
TRectype tempr (LF_DOC);
TRectype temprdoc (LF_RDOC);
TTable t("NUM"); // tabella numerazioni
int nrdoc=0; // numero di riga della fattura
do
{
// memorizza il record del documento pilota
f.zero();
tempt = _chiavi->row(current); // rileva la chiave corrente
codnum = tempt.get(0)
f.put ("CODNUM", codnum); // memorizza i valori della chiave corrente nel record
f.put ("ANNO", tempt.get());
f.put ("PROVV", tempt.get());
f.put ("NDOC", tempt.get());
if (!f.read (_isequal)) // cerca il record corrispondente alla chiave corrente
{
error_box ("TCrea_fatture::per_cliente() : errore %d durante la lettura su doc", err);
return READ_ERROR;
}
tempr = f.curr(); // copia ilrecord del doc. pilota in tempr
// imposta il numero documento per la fattura da creare
t.zero();
t.put ("CODTAB", _elab.codnum); // codice numerazione per le fatture
t.read (_isgteq); // legge il primo record con lo stesso codice di numerazione
if (t.get("CODTAB") == _elab.codnum) // controlla che il codice numerazione sia effettivamente lo stesso
{
n = t.get("I1"); // legge l'ultimo numero di documento utilizzato (o il primo disponibile)
// supponiamo che sia l'ultimo utilizzato
n++; // ora n è il numero della mia fattura (da mettere in NDOC);
}
else
n = 1; // se non esiste alcun documento con il codice numerazione specificato, allora la fattura corrente è la n° 1
// inserisce il record del documento pilota in doc
f.curr() = tempr // tutti i campi della fattura sono uguali al documento pilota, tranne alcuni (impostati più sotto)
f.put ("NDOC", n); // imposta il numero del documento
f.put ("TIPODOC", _elab.tipo_doc_des); // imposta il tipo di documento
f.put ("STATO", ???); // stato della fattura appena creata
if ((err = f.write()) == NOERR) // se nonci sono problemi
{
t--; // si posiziona sul record precedente nella tabella numerazione
t.put ("I1", n); // imposta nuovo numero del documento
t.write(); // registra
}
else
{
switch (err)
{
case REINSERT:
message_box ("ve6100: Errore fatale: il record con la chiave specificata esiste già: impossibile sovrascrivere");
break;
default:
message_box ("ve6100: Errore fatale: %d scrivendo sulla tabella NDOC", err);
break;
}
return RECORD_WRITE_ERROR; // indica al chiamante un errore nella scrittura di un record
}
// cerca la prima riga del documento pilota in rdoc
nrdoc = 1; // comincia dalla prima riga
temprdoc.zero();
temprdoc.put ("CODNUM", tempr.get("CODNUM"));
temprdoc.put ("ANNO", tempr.get ("ANNO"));
temprdoc.put ("PROVV", tempr.get("PROVV"));
temprdoc.put ("NDOC", tempr.get("NDOC"));
TRecord_array doc_originale;
doc_originale.read (temprdoc); // legge tutte le righe del documento originale
// con la funzione doc_originale.row(i) ho l'i-esima riga del doc. originale
TRecord_array doc_destinazione;
temprdoc.put ("CODNUM", _elab.codnum); // imposta il codice numerazione per la fattura
/*
prendi la prima chiave
ripeti
cerca su doc il record corrispondente alla chiave corrente
prendi il codcf (codice cliente) // costruzion file pilota per il cliente corrente
prendi tutti i campi obbligatori // meglio: copia il record trovato in un oggetto record
scrivi su doc il record relativo alla nuova fattura creata
cerca su rdoc la prima riga del doc. pilota // inserimento del doc. pilota nella fattura
copia le righe del doc. pilota nella fattura
segna a[0] come processato
per ogni chiave dell'array (dopo la prima)
se non è processata
cerca su doc il record corrispondente
se codcf è uguale a codcf del doc. pilota // meglio: crea un record campione con codcf e campi obbligatori = a guelli del record pilota e cerca il
allora se i campi obbligatori sono uguali a quelli del doc. pilota
allora copia tutte le righe del doc. attuale nella fattura
indica il record come processato
prendi dall'array la prima chiave non processata
finché la chiave corrente è oltre l'ultimo record. (chiave corrente == a.items()
*/
Per numerazione fatture:
TTable t ("NUM");
metto in codtab il codice numerazione
leggo il record con quel codice
nel campi I1 c'è il numero del primo campo disponibile (o dell'ultimo utilizzato)
}
int ve6100 (int argc, char **argv)
{
TCrea_fatture a;
a.run (argc, argv, "Fatturazione");
return 0;
}

218
ve/ve6gen.cpp Executable file
View File

@ -0,0 +1,218 @@
// Classe che contiene i data members comuni a tutti gli oggetti di creazione
// e la funzione di scansione.
#include <applicat.h>
#include <strings.h>
#include <mask.h>
#include <tabutil.h>
#include <lffiles.h>
#include <rectypes.h>
#include <config.h>
#include <checks.h>
#include "ve6retv.h" // definizione dei valori di ritorno
#include "ve6.h"
#include "ve6000.h" // identificativi dei campi della maschera
class TElaborazioni : public TApplication
{
protected:
// i data members sono protected in modo che gli oggetti generatori
// possano accedervi senza la necessità di funzioni specifiche
TString_array *_chiavi; // array contenente i valori delle chiavi per ogni record selezionato da scan_doc
TString _codelab; // codice elaborazione differita
TElab_struct _elab; // struttura per memorizzare i campi significativi dei records di doc
int _ordinamento; // indica il tipo di ordinamento
bool _raggruppa; // indica se si deve raggruppare o no
int scan_doc (void); // lancia le altre due procedure
int run_mask (void); // lancia la maschera e scandisce i records
int get_info (void); // imposta la struttura elab leggendo il record per l'elaborazione corrente
bool errore_fatale(int); // ritorna true se l'errore passato come argomento è nella lista degli errori fatali
};
bool TElaborazioni::errore_fatale (int err)
{
switch (err)
{
case NO_ORG_DOCS:
case RECORD_WRITE_ERROR:
case ELAB_NOT_FOUND:
case DOC_TYPE_NOT_FOUND:
case READ_ERROR:
return TRUE;
default:
return 0;
}
}
int TElaborazioni::get_info(void)
{
int err;
// informazioni dalla tabella elaborazioni differite
TTable t("ELD"); // tabella elaborazioni differite
t.zero();
t.put ("CODTAB", _codelab); // imposta il codice elaborazione da cercare
if (!(err = t.read (_isgteq))) // si posiziona sul record dell'elab. differita con codice cod_elab
{
error_box ("TElaborazioni::get_info() : errore di lettura %d da tab(ELD)", err);
return READ_ERROR;
}
if (t.get("CODTAB") != _codelab) // controlla se il codice trovato è proprio cod_tab
{
error_box ("TElaborazioni::get_info() : non esiste l'elaborazione con codice %s in tab(ELD)", (const char *)_codelab);
return ELAB_NOT_FOUND;
}
// Imposta i dati relativi all'elaborazione differita corrente
_elab.tipo_doc_org = t.get("S6"); // tipo documento originale
_elab.tipo_doc_des = t.get ("S8"); // tipo documento destinazione
_elab.stato_doc_ini = t.get ("S7"); // stato iniziale del documento originale
_elab.stato_doc_fin = t.get ("S9"); // stato finale (dopo l'elaborazione) del documento originale
_elab.codnum = t.get ("S5"); // codice numerazione per il documento finale
return 0;
}
int TElaborazioni::run_mask(void)
{
int err;
TMask *_msk = new TMask ("ve6000"); // carica la maschera
// Imposta il flag di autorizzazione agente
TTable t("TIP"); // tabella tipi documento
t.zero(); // azzera i campi
t.put ("CODTAB", _elab.tipo_doc_org); // tipo del documento originale
if (!(err = t.read (_isgteq))) // si posiziona sul record relativo al documento del tipo specificato
{
error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err);
return READ_ERROR;
}
if (t.get ("CODTAB") != _elab.tipo_doc_org) // verifica che il tipo di documento trovato sia quello richiesto
{
error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)_elab.tipo_doc_org);
return DOC_TYPE_NOT_FOUND;
}
TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale)
profilo.ext("ini"); // necessario per aggiungere l'estensione
TConfig profilo_doc(profilo); // oggetto configurazione (file ini del documento)
TConfig p(CONFIG_DITTA); // crea l'oggetto per rilevare l'autorizzazione dall'ini della ditta
// gestione agente abilitata <==> abilitata in profilo documento e nell'ini della ditta
int agente = (profilo_doc.get_int ("CODAG", "PROFILO") && p.get_int("AGENTE", "VE"));
/* se il flag per la gestione agenti è != 0, allora visualizza i campi agente ed
adotta la stessa convenzione usata per codice cliente e zona per gestire l'eventualita' che
l'utente non specifichi nulla.
Se è disabilitata, allora lascia vuoti i campi codice agente da e codice agente a, in modo
da eliminare una condizione durante il test per il filtraggio dei records.
*/
// nasconde i campi se la gestione agenti è disabilitata
if (!agente)
{
_msk->show (F_CODICE_AGENTE_DA, FALSE);
_msk->show (F_CODICE_AGENTE_A, FALSE);
}
if (_msk->run() == K_ESC) // se premuto esc, esci
return ESC_PRESSED;
_ordinamento = _msk->get_int (F_ORDINAMENTO_EMISSIONE);
_raggruppa = _msk->get_int (F_RAGGRUPPA);
TString temps; // stringa temporanea
// Imposta i campi dei records campione per il filtraggio
TLocalisamfile f(LF_DOC); // file doc
f.zero(); // azzera i campi
TRectype first(f.curr()), last(f.curr()); // dichiara due records con la stessa struttura dei records di $doc
first.put("TIPOCF", 'C'); // trattare solo clienti
last.put ("TIPOCF", 'C');
first.put ("TIPODOC", _elab.tipo_doc_org); // tipo documento (da tab. ELD)
last.put ("TIPODOC", _elab.tipo_doc_org);
first.put ("STATO", _elab.stato_doc_ini); // stato documento originale
last.put ("STATO", _elab.stato_doc_ini);
// codice cliente
temps = _msk->get(F_CODICE_CLIENTE_DA);
if (temps.not_empty())
first.put ("CODCF", temps);
temps = _msk->get(F_CODICE_CLIENTE_A);
if (temps.not_empty())
last.put ("CODCF", temps);
// data
first.put ("DATADOC", _msk->get(F_DATA_DOCUMENTO_DA)); // nessun controllo perché data doc. da e data doc. a sono checktype required
last.put ("DATADOC", _msk->get(F_DATA_DOCUMENTO_A));
// codice zona
temps = _msk->get (F_CODICE_ZONA_DA); // mette in temps il valore del campo codice zona da
if (temps.not_empty()) // se è stato inserito un valore...
// ******************** N.B.: il campo ZONA va aggiunto a $doc. verificare se il campo è proprio ZONA *****************
first.put("ZONA", temps); // mettilo nel campo zona
temps = _msk->get (F_CODICE_ZONA_A);
if (temps.not_empty())
last.put ("ZONA", temps);
// codice agente: imposta i campi solo se ne è abilitata la gestione
// se agente è disabilitato, i campi agente rimangono vuoti
if (agente)
{
temps = _msk->get (F_CODICE_AGENTE_DA);
if (temps.not_empty())
first.put("CODCF", temps);
temps = _msk->get (F_CODICE_AGENTE_A);
if (temps.not_empty())
last.put ("CODCF", temps);
}
f.put ("STATO", _elab.stato_doc_ini);
if (! (err = f.read (_isgteq)))
error_box ("TElaborazioni::run_mask() : errore di lettura &d da doc", err);
if (f.get ("STATO") != _elab.stato_doc_ini)
{
error_box ("TElaborazioni::run_mask() : non esistrono documenti allo stato %s", (const char *)_elab.stato_doc_ini);
return NO_ORG_DOCS;
}
do // scandisce tutti i records a partire dal primo che ha lo stato richiesto
{
TToken_string tempt; // ttoken string per aggiungere chiavi all'array
if (f.curr() >= first && f.curr() <= last)
{
tempt = f.get("CODNUM"); // utilizza la chiave 1 di $doc
tempt.add( (const char *)f.get("ANNO") );
tempt.add( (const char *)f.get("PROVV") );
tempt.add( (const char *)f.get ("NDOC") );
_chiavi->add(tempt); // aggiunge la chiave del record alla lista
}
}
while (err = f.read(_isnext));
if (err !=NOERR)
{
error_box ("TElaborazioni::run_mask() : errore di lettura %d da doc", err);
return READ_ERROR;
}
if (!_chiavi->items()) // se l'array è vuoto, indica al chiamante che non ci sono documenti da raggruppare
{
error_box ("TElaborazioni::run_mask() : nessun documento originale soddisfa le condizioni richieste");
return NO_ORG_DOCS;
}
for (int i = 0; i<_chiavi->items()-1; i++)
message_box ("Record %d: %s", i, (const char *)_chiavi->row(i));
return 0;
}
int TElaborazioni::scan_doc(void)
{
int err; // codice ritornato dalle procedure
if (err = get_info())
return err; // ritorna al chiamante l'errore di get_info, senza eseguire run_mask
return run_mask(); // ritorna il codice di errore di run_mask
}

16
ve/ve6retv.h Executable file
View File

@ -0,0 +1,16 @@
// Valori di ritorno delle procedure interne al modulo ve6
#if !defined (_VE6_RETURN_VALUES)
#define _VE6_RETURN_VALUES
#define NO_ORG_DOCS 100 // indica che non ci sono documenti originali con le caratteristiche richieste
#define ESC_PRESSED 101 // indica che è stato premuto il pulsante "Annulla" sulla maschera di selezione dei ranges
#define RECORD_WRITE_ERROR 102 // errore nella scrittura di un record
#define CLIENTE 1 // codici ordinamento (codici ritornati dal radiobutton della maschera)
#define AGENTE 2
#define ZONA 3
#define DATA 4
#define ELAB_NOT_FOUND 107 // indica che non è stata trovato un record per il codice di elaborazione specificato
#define DOC_TYPE_NOT_FOUND 108 // indica che non è stato trovato un record per il tipo di documento specificato
#define READ_ERROR 109 // indica che c'è stato un errore in lettura
#endif