Gestione movimeti di magazzino

Piu correzioni varie


git-svn-id: svn://10.65.10.50/trunk@4768 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-06-27 09:21:13 +00:00
parent 8c639919bd
commit 720b374a40
39 changed files with 928 additions and 284 deletions

View File

@ -184,6 +184,11 @@ BEGIN
PROMPT 2 9 "Stato iniziale "
FLAGS "U"
FIELD S7[1,1]
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_1
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_1 CODTAB
CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato iniziale"
END
@ -192,6 +197,12 @@ STRING F_STATO_I_DOC_I_2 1
BEGIN
PROMPT 30 9 ""
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_2
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_2 CODTAB
CHECKTYPE NORMAL
FIELD S7[2,2]
END
@ -199,6 +210,12 @@ STRING F_STATO_I_DOC_I_3 1
BEGIN
PROMPT 39 9 ""
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_3
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_3 CODTAB
CHECKTYPE NORMAL
FIELD S7[3,3]
END
@ -206,6 +223,12 @@ STRING F_STATO_I_DOC_I_4 1
BEGIN
PROMPT 48 9 ""
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_4
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_4 CODTAB
CHECKTYPE NORMAL
FIELD S7[4,4]
END
@ -213,6 +236,12 @@ STRING F_STATO_I_DOC_I_5 1
BEGIN
PROMPT 57 9 ""
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO_I_DOC_I_5
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_I_DOC_I_5 CODTAB
CHECKTYPE NORMAL
FIELD S7[5,5]
END
@ -221,6 +250,11 @@ BEGIN
PROMPT 2 10 "Stato finale "
FLAGS "U"
FIELD S4
USE %STD
INPUT CODTAB F_STATO_F_DOC_I
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_F_DOC_I CODTAB
CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato finale"
END
@ -248,6 +282,11 @@ BEGIN
PROMPT 2 14 "Stato finale "
FLAGS "U"
FIELD S9
USE %STD
INPUT CODTAB F_STATO_F_DOC_F
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_F_DOC_F CODTAB
CHECKTYPE REQUIRED
WARNING "E' necessario specificare uno stato finale"
END
@ -298,7 +337,7 @@ END
STRING F_APPLICAZIONE 20
BEGIN
PROMPT 2 19 "Applicazione esterna"
PROMPT 2 19 "Applicazione "
FIELD S3
END

View File

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

View File

@ -14,12 +14,6 @@ PAGE "Numerazione documenti" -1 -1 60 14
FLAG "R"
END
// GROUPBOX DLG_NULL 84 13
// BEGIN
// PROMPT 1 5 ""
// FLAG "R"
// END
STRING F_CODTAB 4
BEGIN
PROMPT 2 2 "Cod. numerazione "
@ -81,26 +75,30 @@ PAGE "Tipi documento validi" -1 -1 60 14
GROUPBOX DLG_NULL 70 15
BEGIN
PROMPT 1 1 ""
// FLAG "R"
PROMPT 1 1 "Tipi di documento validi per la numerazione"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 2 "Tipi di documento validi per la numerazione"
END
LIST F_TIPO 24
BEGIN
PROMPT 2 2 "Tipo dei documenti "
FIELD I1
ITEM "0|Altro"
ITEM "1|Bolla"
ITEM "2|Fattura"
ITEM "3|Ordine"
END
STRING F_TIPODOC1 4
BEGIN
PROMPT 2 4 ""
FLAGS "U"
USE %TIP
USE %TIP SELECT I1==#F_TIPO
INPUT CODTAB F_TIPODOC1
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC1 CODTAB
OUTPUT F_DESDOC1 S0
HELP "Tipo di documento 1"
WARNING "Tipo documento errato"
FIELD S2[1,4]
CHECKTYPE NORMAL
END
@ -108,125 +106,255 @@ PAGE "Tipi documento validi" -1 -1 60 14
STRING F_DESDOC1 50
BEGIN
PROMPT 12 4 ""
USE %TIP KEY 2
USE %TIP KEY 2 SELECT I1==#F_TIPO
INPUT S0 F_DESDOC1
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC1 CODTAB
OUTPUT F_DESDOC1 S0
HELP "Tipo di documento 1"
COPY OUTPUT F_TIPODOC1
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC2 4
BEGIN
PROMPT 2 6 ""
PROMPT 2 5 ""
FLAGS "U"
USE %TIP
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC2 CODTAB
OUTPUT F_DESDOC2 S0
HELP "Tipo di documento 2"
WARNING "Tipo documento errato"
FIELD S2[5,8]
CHECKTYPE NORMAL
END
STRING F_DESDOC2 50
BEGIN
PROMPT 12 6 ""
USE %TIP KEY 2
PROMPT 12 5 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC2
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC2 CODTAB
OUTPUT F_DESDOC2 S0
HELP "Tipo di documento 2"
COPY OUTPUT F_TIPODOC2
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC3 4
BEGIN
PROMPT 2 8 ""
PROMPT 2 6 ""
FLAGS "U"
USE %TIP
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC3
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC3 CODTAB
OUTPUT F_DESDOC3 S0
HELP "Tipo di documento 3"
WARNING "Tipo documento errato"
FIELD S2[9,12]
CHECKTYPE NORMAL
END
STRING F_DESDOC3 50
BEGIN
PROMPT 12 8 ""
USE %TIP KEY 2
PROMPT 12 6 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC3
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC3 CODTAB
OUTPUT F_DESDOC3 S0
HELP "Tipo di documento 3"
COPY OUTPUT F_TIPODOC3
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC4 4
BEGIN
PROMPT 2 10 ""
PROMPT 2 7 ""
FLAGS "U"
USE %TIP
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC4
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC4 CODTAB
OUTPUT F_DESDOC4 S0
HELP "Tipo di documento 4"
WARNING "Tipo documento errato"
FIELD S2[13,16]
CHECKTYPE NORMAL
END
STRING F_DESDOC4 50
BEGIN
PROMPT 12 10 ""
USE %TIP KEY 2
PROMPT 12 7 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC4
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC4 CODTAB
OUTPUT F_DESDOC4 S0
HELP "Tipo di documento 4"
COPY OUTPUT F_TIPODOC4
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC5 4
BEGIN
PROMPT 2 12 ""
PROMPT 2 8 ""
FLAGS "U"
USE %TIP
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC5
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC5 CODTAB
OUTPUT F_DESDOC5 S0
HELP "Tipo di documento 5"
WARNING "Tipo documento errato"
FIELD S2[17,20]
CHECKTYPE NORMAL
END
STRING F_DESDOC5 50
BEGIN
PROMPT 12 12 ""
USE %TIP KEY 2
PROMPT 12 8 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC5
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_TIPODOC5 CODTAB
OUTPUT F_DESDOC5 S0
HELP "Tipo di documento 5"
COPY OUTPUT F_TIPODOC5
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC6 4
BEGIN
PROMPT 2 9 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC6
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC6 CODTAB
OUTPUT F_DESDOC6 S0
WARNING "Tipo documento errato"
FIELD S2[21,24]
CHECKTYPE NORMAL
END
STRING F_DESDOC6 50
BEGIN
PROMPT 12 9 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC6
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC6
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC7 4
BEGIN
PROMPT 2 10 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC7
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC7 CODTAB
OUTPUT F_DESDOC7 S0
WARNING "Tipo documento errato"
FIELD S2[25,28]
CHECKTYPE NORMAL
END
STRING F_DESDOC7 50
BEGIN
PROMPT 12 10 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC7
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC7
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC8 4
BEGIN
PROMPT 2 11 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC8
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC8 CODTAB
OUTPUT F_DESDOC8 S0
WARNING "Tipo documento errato"
FIELD S2[29,32]
CHECKTYPE NORMAL
END
STRING F_DESDOC8 50
BEGIN
PROMPT 12 11 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC8
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC8
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC9 4
BEGIN
PROMPT 2 12 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC9
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC9 CODTAB
OUTPUT F_DESDOC9 S0
WARNING "Tipo documento errato"
FIELD S2[33,36]
CHECKTYPE NORMAL
END
STRING F_DESDOC9 50
BEGIN
PROMPT 12 12 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC9
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC9
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC10 4
BEGIN
PROMPT 2 13 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC10
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC10 CODTAB
OUTPUT F_DESDOC10 S0
WARNING "Tipo documento errato"
FIELD S2[37,40]
CHECKTYPE NORMAL
END
STRING F_DESDOC10 50
BEGIN
PROMPT 12 13 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC10
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC10
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END

View File

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

View File

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

View File

@ -72,9 +72,19 @@ BEGIN
WARNING "Il numero di copie deve essere positivo"
END
LIST F_TIPO 24
BEGIN
PROMPT 2 12 "Tipo del documento "
FIELD I1
ITEM "0|Altro" MESSAGE ENABLE,2@
ITEM "1|Bolla" MESSAGE CLEAR,2@
ITEM "2|Fattura" MESSAGE ENABLE,2@
ITEM "3|Ordine" MESSAGE CLEAR,2@
END
STRING F_CODCAUS 3
BEGIN
PROMPT 2 12 "Codice causale "
PROMPT 2 13 "Codice causale contabile "
FIELD S6
USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS
@ -83,12 +93,12 @@ BEGIN
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCAUS DESCR
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESCAUS 50
BEGIN
PROMPT 2 13 "Descrizione causale "
FLAG "U"
PROMPT 2 14 "Descrizione "
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCAUS
DISPLAY "Descrizione@50" DESCR
@ -96,6 +106,7 @@ BEGIN
OUTPUT F_DESCAUS DESCR
OUTPUT F_CODCAUS CODCAUS
CHECKTYPE NORMAL
GROUP 2
END
BOOLEAN F_SPESEAUT
@ -104,16 +115,58 @@ BEGIN
FIELD B0
END
LIST F_TIPO 10
BOOLEAN F_MOVMAG
BEGIN
PROMPT 2 17 "Tipo del documento "
FIELD I1
ITEM "0|Altro"
ITEM "1|Fattura"
ITEM "2|Bolla"
ITEM "3|Ordine"
PROMPT 2 16 "Movimenti di magazzino a partire dallo stato "
FIELD B1
MESSAGE FALSE CLEAR,1@
MESSAGE TRUE ENABLE,1@
END
STRING F_STATO_MOV 1
BEGIN
PROMPT 50 16 ""
FIELD S7
USE %STD
INPUT CODTAB F_STATO_MOV
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_MOV CODTAB
CHECKYTPE NORMAL
FLAGS "U"
GROUP 1
END
STRING F_CAUS_MAG 4
BEGIN
PROMPT 2 17 "Codice causale magazzino "
FIELD S8
USE CAU
INPUT CODTAB F_CAUS_MAG
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CAUS_MAG CODTAB
OUTPUT F_DESCAUS_MAG S0
CHECKYTPE REQUIRED
FLAGS "U"
ADD RUN mg0 -0 CAU
GROUP 1
END
STRING F_DESCAUS_MAG 50
BEGIN
PROMPT 2 18 "Descrizione "
USE CAU KEY 2
INPUT S0 F_DESCAUS_MAg
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CAUS_MAG
ADD RUN mg0 -0 CAU
CHECKTYPE NORMAL
GROUP 1
END
ENDPAGE
ENDMASK

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
34
32
CODNUM|1|4|0|
36
CODNUM|1|4|0|Codice Numeriazione
ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisoria <D>efinitiva
NDOC|3|7|0|N. documento
@ -10,6 +10,8 @@ TIPORIGA|1|3|0|Tipo riga
GENERATA|8|1|0|Riga generata
CODMAG|1|5|0|Codice magazzino e deposito
CODART|1|20|0|Codice articolo, codice spesa o codice prestazione
CODARTMAG|1|20|0|(=CODART se codice articolo di magazzino, vuoto altrimenti)
CHECKED|8|1|0|CODARTMAG verrificato
LIVELLO|1|15|0|Codice di giacenza
DESCR|1|50|0|Descrizione
DESCLUNGA|8|1|0|Descrizione estesa caricata
@ -30,7 +32,9 @@ IMPFISUN|8|1|0|Flag importo fisso unitario
CODIVA|1|4|0|Codice IVA
ADDIVA|8|1|0|Addebito IVA
ASPBENI|1|2|0|Aspetto dei beni
G1|11|10|0|????
PSPESA|4|5|2|Percentuale di spesa
CAUSMAG|1|4|0|Causale di magazzino
MOVMAG|3|7|0|Numero di movimento id magazzino
CODMAGC|1|5|0|Codice di magazzino per causale collegata
1
CODNUM+ANNO+PROVV+NDOC+NRIGA|

View File

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

View File

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

View File

@ -10,6 +10,10 @@
#include "veini.h"
#endif
#ifndef __MODAUT_H
#include <modaut.h>
#endif
#ifndef __MGLIB_H
#include "..\mg\mglib.h"
#endif
@ -153,7 +157,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
if (r < app()._doc->rows())
{
TRiga_documento & riga = (*(app()._doc))[r + 1];
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
if (riga.is_omaggio() && riga.is_generata())
{
ss.destroy(r + 1);
app()._doc->destroy_row(r + 1, TRUE);
@ -166,7 +170,7 @@ bool TMotore_application::ss_handler( TSheet_field& ss, int r, KEY key )
if (r < app()._doc->rows())
{
TRiga_documento & riga = (*(app()._doc))[r + 1];
if (riga.tipo().tipo() == RIGA_OMAGGI && riga.generata())
if (riga.is_omaggio() && riga.is_generata())
return FALSE;
}
TMask & emask = app().edit_mask();
@ -193,23 +197,21 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
// Ottengo la maschera
TMask& m = f.mask( );
if (key == K_TAB && f.focusdirty())
if (key == K_TAB && f.to_check(key, TRUE))
{
TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
if ( tabnum.good())
{
// Copio la descrizione della numerazione
m.set( F_DESNUM, tabnum.get( "S0" ) );
// Copio i tipi di documento validi per la numerazione
const TString tipidocs( tabnum.get( "S2" ) );
m.set( F_TIPIDOCS, tipidocs );
TString16 curtipo( m.get( F_TIPODOC ) );
// Propone il primo tipo di documento come default
m.set( F_TIPODOC, tipidocs.left( 4 ) );
if (app()._cod_num)
delete app()._cod_num;
app()._cod_num = new TCodice_numerazione(tabnum.curr());
TCodice_numerazione * c = app()._cod_num;
m.set( F_DESNUM, c->descrizione());
// Propone il primo tipo di documento come default
m.set( F_TIPODOC, c->tipo_doc(0));
m.send_key( K_TAB, F_TIPODOC );
// Se per questa numerazione h abilitata le numerazione provvisoria
if ( tabnum.get_bool ( "B0" ) )
if (c->num_provv())
{
// Setta di default la numerazione provvisoria
m.set( F_PROVV, "P" );
@ -227,7 +229,6 @@ bool TMotore_application::num_handler( TMask_field& f, KEY key )
else
{
m.set( F_DESNUM, "" );
m.set( F_TIPIDOCS, "" );
m.set( F_TIPODOC, "" );
}
}
@ -331,35 +332,16 @@ bool TMotore_application::tip_handler( TMask_field& f, KEY key )
TMask& m = f.mask( );
if ( key == K_TAB && m.is_running( ) && m.get(F_TIPODOC).not_empty())
{
TString tipi_consentiti( m.get( F_TIPIDOCS ) );
TString16 tipo( f.get( ) );
tipo.trim( );
bool tipo_valido = FALSE;
for ( int i = 0; i < 10; i ++ )
const TString16 tipo(f.get());
TCodice_numerazione * c = app()._cod_num;
int last = c->ntipi_doc();
for (int i = 0; i < last; i++ )
{
TString16 curtipo( tipi_consentiti.mid( i * 4, 4 ) );
curtipo.trim( );
if ( curtipo == tipo )
{
tipo_valido = TRUE;
break;
}
}
if ( ! tipo_valido )
{
message_box( "Tipo non valido per la numerazione selezionata!" );
f.set( "" );
return FALSE;
}
}
if ( key == K_ENTER && m.is_running( ) )
{ TString tipo( f.get( ) );
if ( tipo.blank( ) )
{
message_box( "Occorre un tipo documento per inserire un documento!" );
m.first_focus( F_TIPODOC );
return FALSE;
const TString16 curtipo(c->tipo_doc(i));
if (curtipo == tipo)
return TRUE;
}
return message_box( "Tipo non valido per la numerazione selezionata!" );
}
return TRUE;
}
@ -429,6 +411,8 @@ void TMotore_application::configura_sheet( TSheet_field& sheet, TConfig& config
}
to_delete.reset(0);
to_delete.reset(1);
to_delete.set(sheet.cid2index(FR_CODARTMAG));
to_delete.set(sheet.cid2index(FR_CHECKED));
const int sconto_col = sheet.cid2index(FR_SCONTO);
if (to_delete[sconto_col] == FALSE)
@ -601,6 +585,13 @@ TMask* TMotore_application::get_mask( int mode )
msk1->enable(F_DESAG, gesage);
msk1->enable(F_CODAGVIS, gesage);
msk1->enable(F_DESAGVIS, gesage);
const bool has_movmag = app().has_module(MGAUT, CHK_DONGLE) && _doc->tipo().mov_mag();
short pos = msk1->id2pos(F_CAUSMAG);
if (pos >= 0)
msk1->fld(pos).show(has_movmag);
pos = msk1->id2pos(F_DESCRMAG);
if (pos >= 0)
msk1->fld(pos).show(has_movmag);
}
else
_sheet = &( TSheet_field& )edit_mask( ).field( F_SHEET );
@ -623,42 +614,32 @@ const char* TMotore_application::get_next_key( )
{
TToken_string key;
TMask& m = curr_mask( );
const TString value = m.get( F_CODNUM );
const TString16 value = m.get( F_CODNUM );
if (value.not_empty())
{
TTable tabnum( "%NUM" );
tabnum.zero( );
tabnum.put( "CODTAB", value );
if ( tabnum.read( ) == NOERR && tabnum.get_bool ( "B1" ))
// Se per questa numerazione h abilitata le numerazione automatica
{
TLocalisamfile doc(LF_DOC);
doc.zero();
doc.put("CODNUM", value);
doc.put("ANNO", m.get(F_ANNO));
doc.put("PROVV", m.get(F_PROVV));
if( _cod_num->auto_num())
{
TLocalisamfile doc(LF_DOC);
doc.zero();
doc.put("CODNUM", value);
doc.put("ANNO", m.get(F_ANNO));
doc.put("PROVV", m.get(F_PROVV));
TRectype cmp_rec(doc.curr()); // record campione
TRectype cmp_rec(doc.curr()); // record campione
doc.put( "NDOC", 9999999L );
if (doc.read(_isgreat) == NOERR)
doc.prev();
doc.put( "NDOC", 9999999L );
if (doc.read(_isgreat) == NOERR)
doc.prev();
const long num = ((doc.curr() == cmp_rec) ? doc.get_long( "NDOC" ) : 0) + 1;
const long num = ((doc.curr() == cmp_rec) ? doc.get_long( "NDOC" ) : 0) + 1;
key.format( "%d|%d", F_NDOC, num);
}
key.format( "%d|%d", F_NDOC, num);
}
return key;
}
int TMotore_application::read( TMask& m )
{
// const int err = _doc->read(_doc->head());
// if ( err == NOERR )
// {
m.autoload(*_rel);
_codnum = m.get(F_CODNUM);
_tipodoc = m.get(F_TIPODOC);
@ -677,8 +658,6 @@ int TMotore_application::read( TMask& m )
rec.autoload(f);
f.check_row(i - 1);
}
// }
// return err;
return NOERR;
}
@ -750,16 +729,20 @@ bool TMotore_application::user_create( )
// Metto in relazione testata e righe
_rel = new TRelation( LF_DOC );
open_files(LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART, LF_TAB, LF_TABCOM, LF_CLIFO,
LF_CFVEN, LF_INDSP, LF_OCCAS, 0);
LF_CFVEN, LF_INDSP, LF_OCCAS, LF_MOVMAG, LF_RMOVMAG, 0);
_doc = new TDocumento;
_rel->lfile().set_curr(_doc);
_doc->set_relation(_rel);
_cod_num = NULL;
_condv = new TCond_vendita(&doc().clifor(), _config_ditta);
_doc->set_condv(_condv);
_msk = new TMask("ve0100a");
query_mask( ).set_handler( F_CODNUM, num_handler );
set_search_field(F_NDOC);
query_mask().set_handler( F_CODNUM, num_handler );
query_mask().set_handler( F_TIPODOC, tip_handler );
_occas_mask = new TMask("ve0100o");
_occas_mask->set_handler( O_CODICE, occas_code_handler );
TConfig utente( CONFIG_USER );
@ -785,6 +768,8 @@ bool TMotore_application::user_destroy( )
// Distruggo la maschera di modifica
if ( _msk != NULL )
delete _msk;
if (_cod_num)
delete _cod_num;
// Distruggo la relazione
delete _rel;

View File

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

View File

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

View File

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

View File

@ -1513,51 +1513,37 @@ SIZE=0700
WARNING=Numero di colli errato o non presente !!!
HELP=Inserisci il numero dei colli
[CAUSMAG1]
[CAUSMAG]
GROUP=2900
X=2
Y=0
FIELDNAME=CAUSMAG1
MSKID=F_CAUSMAG1
FIELDNAME=CAUSMAG
MSKID=F_CAUSMAG
TYPE=T_STRINGA
PROMPT="Causale mag. 1 "
SIZE=3
PROMPT="Causale magazzino "
USE=%CAU
INPUT=CODTAB F_CAUSMAG
DISPLAY="Codice" CODTAB~"Descrizione@50" S0
OUTPUT=F_CAUSMAG CODTAB~F_DESCRMAG S0
WARNING=Causale di magazzino non trovata
SIZE=4
FLAG=U
WARNING=Codice causale non trovato
HELP=Inserisci il codice della causale
[DESCRMAG1]
[DESCRMAG]
GROUP=2900
X=24
X=27
Y=0
MSKID=F_DESCRMAG1
MSKID=F_DESCRMAG
TYPE=T_STRINGA
PROMPT="Causale di magazzino 1 "
PROMPT=""
USE=%CAU KEY 2
INPUT=S0 F_DESCRMAG
DISPLAY="Descrizione@50" S0~"Codice" CODTAB
COPY=OU F_CAUSMAG
WARNING=Causale di magazzino non trovata
SIZE=50
FLAG=U
[CAUSMAG2]
GROUP=2900
X=2
Y=1
FIELDNAME=CAUSMAG2
MSKID=F_CAUSMAG2
TYPE=T_STRINGA
PROMPT="Causale mag.2 "
SIZE=3
FLAG=U
WARNING=Codice causale non trovato
HELP=Inserisci il codice della causale
[DESCRMAG2]
GROUP=2900
X=24
Y=1
MSKID=F_DESCRMAG2
TYPE=T_STRINGA
PROMPT="Causale di magazzino 2 "
SIZE=50
FLAG=U
[BLANK]
GROUP=4000

View File

@ -24,3 +24,8 @@ IMPFISSO|3|1802|Importo Fisso|18
CODIVA|2|4|Cod.IVA|4
ADDIVA|4||Addebito IVA|1
ASPBENI|2|3|Aspetto beni|3
CODCAUS|2|3|Causale Mag.|12
CODMAGC[1,3]|2|3|Mag.Coll.|9
CODMAGC[4,5]|2|2|Dep.Coll.|9
CODARTMAG|2|20|Cod. Art. Mag.|20
CHECKED|4|10|Controllato|11

View File

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

View File

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

View File

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

View File

@ -25,8 +25,8 @@
#include "clifor.h"
#endif
#ifndef __PAGAMENT_H
#include "../cg/pagament.h"
#ifndef __CGPAGAME_H
#include "../cg/cgpagame.h"
#endif
#define RIGA_MERCE 'M'
@ -35,6 +35,7 @@
#define RIGA_SCONTI 'C'
#define RIGA_OMAGGI 'O'
#define RIGA_DESCRIZIONI 'D'
#define MAX_TIPI_DOC 10
class TDocumento;
class TRiga_documento;
@ -220,14 +221,17 @@ public:
bool is_bolla() const { return tipo() == _bolla; }
bool is_ordine() const { return tipo() == _ordine; }
const TString& descrizione() const { return get("S0"); }
const TString& riferimento() const { return get("S1"); }
const TString& imponibile() const { return _imponibile;}
const TString& imposta() const { return _imposta;}
const TString& totale_doc() const { return _totale;}
const TString& totale_netto() const { return _totale_netto; }
const TString& basesconto() const { return _basesconto;}
const TString& spese() const { return _spese;}
const TString & descrizione() const { return get("S0"); }
const TString & riferimento() const { return get("S1"); }
const TString & imponibile() const { return _imponibile;}
const TString & imposta() const { return _imposta;}
const TString & totale_doc() const { return _totale;}
const TString & totale_netto() const { return _totale_netto; }
const TString & basesconto() const { return _basesconto;}
const TString & spese() const { return _spese;}
bool mov_mag() const { return get_bool("B1"); }
const TString & stato_mov() const {return get("S7"); }
const TString & caus_mov() const {return get("S8"); }
TFormula_documento * first_formula() { return succ_formula(TRUE); }
TFormula_documento * succ_formula(bool restart = FALSE);
@ -299,8 +303,18 @@ public:
bool doc_dependent() const;
int numero() const { return get_int("NRIGA");}
void set_numero(int numero) { put("NRIGA", numero);}
bool generata() const { return get_bool("GENERATA");}
void set_generata(bool on = TRUE) { put("GENERATA", on);}
bool is_generata() const { return get_bool("GENERATA");}
void generata(bool on = TRUE) { put("GENERATA", on);}
bool is_merce() const { return tipo().tipo() == 'M';}
bool is_spese() const { return tipo().tipo() == 'S';}
bool is_prestazione() const { return tipo().tipo() == 'P';}
bool is_sconto() const {return tipo().tipo() == 'C';}
bool is_omaggio() const { return tipo().tipo() == 'O';}
bool is_descrizione() const { return tipo().tipo() == 'D';}
bool is_articolo() const;
bool is_checked() const { return get_bool("CHECKED");}
void checked(bool on = TRUE) { put("CHECKED", (bool) on);}
void unchecked() { checked(FALSE);}
// @cmember Assegna il documento corrente
void set_doc(TDocumento * doc) { _doc = doc; }
const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
@ -732,15 +746,19 @@ public:
public:
int read(const char * cod);
const TString& codice() const { return get("CODTAB"); }
const TString& descrizione() const { return get("S0"); }
const TString& prefisso() const { return get("S6"); }
const TString& postfisso() const { return get("S7"); }
const bool manual_num() const { return get_bool("B0"); }
// const bool manual_num() const { return get_bool("B0"); }
const bool num_provv() const { return get_bool("B0"); }
const bool auto_num() const { return get_bool("B1"); }
const TString& tipo_doc1() { return get("S2").mid(0,4);}
const TString& tipo_doc2() { return get("S2").mid(4,4);}
const TString& tipo_doc3() { return get("S2").mid(8,4);}
const TString& tipo_doc4() { return get("S2").mid(12,4);}
const TString& tipo_doc5() { return get("S2").mid(16,4);}
// const TString& tipo_doc1() { return get("S2").mid(0,4);}
// const TString& tipo_doc2() { return get("S2").mid(4,4);}
// const TString& tipo_doc3() { return get("S2").mid(8,4);}
// const TString& tipo_doc4() { return get("S2").mid(12,4);}
// const TString& tipo_doc5() { return get("S2").mid(16,4);}
const TString & tipo_doc(int i) const { CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento"); return ((TString& ) get("S2").mid(i << 2, 4)).trim();}
int ntipi_doc() const {const int l = get("S2").len(); return l ? (((l - 1) >> 2) + 1) : 0;}
const char * complete_num (long num);
int status() { return _status; }

View File

@ -7,6 +7,10 @@
#include <expr.h>
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __VERIG_H
#include "verig.h"
#endif
@ -248,7 +252,7 @@ bool codart_handler( TMask_field& f, KEY key )
}
row_mask.field(FR_LIV1).on_hit();
}
if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_DESCR).empty()))
if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty()))
{
TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask();
TCond_vendita & condv = mask.condv();
@ -264,7 +268,10 @@ bool codart_handler( TMask_field& f, KEY key )
TString80 codart(f.get());
anamag.setkey(1);
anamag.put("CODART", codart);
if (anamag.read() != NOERR)
bool found = anamag.read() == NOERR;
if (found)
row_mask.set(FR_CODARTMAG, codart, TRUE);
else
{
TLocalisamfile codalt(LF_CODCORR);
@ -275,15 +282,18 @@ bool codart_handler( TMask_field& f, KEY key )
codart = codalt.get("CODART");
anamag.zero();
anamag.put("CODART", codart);
if (anamag.read() == NOERR)
f.set(codart);
found = anamag.read() == NOERR;
if (found)
row_mask.set(FR_CODARTMAG, codart, TRUE);
}
}
if (anamag.good())
row_mask.set(FR_CHECKED, "X");
if (!found)
row_mask.set(FR_CODARTMAG, "", TRUE);
else
{
const TString16 lingua = mask.get(F_CODLIN);
const TString codart(row_mask.get(FR_CODART));
const TString codart(row_mask.get(FR_CODARTMAG));
TString desc(anamag.get("DESCR"));
if (lingua.not_empty())
@ -323,6 +333,28 @@ bool codart_handler( TMask_field& f, KEY key )
return TRUE;
}
bool codartmag_handler( TMask_field& f, KEY key )
{
bool to_check = key == K_TAB && f.focusdirty();
TMask & m = f.mask();
if (!to_check)
{
TSheet_field * s = m.get_sheet();
if (s)
to_check = !s->mask().is_running();
}
if (to_check)
{
const bool artmag = f.get().not_empty();
m.show(FR_UMQTA, artmag);
m.show(FR_UMQTA2, !artmag);
}
return TRUE;
}
bool liv_handler( TMask_field& f, KEY key )
{
if (f.to_check(key, TRUE))
@ -769,7 +801,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
real & val = stack.peek_real();
if (_row)
{
if (_row->tipo().tipo() == RIGA_SCONTI)
if (_row->is_sconto())
val = -_row->importo(FALSE, FALSE, ndec);
else
val = _row->importo(FALSE, FALSE, ndec) - _row->importo(TRUE, FALSE, ndec);

View File

@ -5,8 +5,8 @@
#include <applicat.h>
#endif
#ifndef __VE0100C_H
#include "ve0100c.h"
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __VERIG_H
@ -152,6 +152,7 @@ TVariable_mask * TTipo_riga_documento::mask()
_mask->set_handler( FR_LIV2, liv_handler );
_mask->set_handler( FR_LIV3, liv_handler );
_mask->set_handler( FR_UMQTA, umart_handler );
_mask->set_handler( FR_CODARTMAG, codartmag_handler );
_mask->set_handler( FR_DESCR, descr_handler );
_mask->set_handler( FR_QTA, qta_handler );
}
@ -267,7 +268,7 @@ bool TRiga_documento::sola_descrizione() const
void TRiga_documento::forza_sola_descrizione()
{
// In realta' il test serve anche a caricare la lista dei tipi riga!
if (!tipo_valido() || tipo().tipo() != RIGA_DESCRIZIONI)
if (!tipo_valido() || !is_descrizione())
{
_tipi.restart();
for (const TObject* o = _tipi.get(); o; o = _tipi.get())
@ -457,7 +458,7 @@ real TRiga_documento::imponibile() const
if (field.not_empty())
{
if (tipo().tipo() == RIGA_OMAGGI && _iva_calc)
if (is_omaggio() && _iva_calc)
{
TDocumento_variable_field * f = (TDocumento_variable_field *) variable_field(field);
CHECKS(f, "Field UNKNOWN : ", field);
@ -519,6 +520,12 @@ void TRiga_documento::put_str(const char* fieldname, const char* val)
}
}
bool TRiga_documento::is_articolo() const
{
const char t = tipo().tipo();
return (t == RIGA_MERCE || t == RIGA_OMAGGI) && get("CODARTMAG").not_empty();
}
void TRiga_documento::zero(const char * fieldname)
{
if (strcmp(fieldname, "TIPORIGA") == 0)
@ -593,6 +600,14 @@ void TRiga_documento::autosave(TSheet_field & f)
put( "CODIVA", row.get( f.cid2index(FR_CODIVA )) );
put( "ADDIVA", row.get( f.cid2index(FR_ADDIVA )) );
put( "ASPBENI", row.get( f.cid2index(FR_ASPBENI )) );
put( "CAUSMAG", row.get( f.cid2index(FR_CAUS )) );
TString16 codmagc(row.get(f.cid2index(FR_CODMAGC)));
codmagc.left_just(3);
codmagc << row.get( f.cid2index(FR_CODDEPC ));
put( "CODMAGC", codmagc);
put( "CODARTMAG", row.get( f.cid2index(FR_CODARTMAG )) );
put( "CHECKED", row.get( f.cid2index(FR_CHECKED )) );
}
}
@ -659,5 +674,11 @@ void TRiga_documento::autoload(TSheet_field & f)
row.add( get( "CODIVA" ), f.cid2index(FR_CODIVA ));
row.add( get( "ADDIVA" ), f.cid2index(FR_ADDIVA ));
row.add( get( "ASPBENI" ), f.cid2index(FR_ASPBENI ));
row.add( get( "CAUSMAG" ), f.cid2index(FR_CAUS ));
const TString codmagc(get("CODMAGC"));
row.add( codmagc.left(3), f.cid2index(FR_CODMAGC ));
row.add( codmagc.mid(3), f.cid2index(FR_CODDEPC ));
row.add( get( "CODARTMAG" ), f.cid2index(FR_CODARTMAG));
row.add( get( "CHECKED" ), f.cid2index(FR_CHECKED));
}

View File

@ -10,6 +10,10 @@
#include "veuml.h"
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#ifndef __UTILITY_H
#include <utility.h>
#endif
@ -18,15 +22,49 @@
#include "veini.h"
#endif
#ifndef __DEFMASK_H
//#include <defmask.h>
#ifndef __MGLIB_H
#include "../mg/mglib.h"
#endif
#ifndef __SCONTI_H
#include "sconti.h"
#endif
#ifndef __MODAUT_H
#include <modaut.h>
#endif
///////////////////////////////////////////////////////////
// Movimento di magazzino
///////////////////////////////////////////////////////////
class TMov_mag_doc : public TMov_mag
{
const TDocumento * _doc;
protected:
virtual const char * codmag_rauto(int r) const;
public:
TMov_mag_doc(const TDocumento * d) : _doc(d) {}
virtual ~TMov_mag_doc() {}
};
const char * TMov_mag_doc::codmag_rauto(int r) const
{
const int rows = _doc->physical_rows();
const long num = get_long(MOVMAG_NUMREG);
for (int i = 1; r > 0 && i <= rows; i++)
if ((*_doc)[i].is_articolo() && num == (*_doc)[i].get_long("MOVMAG"))
r--;
i--;
if (i > rows)
return NULL;
const TString & codmag = (*_doc)[i].get("CODMAGC");
return codmag.empty() ? NULL : (const char *) codmag;
}
///////////////////////////////////////////////////////////
// Tipo documento
///////////////////////////////////////////////////////////
@ -610,6 +648,10 @@ void TDocumento::dirty_fields()
int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
{
const bool nuovo = _nuovo || numero() <= 0; // E' nuovo di zecca!
const bool check_movmag = main_app().has_module(MGAUT, CHK_DONGLE) && tipo().mov_mag();
const TString16 statomag(tipo().stato_mov());
const bool do_movmag = get("STATO") >= statomag;
if (nuovo && re) // quindi ...
re = FALSE; // ... non fare la rewrite
@ -617,6 +659,136 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
const TString80 occ_code(occas().get(OCC_CFPI));
((TDocumento *)this)->put("OCFPI", occ_code);
long num = get_long("MOVMAG");
const int rows = physical_rows();
if (check_movmag)
{
TMov_mag_doc mov(this);
TLocalisamfile m(LF_MOVMAG);
mov.zero();
if (num == 0 && do_movmag)
{
num = atol(mov.get_next_key());
mov.put(MOVMAG_NUMREG, num);
while (mov.write(m) == _isreinsert)
{
num++;
mov.put(MOVMAG_NUMREG, num);
}
((TDocumento *)this)->put("MOVMAG", num);
}
if (num > 0)
{
mov.put(MOVMAG_NUMREG, num);
while (mov.read(m, _isequal, _testandlock) == _islocked)
message_box("Movimento di magazzino in uso da parte di un'altro utente");
if (do_movmag)
{
TRecord_array & b = mov.body();
const int mag_rows = mov.rows();
for (int i = mag_rows; i > 0; i--)
{
TRectype & r = b[i];
if (r.get_char(RMOVMAG_TIPORIGA) == riga_dadocumento)
{
b.destroy_row(i);
if (b.exist(i + 1) &&
b[i + 1].get_char(RMOVMAG_TIPORIGA) == riga_automatica)
b.destroy_row(i + 1);
}
}
b.pack();
TDate d(get("DATADOC"));
mov.put(MOVMAG_ANNOES, mov.codice_esercizio(d));
mov.put(MOVMAG_DATAREG, d);
mov.put(MOVMAG_DATACOMP, d);
mov.put(MOVMAG_DOCPROVV, get("PROVV"));
mov.put(MOVMAG_ANNODOC, get("ANNO"));;
mov.put(MOVMAG_CODNUM, get("CODNUM"));
const long numdoc = get_long("NDOC");
mov.put(MOVMAG_NUMDOC, numdoc);
mov.put(MOVMAG_CATVEN, get("CATVEN"));
mov.put(MOVMAG_CODLIST, get("CODLIST"));
mov.put(MOVMAG_CODCONT, get("CODCONT"));
mov.put(MOVMAG_CODCAMP, get("CODCAMP"));
mov.put(MOVMAG_CODCAUS, get("CAUSMAG"));
mov.put(MOVMAG_DESCR, format("%s n.ro %ld del %s", (const char *) tipo().get("S1"), numdoc, (const char *) d.string()));
mov.put(MOVMAG_TIPOCF, get("TIPOCF"));
mov.put(MOVMAG_CODCF, get("CODCF"));
int j = 1;
for (i = 1; i <= rows; i++)
{
TRiga_documento & r = ((TDocumento *)this)->row(i);
if (r.is_articolo())
{
long r_num = r.get_long("MOVMAG");
if (r_num == 0)
{
r_num = num;
r.put("MOVMAG", r_num);
}
if (r_num == num)
{
TRectype & rm = mov.insert_row(j++);
rm.put(RMOVMAG_CODMAG, r.get("CODMAG"));
rm.put(RMOVMAG_CODART, r.get("CODARTMAG"));
rm.put(RMOVMAG_LIVGIAC, r.get("LIVELLO"));
rm.put(RMOVMAG_UM, r.get("UMQTA"));
rm.put(RMOVMAG_QUANT, r.get("QTA"));
rm.put(RMOVMAG_PREZZO, r.get("PREZZO"));
rm.put(RMOVMAG_CODCAUS, r.get("CAUSMAG"));
rm.put(RMOVMAG_TIPORIGA, (char) riga_dadocumento);
}
}
}
mov.rewrite(m);
}
else
{
mov.remove(m);
for (int i = rows; i > 0; i--)
{
TRiga_documento & r = ((TDocumento *) this)->row(i);
long r_num = r.get_long("MOVMAG");
if (r_num == num)
r.zero("MOVMAG");
}
((TDocumento *)this)->zero("MOVMAG");
}
}
TLocalisamfile anamag(LF_ANAMAG);
TLocalisamfile codalt(LF_CODCORR);
codalt.setkey(2);
for (int i = rows; i > 0; i--)
{
TRiga_documento & r = ((TDocumento *) this)->row(i);
if (!r.is_checked())
{
const TString & codart = r.get("CODART");
anamag.put("CODART", codart);
if (anamag.read() == NOERR)
r.put("CODARTMAG", codart);
else
{
codalt.put("CODARTALT", codart);
if (codalt.read() == NOERR)
r.put("CODARTMAG", codalt.get("CODART"));
}
r.checked();
}
}
}
if (re)
{
err = _rows.write(re);
@ -662,7 +834,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
}
return err;
}
// eliminare anche il mov di mag. ??????
int TDocumento::remove(TBaseisamfile& f) const
{
int err = _rows.remove();
@ -1020,7 +1192,7 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
{
TRiga_documento & r = row(i);
if (r.tipo().tipo() == RIGA_SPESEDOC && r.generata())
if (r.tipo().tipo() == RIGA_SPESEDOC && r.is_generata())
{
if (preserve_old)
return;
@ -1047,7 +1219,7 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old,
TRiga_documento & riga = new_row(tipo);
riga.put("CODART", s);
riga.set_generata();
riga.generata();
riga.put("DESCR", sp.descrizione());
switch (sp.tipo())
{

View File

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

View File

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

View File

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

View File

@ -5,5 +5,11 @@ enum TTipo_calcolo { _nessun_calcolo, _qtaprezzo, _valore, _percentuale, _sconto
void row_set_handler( TMask& m, const int field, const int index );
bool liv_handler( TMask_field& f, KEY key );
bool sppr_handler( TMask_field& f, KEY key );
bool codartmag_handler( TMask_field& f, KEY key );
bool iva_handler( TMask_field& f, KEY key );
void sppr_calc(TRectype & rec, const TString & valuta_doc, const real & cambio, real & prezzo);
void row_set_handler(TMask& m, const int field, const int index);
bool codart_handler(TMask_field& f, KEY key);
bool umart_handler(TMask_field& f, KEY key);
bool descr_handler(TMask_field& f, KEY key);
bool qta_handler(TMask_field& f, KEY key);

View File

@ -26,6 +26,8 @@
// UMQTA UMQTASP UMQTAPR alternativi definirne uno solo
#define FR_UMQTA 111
#define FR_UMQTASP 111
// UMQTA2 da non definire
#define FR_UMQTA2 211
// QTA PERCSP alternativi definirne uno solo
#define FR_QTA 112
#define FR_PERCSP 112
@ -46,7 +48,13 @@
#define FR_CODIVA 124
#define FR_ADDIVA 125
#define FR_ASPBENI 126
#define FR_END 127
#define FR_CAUS 127
#define FR_CODMAGC 128
#define FR_CODDEPC 129
// CODARTMAG CHECKED da non definire
#define FR_CODARTMAG 130
#define FR_CHECKED 131
#define FR_END 132
#define MAX_COLUMNS FR_END-FR_STATORIGA
#define FR_DESMAG 150
@ -54,4 +62,7 @@
#define FR_DESIVA 152
#define FR_DESASP 153
#define FR_DESTIPORIGA 154
#define FR_DESCRCAUS 155
#define FR_DESMAGC 156
#define FR_DESDEPC 157
#endif

View File

@ -108,7 +108,7 @@ IFDEF(F_CODDEP)
STRING FR_CODDEP 2
BEGIN
IFDEF(X_CODDEP)
PROMPT X_DESMAG Y_DESMAG PR_DESMAG
PROMPT X_CODDEP Y_CODDEP PR_CODDEP
ELSEIF
PROMPT 2 4 "Deposito "
ENDIF
@ -173,6 +173,20 @@ ENDIF
ADD RUN ve2 -3
END
STRING FR_CODARTMAG 20
BEGIN
PROMPT 50 50 ""
FIELD CODARTMAG
FLAGS "G"
END
BOOLEAN FR_CHECKED
BEGIN
PROMPT 51 50 ""
FIELD CHECKED
FLAGS "D"
END
STRING FR_LIV1 10
BEGIN
IFDEF(X_LIV1)
@ -478,7 +492,7 @@ ELSEIF
ENDIF
USE LF_UMART KEY 2
JOIN %UMS INTO CODTAB=UM
INPUT CODART FR_CODART SE
INPUT CODART FR_CODARTMAG SE
INPUT UM FR_UMQTA
DISPLAY "Codice@20" UM
DISPLAY "Descrizione@50" %UMS->S0
@ -491,6 +505,27 @@ ELSEIF
CHECKTYPE NORMAL
ENDIF
END
STRING FR_UMQTA2 2
BEGIN
IFDEF(X_UMQTA)
PROMPT X_UMQTA Y_UMQTA PR_UMQTA
ELSEIF
PROMPT 2 9 "U.M. "
ENDIF
USE %UMS
INPUT CODTAB FR_UMQTA2
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FR_UMQTA2 CODTAB
FIELD UMQTA
FLAG "U"
IFDEF(CH_UMQTA)
CHECKTYPE CH_UMQTA
ELSEIF
CHECKTYPE NORMAL
ENDIF
END
ENDIF
IFDEF(F_UMQTASP)
@ -775,6 +810,131 @@ END
ENDIF
ENDIF
IFDEF(F_CAUS)
STRING FR_CAUS 4
BEGIN
IFDEF(X_CAUS)
PROMPT X_CAUS Y_CAUS PR_CAUS
ELSEIF
PROMPT 2 18 "Caus.magazz. "
ENDIF
USE %CAU
INPUT CODTAB FR_CAUS
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FR_CAUS CODTAB
OUTPUT FR_DESCRCAUS S0
FLAGS "U"
IFDEF(CH_CAUS)
CHECKTYPE CH_CAUS
ELSEIF
CHECKTYPE NORMAL
ENDIF
FIELD CODCAUS
END
IFDEF(F_DESCRCAUS)
STRING FR_DESCRCAUS 50
BEGIN
IFDEF(X_DESCRCAUS)
PROMPT X_DESCRCAUS Y_DESCRCAUS PR_DESCRCAUS
ELSEIF
PROMPT 22 18 ""
ENDIF
FLAGS "D"
END
ENDIF
ENDIF
IFDEF(F_CODMAGC)
STRING FR_CODMAGC 3
BEGIN
IFDEF(X_CODMAG)
PROMPT X_CODMAG Y_CODMAG PR_CODMAG
ELSEIF
PROMPT 2 19 "Mag.colleg. "
ENDIF
COPY USE FR_CODMAG
INPUT CODTAB FR_CODMAGC
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT FR_CODMAGC CODTAB
OUTPUT FR_DESMAGC S0
WARNING "Magazzino assente"
FLAGS "U"
IFDEF(FL_CODMAGC)
FLAGS FL_CODMAGC
ENDIF
KEY 1
IFDEF(CH_CODMAGC)
CHECKTYPE CH_CODMAGC
ELSEIF
CHECKTYPE NORMAL
ENDIF
FIELD CODMAGC[1,3]
END
IFDEF(F_DESMAGC)
STRING FR_DESMAGC 50
BEGIN
IFDEF(X_DESMAGC)
PROMPT X_DESMAGC Y_DESMAGC PR_DESMAGC
ELSEIF
PROMPT 22 19 ""
ENDIF
IFDEF(FL_DESMAGC)
FLAGS FL_DESMAGC
ENDIF
FLAGS "D"
END
ENDIF
ENDIF
IFDEF(F_CODDEPC)
STRING FR_CODDEPC 2
BEGIN
IFDEF(X_CODDEPC)
PROMPT X_CODDEPC Y_CODDEPC PR_CODDEPC
ELSEIF
PROMPT 2 20 "Deposito "
ENDIF
COPY USE FR_CODDEP
INPUT CODTAB[1,3] FR_CODMAGC
INPUT CODTAB[4,5] FR_CODDEPC
DISPLAY "Codice mag." CODTAB[1,3]
DISPLAY "Codice dep." CODTAB[4,5]
DISPLAY "Descrizione@50" S0
OUTPUT FR_CODMAGC CODTAB[1,3]
OUTPUT FR_CODDEPC CODTAB[4,5]
OUTPUT FR_DESDEPC S0
MESSAGE DIRTY,FR_CODMAGC|K_TAB,FR_CODMAGC
IFDEF(CH_CODDEPC)
CHECKTYPE CH_CODDEPC
ELSEIF
CHECKTYPE NORMAL
ENDIF
WARNING "Deposito assente"
IFDEF(FL_CODDEPC)
FLAGS FL_CODDEPC
ENDIF
FLAGS "U"
KEY 1
FIELD CODMAGC[4,5]
END
IFDEF(F_DESDEPC)
STRING FR_DESDEPC 50
BEGIN
IFDEF(X_DESDEPC)
PROMPT X_DESDEPC Y_DESDEPC PR_DESDEPC
ELSEIF
PROMPT 22 20 ""
ENDIF
FLAGS "D"
END
ENDIF
ENDIF
#ifndef FULL_SCREEN
BUTTON DLG_OK 9 2
BEGIN

View File

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

View File

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

View File

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

View File

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

View File

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