Patch level : 2.2 112
Files correlati : ve0.exe bacnv.exe profili riga e documento Ricompilazione Demo : [ ] Commento : Bug 0000423 Possibilità di variare il tipo riga direttamente sulla riga Possibilità di selezionare piu' documenti in caso di elaborazione interattiva che aggiunge al documento attuale Modificati i profili documento per le definizioni dei tipi riga colonne handlers etc.. Per quest'ultimo esiste il programma di conversione bacnv 23 nomeprofilo.ini git-svn-id: svn://10.65.10.50/trunk@13151 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5c664b90e7
commit
520f73114a
@ -1122,7 +1122,7 @@ WARNING "Ufficio IVA assente"
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRINF F_DENUFFIVA 50 48
|
||||
STRING F_DENUFFIVA 50 48
|
||||
BEGIN
|
||||
PROMPT 23 10 " "
|
||||
FLAGS "D"
|
||||
|
58
ba/bacnv.cpp
58
ba/bacnv.cpp
@ -29,6 +29,7 @@
|
||||
|
||||
|
||||
#define usage "Errore - uso : bacnv [1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22] ditta"
|
||||
#define usage1 "Errore - uso : bacnv 23 profilo"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Applicazione di conversione archivi XBase, valida per tutti e 4 i tipi di DLL
|
||||
@ -197,6 +198,7 @@ public:
|
||||
void convert_quadst() const;
|
||||
void convert_clifo_privati();
|
||||
void convert_pcon_ivd();
|
||||
void convert_profile(const char * profile_name);
|
||||
|
||||
|
||||
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
|
||||
@ -360,6 +362,8 @@ bool TConversione_archivi::menu(MENU_TAG)
|
||||
break;
|
||||
case 22:
|
||||
convert_pcon_ivd();
|
||||
case 23:
|
||||
convert_profile(argv(2));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1930,6 +1934,58 @@ void TConversione_archivi::convert_pcon_ivd()
|
||||
prefix().set(pref);
|
||||
}
|
||||
|
||||
void TConversione_archivi::convert_profile(const char * profile_name)
|
||||
{
|
||||
TConfig p(profile_name);
|
||||
TString16 str;
|
||||
int i;
|
||||
|
||||
int ncols = p.get_int( "NCOLS", "SHEET" );
|
||||
p.remove("NCOLS");
|
||||
for (i = 1; i <= ncols; i++)
|
||||
{
|
||||
str.format( "%d", i );
|
||||
const TString16 val(p.get(str));
|
||||
p.remove(str);
|
||||
p.set("Col", val, NULL, true, i - 1);
|
||||
}
|
||||
|
||||
const int numtr = p.get_int( "NTIPIRIGA", "RIGHE" );
|
||||
p.remove( "NTIPIRIGA");
|
||||
|
||||
for (i = 1; i <= numtr; i ++ )
|
||||
{
|
||||
str.format("%d", i);
|
||||
const TString16 tiporiga(p.get(str));
|
||||
p.remove(str);
|
||||
p.set("Tipo", tiporiga, NULL, true, i - 1);
|
||||
}
|
||||
|
||||
const int hitems = p.get_int("NHANDLER", "HANDLERS");
|
||||
p.remove("NHANDLER");
|
||||
|
||||
for (i = 1; i <= hitems; i++)
|
||||
{
|
||||
str.format("%d", i);
|
||||
const TToken_string h(p.get(str));
|
||||
|
||||
p.remove(str);
|
||||
p.set("Handler", h, NULL, true, i - 1);
|
||||
}
|
||||
|
||||
const int ditems = p.get_int("NDEFAULTS", "DEFAULT");
|
||||
p.remove("NDEFAULTS");
|
||||
|
||||
for (i = 1; i <= ditems; i++)
|
||||
{
|
||||
str.format("%d", i);
|
||||
const TToken_string h(p.get(str));
|
||||
|
||||
p.remove(str);
|
||||
p.set("Default", h, NULL, true, i - 1);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Programma di conversione archivi speciale
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1938,7 +1994,7 @@ int main(int argc,char** argv)
|
||||
{
|
||||
const int r = (argc > 1) ? abs(atoi(argv[1])) : 0;
|
||||
|
||||
if (r < 0 || r > 22)
|
||||
if (r < 0 || r > 23)
|
||||
{
|
||||
error_box(usage);
|
||||
return 100;
|
||||
|
@ -96,6 +96,8 @@
|
||||
#define BMP_FILE 169
|
||||
#define BMP_STOP 170
|
||||
#define BMP_FILECHK 171
|
||||
#define BMP_DIRSEL 172
|
||||
#define BMP_DIRDNSEL 173
|
||||
#endif
|
||||
|
||||
/* @END */
|
||||
|
BIN
res/dirdnsel.bmp
Executable file
BIN
res/dirdnsel.bmp
Executable file
Binary file not shown.
After Width: | Height: | Size: 726 B |
BIN
res/dirsel.bmp
Executable file
BIN
res/dirsel.bmp
Executable file
Binary file not shown.
After Width: | Height: | Size: 726 B |
@ -63,6 +63,8 @@
|
||||
169=file.bmp
|
||||
170=stop.bmp
|
||||
171=filechk.bmp
|
||||
172=dirsel.bmp
|
||||
173=dirdnsel.bmp
|
||||
|
||||
1661=check.bmp
|
||||
1662=darrowu.bmp
|
||||
|
@ -157,40 +157,36 @@ DESCRCMS = S_NORMALE //3000
|
||||
FASCMS = S_NORMALE //3000
|
||||
DESCRFAS = S_NORMALE //3000
|
||||
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=22
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_PREZZO
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_IMPFISUN
|
||||
15=FR_IMPFISSO
|
||||
16=FR_CODIVA
|
||||
17=FR_ADDIVA
|
||||
18=FR_CAUS
|
||||
19=FR_CODMAGC
|
||||
20=FR_CODDEPC
|
||||
21=FR_CODCMS
|
||||
22=FR_FASCMS
|
||||
Col(1)=FR_CODMAG
|
||||
Col(2)=FR_CODDEP
|
||||
Col(3)=FR_CODART
|
||||
Col(4)=FR_LIV1
|
||||
Col(5)=FR_LIV2
|
||||
Col(6)=FR_LIV3
|
||||
Col(7)=FR_LIV4
|
||||
Col(8)=FR_DESCR
|
||||
Col(9)=FR_UMQTA
|
||||
Col(10)=FR_QTA
|
||||
Col(11)=FR_PREZZO
|
||||
Col(12)=FR_SCONTO
|
||||
Col(13)=FR_PERCPROV
|
||||
Col(14)=FR_IMPFISUN
|
||||
Col(15)=FR_IMPFISSO
|
||||
Col(16)=FR_CODIVA
|
||||
Col(17)=FR_ADDIVA
|
||||
Col(18)=FR_CAUS
|
||||
Col(19)=FR_CODMAGC
|
||||
Col(20)=FR_CODDEPC
|
||||
Col(21)=FR_CODCMS
|
||||
Col(22)=FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
1 = F_ORAPART|1
|
||||
// Handler(0)=F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -239,3 +235,4 @@ NGROUPS=11
|
||||
9=2400
|
||||
10=2900
|
||||
11=3000
|
||||
|
||||
|
@ -155,44 +155,40 @@ BLANK = S_DISABILITATO //4000
|
||||
CODNOTE = S_NORMALE //2500
|
||||
NOTECLI = S_NOCHECK //2500
|
||||
|
||||
|
||||
[DEFAULT]
|
||||
Default(0)=F_CAUSTRASP|VEN
|
||||
|
||||
[SHEET]
|
||||
NCOLS=25
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_PREZZO
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_IMPFISUN
|
||||
15=FR_IMPFISSO
|
||||
16=FR_CODIVA
|
||||
17=FR_ADDIVA
|
||||
18=FR_NCOLLI
|
||||
19=FR_PNETTO
|
||||
20=FR_TARA
|
||||
21=FR_CAUS
|
||||
22=FR_CODMAGC
|
||||
23=FR_CODDEPC
|
||||
24=FR_CODCMS
|
||||
25=FR_FASCMS
|
||||
Col(1)=FR_CODMAG
|
||||
Col(2)=FR_CODDEP
|
||||
Col(3)=FR_CODART
|
||||
Col(4)=FR_LIV1
|
||||
Col(5)=FR_LIV2
|
||||
Col(6)=FR_LIV3
|
||||
Col(7)=FR_LIV4
|
||||
Col(8)=FR_DESCR
|
||||
Col(9)=FR_UMQTA
|
||||
Col(10)=FR_QTA
|
||||
Col(11)=FR_PREZZO
|
||||
Col(12)=FR_SCONTO
|
||||
Col(13)=FR_PERCPROV
|
||||
Col(14)=FR_IMPFISUN
|
||||
Col(15)=FR_IMPFISSO
|
||||
Col(16)=FR_CODIVA
|
||||
Col(17)=FR_ADDIVA
|
||||
Col(18)=FR_NCOLLI
|
||||
Col(19)=FR_PNETTO
|
||||
Col(20)=FR_TARA
|
||||
Col(21)=FR_CAUS
|
||||
Col(22)=FR_CODMAGC
|
||||
Col(23)=FR_CODDEPC
|
||||
Col(24)=FR_CODCMS
|
||||
Col(25)=FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
1 = F_ORAPART|1
|
||||
// Handler(0) = F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -229,7 +225,7 @@ NHANDLER=0
|
||||
2710 = S_NORMALE
|
||||
2800 = S_NORMALE
|
||||
2900 = S_NORMALE
|
||||
3000 = S_NORMALE
|
||||
3000 = S_NORMALE
|
||||
4000 = S_NORMALE
|
||||
|
||||
[ORDINEGRUPPI]
|
||||
@ -264,3 +260,4 @@ NGROUPS=30
|
||||
28=1000
|
||||
29=2900
|
||||
30=3000
|
||||
|
||||
|
@ -109,37 +109,33 @@ DESCRCMS = S_NORMALE //3000
|
||||
FASCMS = S_NORMALE //3000
|
||||
DESCRFAS = S_NORMALE //3000
|
||||
|
||||
|
||||
[DEFAULT]
|
||||
Default(0)=F_CAUSTRASP|RES
|
||||
|
||||
[SHEET]
|
||||
NCOLS=18
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_LORDO
|
||||
12=FR_PREZZO
|
||||
13=FR_CODIVA
|
||||
14=FR_CAUS
|
||||
15=FR_CODMAGC
|
||||
16=FR_CODDEPC
|
||||
17=FR_CODCMS
|
||||
18=FR_FASCMS
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_LORDO
|
||||
Col(11) = FR_PREZZO
|
||||
Col(12) = FR_CODIVA
|
||||
Col(13) = FR_CAUS
|
||||
Col(14) = FR_CODMAGC
|
||||
Col(15) = FR_CODDEPC
|
||||
Col(16) = FR_CODCMS
|
||||
Col(17) = FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
1 = F_ORAPART|1
|
||||
// Handler(0) = F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
100 = S_NORMALE
|
||||
@ -185,3 +181,4 @@ NGROUPS=20
|
||||
18=1500
|
||||
19=1600
|
||||
20=3000
|
||||
|
||||
|
@ -120,35 +120,32 @@ DESCRFAS = S_NORMALE //3000
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=22
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_PREZZO
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_IMPFISUN
|
||||
15=FR_IMPFISSO
|
||||
16=FR_CODIVA
|
||||
17=FR_ADDIVA
|
||||
18=FR_CAUS
|
||||
19=FR_CODMAGC
|
||||
20=FR_CODDEPC
|
||||
21=FR_CODCMS
|
||||
22=FR_FASCMS
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_PREZZO
|
||||
Col(11) = FR_SCONTO
|
||||
Col(12) = FR_PERCPROV
|
||||
Col(13) = FR_IMPFISUN
|
||||
Col(14) = FR_IMPFISSO
|
||||
Col(15) = FR_CODIVA
|
||||
Col(16) = FR_ADDIVA
|
||||
Col(17) = FR_CAUS
|
||||
Col(18) = FR_CODMAGC
|
||||
Col(19) = FR_CODDEPC
|
||||
Col(20) = FR_CODCMS
|
||||
Col(21) = FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
|
@ -158,40 +158,37 @@ DESCRFAS = S_NORMALE //3000
|
||||
Default(0)=F_CAUSTRASP|VEN
|
||||
|
||||
[SHEET]
|
||||
NCOLS=26
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_LORDO
|
||||
12=FR_PREZZO
|
||||
13=FR_SCONTO
|
||||
14=FR_PERCPROV
|
||||
15=FR_IMPFISUN
|
||||
16=FR_IMPFISSO
|
||||
17=FR_CODIVA
|
||||
18=FR_ADDIVA
|
||||
19=FR_NCOLLI
|
||||
20=FR_PNETTO
|
||||
21=FR_TARA
|
||||
22=FR_CAUS
|
||||
23=FR_CODMAGC
|
||||
24=FR_CODDEPC
|
||||
25=FR_CODCMS
|
||||
26=FR_FASCMS
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_LORDO
|
||||
Col(11) = FR_PREZZO
|
||||
Col(12) = FR_SCONTO
|
||||
Col(13) = FR_PERCPROV
|
||||
Col(14) = FR_IMPFISUN
|
||||
Col(15) = FR_IMPFISSO
|
||||
Col(16) = FR_CODIVA
|
||||
Col(17) = FR_ADDIVA
|
||||
Col(18) = FR_NCOLLI
|
||||
Col(19) = FR_PNETTO
|
||||
Col(20) = FR_TARA
|
||||
Col(21) = FR_CAUS
|
||||
Col(22) = FR_CODMAGC
|
||||
Col(23) = FR_CODDEPC
|
||||
Col(24) = FR_CODCMS
|
||||
Col(25) = FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
1 = F_ORAPART|1
|
||||
// Handler(0)=F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -262,3 +259,4 @@ NGROUPS=30
|
||||
28=1000
|
||||
29=2900
|
||||
30=3000
|
||||
|
||||
|
@ -132,33 +132,30 @@ BLANK = S_DISABILITATO //4000
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=20
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_PREZZO
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_IMPFISUN
|
||||
15=FR_IMPFISSO
|
||||
16=FR_CODIVA
|
||||
17=FR_ADDIVA
|
||||
18=FR_CAUS
|
||||
19=FR_CODMAGC
|
||||
20=FR_CODDEPC
|
||||
Col(1)=FR_CODMAG
|
||||
Col(2)=FR_CODDEP
|
||||
Col(3)=FR_CODART
|
||||
Col(4)=FR_LIV1
|
||||
Col(5)=FR_LIV2
|
||||
Col(6)=FR_LIV3
|
||||
Col(7)=FR_LIV4
|
||||
Col(8)=FR_DESCR
|
||||
Col(9)=FR_UMQTA
|
||||
Col(10)=FR_QTA
|
||||
Col(11)=FR_PREZZO
|
||||
Col(12)=FR_SCONTO
|
||||
Col(13)=FR_PERCPROV
|
||||
Col(14)=FR_IMPFISUN
|
||||
Col(15)=FR_IMPFISSO
|
||||
Col(16)=FR_CODIVA
|
||||
Col(17)=FR_ADDIVA
|
||||
Col(18)=FR_CAUS
|
||||
Col(19)=FR_CODMAGC
|
||||
Col(20)=FR_CODDEPC
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
|
@ -153,38 +153,34 @@ BLANK = S_DISABILITATO //4000
|
||||
CODNOTE = S_NORMALE //2500
|
||||
NOTECLI = S_NOCHECK //2500
|
||||
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=20
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_PREZZO
|
||||
12=FR_SCONTO
|
||||
13=FR_PERCPROV
|
||||
14=FR_IMPFISUN
|
||||
15=FR_IMPFISSO
|
||||
16=FR_CODIVA
|
||||
17=FR_ADDIVA
|
||||
18=FR_CAUS
|
||||
19=FR_CODMAGC
|
||||
20=FR_CODDEPC
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_PREZZO
|
||||
Col(11) = FR_SCONTO
|
||||
Col(12) = FR_PERCPROV
|
||||
Col(13) = FR_IMPFISUN
|
||||
Col(14) = FR_IMPFISSO
|
||||
Col(15) = FR_CODIVA
|
||||
Col(16) = FR_ADDIVA
|
||||
Col(17) = FR_CAUS
|
||||
Col(18) = FR_CODMAGC
|
||||
Col(19) = FR_CODDEPC
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
1 = F_ORAPART|1
|
||||
// Handler(0)=F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
|
@ -11,7 +11,7 @@ TYPE=Ordine Cliente
|
||||
// modifica
|
||||
CAMPICALC=TOTMER|TOTPRE|SPESE|SPESIMB|SPESTRA|SPESINC|BOLLI|IMPONIBILI|IMPOSTE|TOTDOC|SCONTOD|SCONTOT|OMAGGI|TOTPROVV
|
||||
CALCOLI=*
|
||||
TOTPROVV =
|
||||
TOTPROVV =
|
||||
// modifica
|
||||
// Procedure utente da chiamare per il documento ( preprocessarle? )
|
||||
NUOVO=
|
||||
@ -153,41 +153,36 @@ BLANK = S_DISABILITATO //4000
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=26
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_LORDO
|
||||
12=FR_QTAEVASA
|
||||
13=FR_RIGAEVASA
|
||||
14=FR_DATACONS
|
||||
15=FR_PREZZO
|
||||
16=FR_SCONTO
|
||||
17=FR_PERCPROV
|
||||
18=FR_IMPFISUN
|
||||
19=FR_IMPFISSO
|
||||
20=FR_CODIVA
|
||||
21=FR_ADDIVA
|
||||
22=FR_CAUS
|
||||
23=FR_CODMAGC
|
||||
24=FR_CODDEPC
|
||||
25=FR_CODCMS
|
||||
26=FR_FASCMS
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_LORDO
|
||||
Col(11) = FR_QTAEVASA
|
||||
Col(12) = FR_RIGAEVASA
|
||||
Col(13) = FR_DATACONS
|
||||
Col(14) = FR_PREZZO
|
||||
Col(15) = FR_SCONTO
|
||||
Col(16) = FR_PERCPROV
|
||||
Col(17) = FR_IMPFISUN
|
||||
Col(18) = FR_IMPFISSO
|
||||
Col(19) = FR_CODIVA
|
||||
Col(20) = FR_ADDIVA
|
||||
Col(21) = FR_CAUS
|
||||
Col(22) = FR_CODMAGC
|
||||
Col(23) = FR_CODDEPC
|
||||
Col(24) = FR_CODCMS
|
||||
Col(25) = FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
|
||||
// #include <VEUML.H>
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
// S_DISABILITATO = F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -220,7 +215,7 @@ NHANDLER=0
|
||||
2400 = S_NORMALE
|
||||
2500 = S_NORMALE
|
||||
2900 = S_NORMALE
|
||||
3000 = S_NORMALE
|
||||
3000 = S_NORMALE
|
||||
4000 = S_NORMALE
|
||||
|
||||
[ORDINEGRUPPI]
|
||||
|
@ -157,40 +157,37 @@ DESCRFAS = S_NORMALE //3000
|
||||
BLANK = S_DISABILITATO //4000
|
||||
|
||||
[SHEET]
|
||||
NCOLS=25
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_QTAEVASA
|
||||
12=FR_RIGAEVASA
|
||||
13=FR_DATACONS
|
||||
14=FR_PREZZO
|
||||
15=FR_SCONTO
|
||||
16=FR_PERCPROV
|
||||
17=FR_IMPFISUN
|
||||
18=FR_IMPFISSO
|
||||
19=FR_CODIVA
|
||||
20=FR_ADDIVA
|
||||
21=FR_CAUS
|
||||
22=FR_CODMAGC
|
||||
23=FR_CODDEPC
|
||||
24=FR_CODCMS
|
||||
25=FR_FASCMS
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=*
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_QTAEVASA
|
||||
Col(11) = FR_RIGAEVASA
|
||||
Col(12) = FR_DATACONS
|
||||
Col(13) = FR_PREZZO
|
||||
Col(14) = FR_SCONTO
|
||||
Col(15) = FR_PERCPROV
|
||||
Col(16) = FR_IMPFISUN
|
||||
Col(17) = FR_IMPFISSO
|
||||
Col(18) = FR_CODIVA
|
||||
Col(19) = FR_ADDIVA
|
||||
Col(20) = FR_CAUS
|
||||
Col(21) = FR_CODMAGC
|
||||
Col(22) = FR_CODDEPC
|
||||
Col(23) = FR_CODCMS
|
||||
Col(24) = FR_FASCMS
|
||||
|
||||
[DEFAULT]
|
||||
|
||||
[RIGHE]
|
||||
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -266,3 +263,4 @@ NGROUPS=33
|
||||
31=1600
|
||||
32=2000
|
||||
33=2900
|
||||
|
||||
|
64
ve/ordp.src
64
ve/ordp.src
@ -11,7 +11,7 @@ TYPE=Ordine Cliente
|
||||
// modifica
|
||||
CAMPICALC=
|
||||
CALCOLI=
|
||||
TOTPROVV =
|
||||
TOTPROVV =
|
||||
// modifica
|
||||
// Procedure utente da chiamare per il documento ( preprocessarle? )
|
||||
NUOVO=
|
||||
@ -141,43 +141,38 @@ BLANK = S_DISABILITATO //4000
|
||||
[DEFAULT]
|
||||
|
||||
[SHEET]
|
||||
NCOLS=19
|
||||
1=FR_CODMAG
|
||||
2=FR_CODDEP
|
||||
3=FR_CODART
|
||||
4=FR_LIV1
|
||||
5=FR_LIV2
|
||||
6=FR_LIV3
|
||||
7=FR_LIV4
|
||||
8=FR_DESCR
|
||||
9=FR_UMQTA
|
||||
10=FR_QTA
|
||||
11=FR_LORDO
|
||||
12=FR_QTAEVASA
|
||||
13=FR_RIGAEVASA
|
||||
14=FR_DATACONS
|
||||
15=FR_CAUS
|
||||
16=FR_CODMAGC
|
||||
17=FR_CODDEPC
|
||||
18=FR_IMPIANTO
|
||||
19=FR_LINEA
|
||||
Col(0) = FR_CODMAG
|
||||
Col(1) = FR_CODDEP
|
||||
Col(2) = FR_CODART
|
||||
Col(3) = FR_LIV1
|
||||
Col(4) = FR_LIV2
|
||||
Col(5) = FR_LIV3
|
||||
Col(6) = FR_LIV4
|
||||
Col(7) = FR_DESCR
|
||||
Col(8) = FR_UMQTA
|
||||
Col(9) = FR_QTA
|
||||
Col(10) = FR_LORDO
|
||||
Col(11) = FR_QTAEVASA
|
||||
Col(12) = FR_RIGAEVASA
|
||||
Col(13) = FR_DATACONS
|
||||
Col(14) = FR_CAUS
|
||||
Col(15) = FR_CODMAGC
|
||||
Col(16) = FR_CODDEPC
|
||||
Col(17) = FR_IMPIANTO
|
||||
Col(18) = FR_LINEA
|
||||
|
||||
[RIGHE]
|
||||
NTIPIRIGA=9
|
||||
1=01
|
||||
2=02
|
||||
3=03
|
||||
4=04
|
||||
5=05
|
||||
6=06
|
||||
7=07
|
||||
8=08
|
||||
9=09
|
||||
Tipo(0) = 01
|
||||
Tipo(1) = 02
|
||||
Tipo(2) = 03
|
||||
Tipo(3) = 04
|
||||
Tipo(4) = 05
|
||||
Tipo(5) = 06
|
||||
Tipo(6) = 07
|
||||
Tipo(7) = 08
|
||||
Tipo(8) = 09
|
||||
|
||||
// #include <VEUML.H>
|
||||
[HANDLERS]
|
||||
NHANDLER=0
|
||||
// S_DISABILITATO = F_ORAPART|1
|
||||
|
||||
[PROFILOGRUPPO]
|
||||
101 = S_NASCOSTO
|
||||
@ -242,4 +237,3 @@ NGROUPS=27
|
||||
26=2900
|
||||
27=2000
|
||||
|
||||
|
||||
|
@ -4,12 +4,18 @@ TOOLBAR "" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_LINK 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 "Colle~ga"
|
||||
PICTURE BMP_LINK
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -33,7 +39,7 @@ BEGIN
|
||||
PROMPT 1 1 "@bDestinazione"
|
||||
END
|
||||
|
||||
GROUPBOX F_GROUP_S 77 9
|
||||
GROUPBOX F_GROUP_S 77 10
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bSorgente"
|
||||
END
|
||||
@ -151,13 +157,12 @@ END
|
||||
NUMBER F_NDOC_ELAB 6
|
||||
BEGIN
|
||||
PROMPT 24 5 "Numero doc. "
|
||||
USE LF_DOC KEY 2
|
||||
USE LF_DOC KEY 4
|
||||
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT TIPOCF F_TIPOCF_ELAB SELECT
|
||||
INPUT CODCF F_CODCF_ELAB SELECT
|
||||
INPUT PROVV F_PROVV_ELAB SELECT
|
||||
INPUT ANNO F_ANNO_ELAB SELECT
|
||||
INPUT DATADOC F_DATADOC_ELAB
|
||||
INPUT CODNUM F_CODNUM_ELAB
|
||||
INPUT NDOC F_NDOC_ELAB
|
||||
DISPLAY "Num." CODNUM
|
||||
@ -247,9 +252,23 @@ BEGIN
|
||||
GROUP GRP_ART
|
||||
END
|
||||
|
||||
CURRENCY F_TOTVAL 18
|
||||
BEGIN
|
||||
PROMPT 2 9 "Valore totale "
|
||||
FLAGS "HD"
|
||||
GROUP GRP_CHK
|
||||
END
|
||||
|
||||
CURRENCY F_TOTSEL 18
|
||||
BEGIN
|
||||
PROMPT 40 9 "Valore selezionato "
|
||||
FLAGS "HD"
|
||||
GROUP GRP_CHK
|
||||
END
|
||||
|
||||
TREE F_ROWS -3 -1
|
||||
BEGIN
|
||||
PROMPT 0 10 ""
|
||||
PROMPT 0 11 ""
|
||||
GROUP GRP_DOC
|
||||
END
|
||||
|
||||
|
@ -20,10 +20,13 @@
|
||||
#define F_QTA 220
|
||||
#define F_NUMDOCRIF_ELAB 227
|
||||
#define F_CODVAL_ELAB 228
|
||||
#define F_ROWS 229
|
||||
#define F_TOTVAL 229
|
||||
#define F_TOTSEL 230
|
||||
#define F_ROWS 231
|
||||
|
||||
#define GRP_ART 2
|
||||
#define GRP_DOC 3
|
||||
#define GRP_CHK 4
|
||||
|
||||
#define S_RIGACONSEGNATA 101
|
||||
#define S_QTARESIDUA 102
|
||||
|
@ -245,7 +245,7 @@ public:
|
||||
void set_defaults(TMask& m) const;
|
||||
const TString_array& keys_descrs();
|
||||
const TString_array& sheet_columns();
|
||||
const TString_array& handlers();
|
||||
const TString_array& handlers() const;
|
||||
|
||||
const TString& mask_name() const { return get("S4");}
|
||||
const TString& causale() const { return get("S6"); }
|
||||
@ -694,6 +694,7 @@ public:
|
||||
bool provvisorio() const { return get_char("PROVV") == 'P'; }
|
||||
char stato() const { return get_char("STATO"); }
|
||||
void stato(char s) { put("STATO", s); }
|
||||
const TString & codice_costo() const { return get(DOC_CODCOSTO);}
|
||||
const TString & codice_commessa() const { return get(DOC_CODCMS);}
|
||||
const TString & fase_commessa() const { return get(DOC_FASCMS);}
|
||||
bool modificabile() const;
|
||||
@ -811,7 +812,6 @@ protected:
|
||||
static bool codlist_handler( TMask_field& f, KEY key );
|
||||
static bool codcont_handler( TMask_field& f, KEY key );
|
||||
static bool codcamp_handler( TMask_field& f, KEY key );
|
||||
// static bool controeuro_handler( TMask_field& f, KEY key );
|
||||
static bool datacambio_handler( TMask_field& f, KEY key );
|
||||
static bool codval_handler( TMask_field& f, KEY key );
|
||||
void user_set_handler( int fieldid, int index);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include "velib.h"
|
||||
#include "vepriv.h"
|
||||
#include "verig.h"
|
||||
|
||||
#include "../mg/mglib.h"
|
||||
|
||||
@ -103,26 +104,28 @@ const TString_array& TTipo_documento::keys_descrs()
|
||||
TString16 var, tiporiga;
|
||||
TFilename pn; profile_name(pn);
|
||||
TConfig prof(pn);
|
||||
const int numtr = prof.get_int( "NTIPIRIGA", "RIGHE" );
|
||||
TTipo_riga_documento tr;
|
||||
TTipo_riga_documento tr;
|
||||
|
||||
_keys_descrs.add("");
|
||||
_keys_descrs.add("");
|
||||
TToken_string& k = (TToken_string&)_keys_descrs[0];
|
||||
TToken_string& d = (TToken_string&)_keys_descrs[1];
|
||||
|
||||
if (numtr > 0)
|
||||
{
|
||||
for ( int i = 1; i <= numtr; i ++ )
|
||||
{
|
||||
var.format("%d", i);
|
||||
tiporiga = prof.get(var, "RIGHE");
|
||||
tr.read(tiporiga);
|
||||
k.add(tr.codice());
|
||||
d.add(tr.descrizione());
|
||||
}
|
||||
int i;
|
||||
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
const TString16 tiporiga(prof.get("Tipo", "RIGHE", i));
|
||||
|
||||
if (tiporiga.empty())
|
||||
break;
|
||||
|
||||
tr.read(tiporiga);
|
||||
k.add(tr.codice());
|
||||
d.add(tr.descrizione());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
TTable tri("%TRI");
|
||||
|
||||
for (int err = tri.first(); err == NOERR; err = tri.next())
|
||||
@ -140,34 +143,34 @@ const TString_array& TTipo_documento::sheet_columns()
|
||||
{
|
||||
if (_sheet_columns.items() == 0)
|
||||
{
|
||||
TString16 col;
|
||||
TFilename pn; profile_name(pn);
|
||||
TConfig prof(pn, "SHEET");
|
||||
int ncols = prof.get_int( "NCOLS", "SHEET" );
|
||||
for (int i = 1; i <= ncols; i++)
|
||||
for (int i = 0; i < MAX_COLUMNS; i++)
|
||||
{
|
||||
col.format( "%d", i );
|
||||
_sheet_columns.add(prof.get(col, "SHEET"));
|
||||
const TString & id = prof.get("Col", NULL, i);
|
||||
if (atoi(id) == 0)
|
||||
break;
|
||||
_sheet_columns.add(id);
|
||||
}
|
||||
}
|
||||
|
||||
return _sheet_columns;
|
||||
}
|
||||
|
||||
const TString_array& TTipo_documento::handlers()
|
||||
const TString_array& TTipo_documento::handlers() const
|
||||
{
|
||||
if (_handlers.items() == 0)
|
||||
{
|
||||
TString16 chiave;
|
||||
TFilename pn; profile_name(pn);
|
||||
TConfig prof(pn);
|
||||
TConfig prof(pn, "HANDLERS");
|
||||
|
||||
int numhandler = prof.get_int( "NHANDLER", "HANDLERS" ); // prof
|
||||
|
||||
for (int i = 1; i <= numhandler; i++)
|
||||
for (int i = 0; ; i++)
|
||||
{
|
||||
chiave.format("%d", i);
|
||||
_handlers.add(prof.get(chiave, "HANDLERS"));
|
||||
const TString & h = prof.get("Handler", NULL, i);
|
||||
if (h.empty())
|
||||
break;
|
||||
((TString_array &)_handlers).add(h);
|
||||
}
|
||||
}
|
||||
return _handlers;
|
||||
|
@ -18,6 +18,25 @@ TDate TLista_documenti::num2date(char provv, int anno, const char* codnum, long
|
||||
return doc.get_date(DOC_DATADOC);
|
||||
}
|
||||
|
||||
bool TLista_documenti::find(char provv, int anno, const char * codnum, long ndoc) const
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
if (ndoc > 0)
|
||||
{
|
||||
const int it = items();
|
||||
for (int i = 0; !found && i < it; i++)
|
||||
{
|
||||
const TDocumento & d = doc(i);
|
||||
|
||||
found = ((d.head().get_long(DOC_NDOC) == ndoc) &&
|
||||
(d.head().get_char(DOC_PROVV) == provv) &&
|
||||
(d.head().get_int(DOC_ANNO) == anno) &&
|
||||
(d.head().get(DOC_CODNUM) == codnum));
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
|
||||
TToken_string& tipidoc, TToken_string& statidoc,
|
||||
const TDate& dd, const TDate& ad,
|
||||
|
@ -19,6 +19,7 @@ protected:
|
||||
TDate num2date(char provv, int anno, const char* codnum, long num) const;
|
||||
|
||||
public:
|
||||
bool find(char provv, int anno, const char * codnum, long ndoc) const;
|
||||
int read(char provv, char tipo, long clifo, int anno,
|
||||
TToken_string& tipidoc, TToken_string& statidoc,
|
||||
const TDate& dd, const TDate& ad,
|
||||
|
306
ve/velib06.cpp
306
ve/velib06.cpp
@ -1,5 +1,6 @@
|
||||
#include <automask.h>
|
||||
#include <dongle.h>
|
||||
#include <execp.h>
|
||||
#include <modaut.h>
|
||||
#include <sheet.h>
|
||||
#include <smartcard.h>
|
||||
@ -7,6 +8,7 @@
|
||||
#include <tree.h>
|
||||
#include <postman.h>
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "velib04.h"
|
||||
#include "vepriv.h"
|
||||
@ -81,8 +83,9 @@ TDocumento_mask::TDocumento_mask(const char* td)
|
||||
listbox.replace_items(keys, descrs);
|
||||
|
||||
// Controlla se deve generare la pagina di analitica
|
||||
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
||||
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
||||
insert_anal_page();
|
||||
|
||||
|
||||
configura_sheet(*_sheet);
|
||||
|
||||
@ -1017,9 +1020,15 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
row_set_handler( *m, riga.get_int( 0 ), riga.get_int( 1 ) );
|
||||
}
|
||||
|
||||
m->set_handler( FR_QTA, qta_handler );
|
||||
m->set_handler(FR_TIPORIGA, tipo_riga_handler);
|
||||
m->set_handler( FR_QTA, qta_handler );
|
||||
m->set_handler( FR_UMQTA, um_handler );
|
||||
m->set_handler( FR_DATACONS, dcons_handler);
|
||||
TList_field & htr = lfield(F_LBTIPORIGA);
|
||||
const TString codes(htr.get_codes());
|
||||
const TString values(htr.get_values());
|
||||
|
||||
m->lfield(FR_TIPORIGA).replace_items(codes, values);
|
||||
|
||||
const int pos = m->id2pos(FR_CODART);
|
||||
if (pos >= 0)
|
||||
@ -1162,7 +1171,7 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
f.reset_driver();
|
||||
f.add_driver(-F_CODVAL);
|
||||
}
|
||||
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
@ -1569,6 +1578,10 @@ class TDocument_tree : public TBidirectional_tree
|
||||
TRelation* _relation;
|
||||
TCursor* _cursor;
|
||||
TToken_string _curnode;
|
||||
bool _multiple_selection;
|
||||
TAssoc_array _selected_docs;
|
||||
TString _selected;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void node2id(const TObject* node, TString& id) const;
|
||||
@ -1579,6 +1592,13 @@ protected:
|
||||
void append_custom_fields(const TTipo_documento& tipo, const TRectype& rec, TString& str) const;
|
||||
|
||||
public:
|
||||
void multiple_selection(bool on);
|
||||
bool multiple_selection() const { return _multiple_selection;}
|
||||
bool node_selected(const TObject* node = NULL) const;
|
||||
void select_node(const TObject* node = NULL, bool on = true);
|
||||
real select_doc(long numdoc);
|
||||
void build_doc_list(TLista_documenti & docs);
|
||||
void unselect_node(const TObject* node) { select_node(node, false);}
|
||||
virtual bool goto_root();
|
||||
virtual bool goto_firstson();
|
||||
virtual bool goto_rbrother();
|
||||
@ -1592,10 +1612,14 @@ public:
|
||||
virtual TObject* curr_node() const { return &(TToken_string&)_curnode; }
|
||||
virtual bool get_description(TString& str) const;
|
||||
virtual TImage* image(bool selected) const;
|
||||
|
||||
|
||||
void select(TString & id) { _selected = id;}
|
||||
const TString & selected() const { return _selected;}
|
||||
|
||||
const TRectype& testata() const;
|
||||
const TRectype& riga() const;
|
||||
const TRectype& record() const;
|
||||
const real totale_doc() const { TDocumento d(testata()); return d.totale_doc();}
|
||||
|
||||
void set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff = NULL);
|
||||
TCursor* get_cursor() { return _cursor; }
|
||||
@ -1648,6 +1672,83 @@ bool TDocument_tree::on_row() const
|
||||
return me._curnode.get_int(1) > 0;
|
||||
}
|
||||
|
||||
void TDocument_tree::multiple_selection(bool on)
|
||||
{
|
||||
_multiple_selection = on;
|
||||
if (!_multiple_selection)
|
||||
_selected_docs.destroy();
|
||||
|
||||
}
|
||||
|
||||
bool TDocument_tree::node_selected(const TObject* node) const
|
||||
{
|
||||
TToken_string id;
|
||||
|
||||
if (node == NULL)
|
||||
node = curr_node();
|
||||
|
||||
node2id(node, id);
|
||||
id = id.get(0);
|
||||
return _selected_docs.is_key(id);
|
||||
}
|
||||
|
||||
void TDocument_tree::select_node(const TObject* node, bool on)
|
||||
{
|
||||
TToken_string id;
|
||||
|
||||
if (node == NULL)
|
||||
node = curr_node();
|
||||
|
||||
node2id(node, id);
|
||||
id = id.get(0);
|
||||
if (on)
|
||||
_selected_docs.add(id);
|
||||
else
|
||||
_selected_docs.remove(id);
|
||||
select(id);
|
||||
}
|
||||
|
||||
bool find_doc(TTree& tree, void* jolly, word flags)
|
||||
{
|
||||
TDocument_tree & t = (TDocument_tree &) tree;
|
||||
if (!t.node_selected())
|
||||
{
|
||||
t.select_node();
|
||||
real & val = *((real *) jolly);
|
||||
val = t.totale_doc();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
real TDocument_tree::select_doc(long numdoc)
|
||||
|
||||
{
|
||||
real val;
|
||||
if (goto_root())
|
||||
scan_depth_first(find_doc, (void *) &val, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES);
|
||||
return val;
|
||||
}
|
||||
|
||||
bool add_to_list(TTree& tree, void* jolly, word flags)
|
||||
{
|
||||
TDocument_tree & t = (TDocument_tree &) tree;
|
||||
if (t.node_selected())
|
||||
{
|
||||
TLista_documenti & docs = *((TLista_documenti *) jolly);
|
||||
|
||||
docs.add(new TDocumento(t.testata()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void TDocument_tree::build_doc_list(TLista_documenti & docs)
|
||||
|
||||
{
|
||||
if (goto_root())
|
||||
scan_depth_first(add_to_list, (void *) &docs, SCAN_PRE_ORDER | SCAN_IGNORING_LEAVES);
|
||||
}
|
||||
|
||||
bool TDocument_tree::goto_root()
|
||||
{
|
||||
const bool ok = _cursor != NULL && _cursor->items()>0;
|
||||
@ -1817,6 +1918,19 @@ TImage* TDocument_tree::image(bool selected) const
|
||||
if (rec.get_bool(RDOC_RIGAEVASA))
|
||||
return get_res_image(BMP_STOP);
|
||||
}
|
||||
else
|
||||
if (multiple_selection())
|
||||
{
|
||||
const bool sel = node_selected();
|
||||
|
||||
if (sel)
|
||||
{
|
||||
if (selected)
|
||||
return get_res_image(BMP_DIRDNSEL);
|
||||
else
|
||||
return get_res_image(BMP_DIRSEL);
|
||||
}
|
||||
}
|
||||
return TTree::image(selected);
|
||||
}
|
||||
|
||||
@ -1902,7 +2016,8 @@ void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* f
|
||||
}
|
||||
|
||||
TDocument_tree::TDocument_tree()
|
||||
: _relation(NULL), _cursor(NULL)
|
||||
: _relation(NULL), _cursor(NULL), _multiple_selection(false)
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
@ -1923,6 +2038,7 @@ class TElabora_mask : public TAutomask
|
||||
TDocumento_mask* _main;
|
||||
TLista_elaborazioni _elab;
|
||||
TDocument_tree _tree;
|
||||
int _check_fld;
|
||||
|
||||
TElaborazione* _last_elab;
|
||||
|
||||
@ -1962,6 +2078,22 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
if (e == fe_modify)
|
||||
update_ndoc_filter();
|
||||
break;
|
||||
case F_NDOC_ELAB:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const long ndoc = atol(o.get());
|
||||
|
||||
if (ndoc > 0L)
|
||||
{
|
||||
real val = _tree.select_doc(ndoc);
|
||||
if (val != ZERO)
|
||||
{
|
||||
val += o.mask().get_real(F_TOTSEL);
|
||||
o.mask().set(F_TOTSEL, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_TYPE:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
@ -1974,8 +2106,34 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
set(F_TYPE, "");
|
||||
}
|
||||
update_ndoc_filter(TRUE);
|
||||
const bool is_search = o.get().empty() || field(F_CODCF_ELAB).empty();
|
||||
o.mask().field(F_NDOC_ELAB).check_type(is_search ? CHECK_SEARCH : CHECK_REQUIRED);
|
||||
const bool add_to_doc = o.get().not_empty();
|
||||
const bool is_search = !add_to_doc || field(F_CODCF_ELAB).empty();
|
||||
o.mask().field(F_NDOC_ELAB).check_type(is_search ? CHECK_SEARCH : CHECK_NORMAL);
|
||||
_tree.multiple_selection(add_to_doc);
|
||||
bool check_tot = false;
|
||||
if (add_to_doc)
|
||||
{
|
||||
if (_check_fld < -1)
|
||||
{
|
||||
_check_fld = -1;
|
||||
const TString_array& handlers = _main->doc().tipo().handlers();
|
||||
const int items = handlers.items();
|
||||
|
||||
for (int i = 0; i < items; i ++ )
|
||||
{
|
||||
TToken_string& riga = (TToken_string&) handlers[i];
|
||||
|
||||
if (riga.get_int(1) == 2)
|
||||
_check_fld = riga.get_int(0);
|
||||
}
|
||||
}
|
||||
check_tot = _check_fld >= 0;
|
||||
}
|
||||
if (!add_to_doc)
|
||||
o.mask().set(F_TOTSEL, "");
|
||||
o.mask().show(-GRP_CHK, check_tot);
|
||||
if (check_tot)
|
||||
o.mask().set(F_TOTVAL, _main->get(_check_fld));
|
||||
}
|
||||
break;
|
||||
case F_STATODOC_ELAB:
|
||||
@ -1998,38 +2156,83 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
if (e == fe_button)
|
||||
docrif_search();
|
||||
break;
|
||||
case F_NDOC_ELAB:
|
||||
if ((e == fe_modify || e == fe_close) && o.check_type() == CHECK_SEARCH && !o.empty())
|
||||
{
|
||||
TToken_string key;
|
||||
key.add("D"); key.add(get(F_ANNO_ELAB));
|
||||
key.add(get(F_CODNUM_ELAB)); key.add(o.get());
|
||||
const TRectype& rec = cache().get(LF_DOC, key);
|
||||
bool ok = !rec.empty(); // Verifica esistenza documento
|
||||
if (ok)
|
||||
{
|
||||
TCursor* c = _tree.get_cursor();
|
||||
c->curr() = rec;
|
||||
ok = c->test(_isequal) == NOERR; // Verifica compatibilità documento
|
||||
}
|
||||
if (!ok)
|
||||
return error_box(((TEdit_field&)o).get_warning());
|
||||
}
|
||||
break;
|
||||
case F_ROWS:
|
||||
if (e == fe_modify && is_running())
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TCursor* c = _tree.get_cursor();
|
||||
if (c != NULL && c->items() > 0)
|
||||
{
|
||||
const TRectype& head = _tree.testata();
|
||||
set(F_DATADOC_ELAB, head.get(DOC_DATADOC)); // Anch'essa nella chiave 2!
|
||||
set(F_ANNO_ELAB, head.get(DOC_ANNO));
|
||||
set(F_CODNUM_ELAB, head.get(DOC_CODNUM), 2); // Check but not hit
|
||||
set(F_NDOC_ELAB, head.get(DOC_NDOC));
|
||||
}
|
||||
TString id;
|
||||
|
||||
_tree.curr_id(id);
|
||||
_tree.select(id);
|
||||
if (is_running() && !_tree.multiple_selection())
|
||||
{
|
||||
TCursor* c = _tree.get_cursor();
|
||||
if (c != NULL && c->items() > 0)
|
||||
{
|
||||
const TRectype& head = _tree.testata();
|
||||
set(F_DATADOC_ELAB, head.get(DOC_DATADOC)); // Anch'essa nella chiave 2!
|
||||
set(F_ANNO_ELAB, head.get(DOC_ANNO));
|
||||
set(F_CODNUM_ELAB, head.get(DOC_CODNUM), 2); // Check but not hit
|
||||
set(F_NDOC_ELAB, head.get(DOC_NDOC));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (e == fe_select)
|
||||
{
|
||||
if (_tree.multiple_selection())
|
||||
{
|
||||
const bool on = !_tree.node_selected();
|
||||
_tree.select_node(NULL, on);
|
||||
if (_check_fld >= 0)
|
||||
{
|
||||
real val = get_real(F_TOTSEL);
|
||||
if (on)
|
||||
val += _tree.totale_doc();
|
||||
else
|
||||
{
|
||||
val -= _tree.totale_doc();
|
||||
if (_tree.testata().get_long(DOC_NDOC) == o.mask().get_long(F_NDOC_ELAB))
|
||||
o.mask().set(F_NDOC_ELAB, "");
|
||||
}
|
||||
set(F_TOTSEL, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DLG_LINK:
|
||||
if (e == fe_button)
|
||||
{
|
||||
_tree.goto_node(_tree.selected());
|
||||
const TRectype & rec = _tree.testata();
|
||||
|
||||
if (!rec.empty())
|
||||
{
|
||||
TFilename tempfile;
|
||||
|
||||
tempfile.temp("ve0");
|
||||
tempfile.ext("ini");
|
||||
|
||||
{
|
||||
TConfig configfile(tempfile);
|
||||
|
||||
configfile.set("Action", "Modify", "Transaction");
|
||||
configfile.set("NDOC", rec.get(DOC_NDOC), "33");
|
||||
configfile.set(DOC_PROVV, rec.get(DOC_PROVV), "33");
|
||||
configfile.set(DOC_ANNO, rec.get(DOC_ANNO), "33");
|
||||
configfile.set(DOC_CODNUM, rec.get(DOC_CODNUM), "33");
|
||||
}
|
||||
|
||||
TString commandline;
|
||||
|
||||
commandline.format("ve0 -0 /i%s",(const char*)tempfile);
|
||||
|
||||
TExternal_app ve(commandline);
|
||||
ve.run();
|
||||
|
||||
remove_file(tempfile);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2046,15 +2249,10 @@ int TElabora_mask::update_list()
|
||||
const bool from_elab = !get_bool(F_TYPE);
|
||||
int items = 0;
|
||||
|
||||
bool agg_test = FALSE;
|
||||
if (from_elab)
|
||||
items = _elab.select(elabs, tipo, stato,"","") ;
|
||||
else
|
||||
{
|
||||
items = _elab.select(elabs, tipo_elab, stato_elab, tipo, stato);
|
||||
agg_test = _main->sfield(F_SHEET).items() == 0;
|
||||
}
|
||||
set(F_UPDATE_HEADER, agg_test ? "X" : "");
|
||||
|
||||
TList_field & f = (TList_field &) field(F_ELAB);
|
||||
TToken_string codes;
|
||||
@ -2179,17 +2377,27 @@ bool TElabora_mask::elabora()
|
||||
else
|
||||
{
|
||||
out.add(app_doc);
|
||||
in.add(d);
|
||||
_tree.build_doc_list(in);
|
||||
char provv = get(F_PROVV_ELAB)[0];
|
||||
int anno = get_int(F_ANNO_ELAB);
|
||||
TString16 codnum(get(F_CODNUM_ELAB));
|
||||
long ndoc = get_long(F_NDOC_ELAB);
|
||||
|
||||
if (ndoc > 0L && !in.find(provv, anno, codnum, ndoc))
|
||||
{
|
||||
TDocumento* d = new TDocumento(provv, anno, codnum, ndoc);
|
||||
|
||||
in.add(d);
|
||||
}
|
||||
if (e->elabora(in, out, TDate(TODAY), TRUE))
|
||||
{
|
||||
if (out[0] != app_doc)
|
||||
{
|
||||
out.rewrite();
|
||||
app_doc = out[0];
|
||||
app_doc.read(out[0].head());
|
||||
update_mask = TRUE;
|
||||
}
|
||||
if (d != in[0])
|
||||
in.rewrite();
|
||||
}
|
||||
in.rewrite();
|
||||
}
|
||||
const TString8 num_in = e->codice_numerazione_iniziale();
|
||||
set(F_CODNUM_ELAB, num_in);
|
||||
@ -2297,6 +2505,8 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
||||
{
|
||||
if (aggiungi_doc_att)
|
||||
{
|
||||
const bool agg_test = e->aggiorna_testata_se_vuoto() && _main->sfield(F_SHEET).items() == 0;
|
||||
set(F_UPDATE_HEADER, agg_test ? "X" : "");
|
||||
const TString8 num_in = e->codice_numerazione_iniziale();
|
||||
if (elab_changed)
|
||||
{
|
||||
@ -2382,6 +2592,7 @@ void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
|
||||
const TString4 tipo_fin(e->tipo_finale());
|
||||
const TString4 stato_fin(e->stato_finale());
|
||||
|
||||
set(F_UPDATE_HEADER, "");
|
||||
filter << "&&";
|
||||
if (stato_fin != "0")
|
||||
filter << '(';
|
||||
@ -2502,7 +2713,7 @@ void TElabora_mask::docrif_search()
|
||||
}
|
||||
|
||||
TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
|
||||
: TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL)
|
||||
: TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL), _check_fld(-883)
|
||||
{
|
||||
_myself = this;
|
||||
|
||||
@ -2543,6 +2754,8 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
||||
m.ss_notify(ss,i,K_ENTER);
|
||||
}
|
||||
}
|
||||
if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
|
||||
break;
|
||||
}
|
||||
if (update_mask)
|
||||
{
|
||||
@ -2555,7 +2768,6 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
|
||||
f.check(STARTING_CHECK);
|
||||
}
|
||||
for (int i = m.fields() - 1; i >= 0; i--)
|
||||
|
||||
m.fld(i).set_dirty(FALSE);
|
||||
}
|
||||
delete selection;
|
||||
|
@ -91,7 +91,7 @@ bool totdoc_hndl( TMask_field& field, KEY key )
|
||||
const real totdoc_check(field.get());
|
||||
|
||||
|
||||
if (totdoc != totdoc_check)
|
||||
if (m.doc().physical_rows() > 0 && totdoc != totdoc_check)
|
||||
{
|
||||
const TString16 tchk(totdoc_check.string());
|
||||
|
||||
@ -505,7 +505,48 @@ bool dcons_handler( TMask_field& f, KEY key )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool tipo_riga_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_SPACE && f.focusdirty())
|
||||
{
|
||||
TMask & row_mask = f.mask();
|
||||
TVariable_sheet_field * sf = (TVariable_sheet_field *) row_mask.get_sheet();
|
||||
|
||||
if (sf != NULL)
|
||||
{
|
||||
TDocumento_mask & docmask = (TDocumento_mask&)sf->mask();
|
||||
if (docmask.is_running())
|
||||
{
|
||||
const int curr_row = sf->selected();
|
||||
TToken_string & row = sf->row(curr_row);
|
||||
const int col = sf->cid2index(FR_TIPORIGA);
|
||||
const TString16 old_tipo_riga = row.get(col);
|
||||
const TString16 tipo_riga = f.get();
|
||||
|
||||
if (!row_mask.is_running())
|
||||
{
|
||||
if (old_tipo_riga != tipo_riga)
|
||||
{
|
||||
row.add(tipo_riga, col);
|
||||
docmask.doc()[curr_row + 1].set_tipo(tipo_riga);
|
||||
TMask * rm = docmask.riga_mask(curr_row);
|
||||
sf->post_insert(curr_row);
|
||||
sf->check_row(curr_row);
|
||||
sf->force_update(curr_row);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (old_tipo_riga != tipo_riga)
|
||||
{
|
||||
f.set(old_tipo_riga);
|
||||
return error_box("Impossibile cambiare il tipo nella maschera di riga");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool codmag_handler( TMask_field& f, KEY key )
|
||||
{
|
||||
// if (f.to_check(key, TRUE))
|
||||
|
@ -14,6 +14,7 @@ bool dcons_handler( TMask_field& f, KEY key );
|
||||
bool iva_handler( TMask_field& f, KEY key );
|
||||
void sppr_calc(const TRectype& rec, const TString& valuta_doc, const real& cambio, real& prezzo, exchange_type controeuro);
|
||||
void row_set_handler(TMask& m, const int field, const int index);
|
||||
bool tipo_riga_handler(TMask_field& f, KEY key);
|
||||
bool codmag_handler(TMask_field& f, KEY key);
|
||||
bool codmag_coll_handler(TMask_field& f, KEY key);
|
||||
bool codart_handler(TMask_field& f, KEY key);
|
||||
|
17
ve/verig.uml
17
ve/verig.uml
@ -46,27 +46,12 @@ BEGIN
|
||||
PROMPT 2 1 "Lordo "
|
||||
END
|
||||
|
||||
STRING FR_TIPORIGA 2
|
||||
LIST FR_TIPORIGA 2 50
|
||||
BEGIN
|
||||
PROMPT 2 2 "Tipo riga "
|
||||
USE %TRI
|
||||
IN CODTAB FR_TIPORIGA
|
||||
OU FR_DESTIPORIGA S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "DG"
|
||||
FIELD TIPORIGA
|
||||
END
|
||||
|
||||
#ifdef FULL_SCREEN
|
||||
STRING FR_DESTIPORIGA 50
|
||||
#else
|
||||
STRING FR_DESTIPORIGA 25
|
||||
#endif
|
||||
BEGIN
|
||||
PROMPT 22 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
IFDEF(FLD_CODMAG)
|
||||
STRING FR_CODMAG 3
|
||||
BEGIN
|
||||
|
Loading…
x
Reference in New Issue
Block a user