Migliorato supporto per elaborazioni esterne

git-svn-id: svn://10.65.10.50/branches/R_10_00@23027 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2014-12-10 16:19:08 +00:00
parent 07a1b81dad
commit d4f58ea1ec
26 changed files with 5716 additions and 5348 deletions

View File

@ -1,3 +1,3 @@
33 33
0 0
$doc|0|0|687|0|Documenti di vendita||| $doc|0|0|723|0|Documenti di vendita|||

View File

@ -1,5 +1,5 @@
33 33
95 97
CODNUM|1|4|0|Codice della numerazione CODNUM|1|4|0|Codice della numerazione
ANNO|2|4|0|Anno ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione <P>rovvisorio <D>efinitivo PROVV|1|1|0|Tipo numerazione <P>rovvisorio <D>efinitivo
@ -74,7 +74,7 @@ CODNOTE|1|2|0|Codice note cliente
NOTE|11|10|0|Note NOTE|11|10|0|Note
G1|11|10|0|Campo generale 1 G1|11|10|0|Campo generale 1
DATAAGG|5|8|0|Data ultimo aggiornamento DATAAGG|5|8|0|Data ultimo aggiornamento
UTENTE|1|10|0|Utente ultimo aggiornamento UTENTE|1|16|0|Utente ultimo aggiornamento
COLL_GOLEM|11|10|0|Collegamento lista di GOLEM COLL_GOLEM|11|10|0|Collegamento lista di GOLEM
DOCEVASO|8|1|0|Ordine evaso DOCEVASO|8|1|0|Ordine evaso
CODCMS|1|20|0|Codice Commessa CODCMS|1|20|0|Codice Commessa
@ -93,8 +93,10 @@ CUP|1|15|0|Codice Unico di Progetto
CIG|1|10|0|Codice Identificativo di Gara CIG|1|10|0|Codice Identificativo di Gara
MODPAG|1|1|0|Tipo contratto P.A. MODPAG|1|1|0|Tipo contratto P.A.
CONTRATTO|1|20|0|Contratto fattura P.A. CONTRATTO|1|20|0|Contratto fattura P.A.
CONTSEP|1|6|0|Contabilita' separata CONTSEP|1|6|0|Contabilità separata
NOLEGGIO|1|1|0|Tipo noleggio (Spesometro) NOLEGGIO|1|1|0|Tipo noleggio (pe)
COMMPREL|1|20|0|Commessa di prelievo (ci)
FASEPREL|1|10|0|Fase di prelievo (ci)
5 5
PROVV+ANNO+CODNUM+NDOC| PROVV+ANNO+CODNUM+NDOC|
TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC|X TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC|X

View File

@ -1,3 +1,3 @@
47 47
0 0
$anamag|0|0|1137|0|Anagrafica di magazzino|NART|| $anamag|0|0|1121|0|Anagrafica di magazzino|NART||

View File

@ -96,8 +96,8 @@ USER15|1|20|0|Campo libero 15
USER16|1|20|0|Campo libero 16 USER16|1|20|0|Campo libero 16
USER17|1|20|0|Campo libero 17 USER17|1|20|0|Campo libero 17
USER18|1|20|0|Campo libero 18 USER18|1|20|0|Campo libero 18
USER19|1|20|0|Campo libero 19 DATAAGG|5|8|0|
USER20|1|20|0|Campo libero 20 UTENTE|1|16|0|
3 3
CODART| CODART|
UPPER(DESCR)|X UPPER(DESCR)|X

View File

@ -1,3 +1,3 @@
53 53
0 0
$rcondv|0|0|217|0|Righe condizioni di vendita||| $rcondv|0|0|233|0|Righe condizioni di vendita|||

View File

@ -1,5 +1,5 @@
53 53
25 27
TIPO|1|1|0|Tipo (<L>istino,<C>ontratto,<O>fferta) TIPO|1|1|0|Tipo (<L>istino,<C>ontratto,<O>fferta)
CATVEN|1|2|0|Categoria di vendita (L) CATVEN|1|2|0|Categoria di vendita (L)
TIPOCF|1|1|0|<C>liente o <F>ornitore (C) TIPOCF|1|1|0|<C>liente o <F>ornitore (C)
@ -25,5 +25,7 @@ ARTES|8|1|0|Articolo in esaurimento (O)
DATAULTAUM|5|8|0|Data ultimo aumento DATAULTAUM|5|8|0|Data ultimo aumento
PRZSTO|4|18|5|Prezzo storico PRZSTO|4|18|5|Prezzo storico
DATAPRZSTO|5|8|0|Data prezzo storico DATAPRZSTO|5|8|0|Data prezzo storico
DATAAGG|5|8|0|
UTENTE|1|16|0|
1 1
TIPO+CATVEN+TIPOCF+CODCF+COD+TIPORIGA+CODRIGA+UM+NSCAGL| TIPO+CATVEN+TIPOCF+CODCF+COD+TIPORIGA+CODRIGA+UM+NSCAGL|

280
ve/movint.src Normal file
View File

@ -0,0 +1,280 @@
#include "veini.h"
#include "veuml.h"
#include "verig.h"
[MAIN]
TYPE=Movimento interno
CAMPICALC=TOTMER|TOTPRE|SPESE|SPESIMB|SPESTRA|SPESINC|BOLLI|IMPONIBILI|IMPOSTE|TOTDOC|SCONTOD|SCONTOT|OMAGGI|TOTPROVV
CALCOLI=*
TOTPROVV=
// Indica se il documento è indirizzato ad un cliente o ad un fornitore
TIPOCF=C
//modulo di riferimento
MODULE=
Title(1)=Cliente
Title(2)=Spedizione
Title(3)=Trasporto
Title(4)=Righe
Title(5)=Totali
[PROFILO]
// Si possono indicare, dopo il numero, PROMPT, HELP, WARNING cosi:
// 1|Prompt|Help|Warning
// TIPOCF = S_NORMALE
// CODCF = S_OBBLIGATORIO
// RAGSOC = S_NORMALE
OCCASEDIT = S_NORMALE
OCFPI = S_DISABILITATO
COFI = S_NORMALE
STATOPAIV = S_NORMALE
PAIVA = S_NORMALE
LIQDIFF = S_NASCOSTO
IVAXCASSA = S_NASCOSTO
GOLEM = S_NASCOSTO
GRRECAPITO = S_NORMALE
INDCF = S_DISABILITATO
CIVCF = S_DISABILITATO
LOCALITACF = S_DISABILITATO
CAPCF = S_DISABILITATO
PROVCOM = S_DISABILITATO
COMCF = S_DISABILITATO
DENCOM = S_DISABILITATO
STATOCF = S_DISABILITATO
DESSTATOCF = S_DISABILITATO
PACONTRATTO = S_NASCOSTO
PATIPOCON = S_NASCOSTO
CONTSEP = S_NASCOSTO
CODVAL1 = S_NORMALE
CODVAL2 = S_NORMALE
NOME_VAL1 = S_NORMALE
NOME_VAL2 = S_NORMALE
// CONTROEURO = S_NORMALE
CAMBIO = S_NORMALE
DATA_CAMBIO1 = S_NORMALE
DATA_CAMBIO2 = S_NORMALE
CODLIN = S_NORMALE
DESLIN = S_NORMALE
CODPAG = S_OBBLIGATORIO
DESCODPAG = S_NORMALE
GRSCADENZE = S_NORMALE
DATAINSC = S_NORMALE
DATASCAD1 = S_DISABILITATO
DATASCAD2 = S_DISABILITATO
DATASCAD3 = S_DISABILITATO
DATASCAD4 = S_DISABILITATO
DATASCAD5 = S_DISABILITATO
CODABIA = S_OBBLIGATORIO
CODCABA = S_OBBLIGATORIO
CODABIA1 = S_NORMALE
CODCABA1 = S_NORMALE
DESBANAPP = S_NOCHECK
DESBANAPP1 = S_NOCHECK
IBAN = S_NORMALE
IBAN_STATO = S_NORMALE
IBAN_CHECK = S_NORMALE
BBAN = S_NORMALE
BBAN_CIN = S_NORMALE
BBAN_ABI = S_NORMALE
BBAN_CAB = S_NORMALE
BBAN_CONTO = S_NORMALE
CODABIP = S_NORMALE
CODCABP = S_NORMALE
CODABIP1 = S_NORMALE
CODCABP1 = S_NORMALE
DESBANPRE = S_NOCHECK
DESBANPRE1 = S_NOCHECK
PROGBNP = S_NOCHECK
PROGBNP1 = S_NORMALE
CATVEN = S_NORMALE
DESCATVEN = S_DISABILITATO
CODLIST = S_NORMALE
DESLIST = S_NORMALE
CODCONT = S_NORMALE
DESCONT = S_NORMALE
CODCAMP = S_NORMALE
DESCAMP = S_NORMALE
SCONTOPERC = S_NORMALE
GRINDSPED = S_NORMALE
CODINDSP = S_NORMALE
RAGSOCSP = S_DISABILITATO
INDSP = S_DISABILITATO
CIVSP = S_DISABILITATO
LOCALITASP = S_DISABILITATO
CAPSP = S_DISABILITATO
COMSP = S_DISABILITATO
DENCOMSP = S_DISABILITATO
PROVCOMSP = S_DISABILITATO
STATOSP = S_DISABILITATO
DESSTATOSP = S_DISABILITATO
DATADOCRIF = S_NORMALE
NUMDOCRIF = S_NOCHECK
CODAG = S_NORMALE
DESAG = S_NORMALE
CODAGVIS = S_NORMALE
DESAGVIS = S_NORMALE
CODZON = S_NORMALE
DESZON = S_NORMALE
CODSPMEZZO = S_OBBLIGATORIO
DESSPMEZZO = S_NORMALE
CODPORTO = S_NORMALE
DESPORTO = S_NORMALE
CODNOTESP1 = S_NORMALE
DESNOTESP1 = S_NORMALE
CODNOTESP2 = S_NORMALE
DESNOTESP2 = S_NORMALE
CAUSTRASP = S_OBBLIGATORIO
DENCAUSTRASP = S_NORMALE
CODVETT1 = S_NORMALE
CODVETT2 = S_NORMALE
CODVETT3 = S_NORMALE
NOMEVETT1 = S_NORMALE
NOMEVETT2 = S_NORMALE
NOMEVETT3 = S_NORMALE
NCOPIE = S_NASCOSTO
GRPARTENZA = S_NORMALE
DATAPART = S_NORMALE
ORAPART = S_NORMALE
IMPPAGATO = S_NASCOSTO
ACCSALDO = S_NASCOSTO
DOC1 = S_NASCOSTO
DOC2 = S_NASCOSTO
DOC3 = S_NASCOSTO
DATACONS = S_OBBLIGATORIO
ASPBENI1 = S_OBBLIGATORIO
DESCRBENI1 = S_NORMALE
ASPBENI2 = S_NASCOSTO
DESCRBENI2 = S_NASCOSTO
IMPNETTI = S_NASCOSTO
RAGGR = S_NORMALE
RAGGREFF = S_NORMALE
SPESEINC = S_NORMALE
ADDBOLLI = S_NORMALE
UMTARA = S_NORMALE
TARA = S_NORMALE
DESUMTARA = S_NASCOSTO
UMPNETTO = S_NORMALE
PNETTO = S_NORMALE
DESUMPNETTO = S_NASCOSTO
NCOLLI = S_NORMALE
CAUSMAG = S_OBBLIGATORIO
CAUSMAGC = S_DISABILITATO
DESCRMAG = S_NORMALE
DESCRMAGC = S_DISABILITATO
BLANK = S_DISABILITATO
CODNOTE = S_NORMALE
NOTECLI = S_NOCHECK
CUP = S_NORMALE
DESCRCUP = S_NORMALE
CIG = S_NORMALE
DESCRCIG = S_NORMALE
CMSH = S_NORMALE
[DEFAULT]
Default(0)=F_CAUSTRASP|VEN
[SHEET]
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_PERCPROV1
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_TIPORIGA
[RIGHE]
[HANDLERS]
// Handler(0) = F_ORAPART|1
[PROFILOGRUPPO]
101 = S_NASCOSTO
100 = S_NORMALE
200 = S_NORMALE
300 = S_NORMALE
400 = S_NASCOSTO
500 = S_NASCOSTO
600 = S_NASCOSTO
700 = S_NASCOSTO
800 = S_NASCOSTO
810 = S_NASCOSTO
820 = S_NASCOSTO
830 = S_NASCOSTO
900 = S_NORMALE
1000 = S_NASCOSTO
1100 = S_NORMALE
1200 = S_NORMALE
1210 = S_NORMALE
1300 = S_NORMALE
1400 = S_NORMALE
1500 = S_NORMALE
1600 = S_NASCOSTO
1700 = S_NORMALE
1800 = S_NORMALE
1900 = S_NORMALE
2000 = S_NORMALE
2100 = S_NORMALE
2200 = S_NASCOSTO
2300 = S_NASCOSTO
2400 = S_NASCOSTO
2500 = S_NORMALE
2700 = S_NORMALE
2710 = S_NORMALE
2800 = S_NORMALE
2900 = S_NORMALE
3000 = S_NORMALE
4000 = S_NORMALE
[ORDINEGRUPPI]
NGROUPS=30
1=100
2=2000
3=2500
4=200
5=300
6=400
7=500
8=600
9=700
10=2400
11=800
12=810
13=820
14=830
15=900
16=1100
17=1200
18=1500
19=1210
20=1300
21=1400
22=2100
23=2800
24=2700
25=2710
26=1700
27=1800
28=1000
29=2900
30=3000

View File

@ -456,29 +456,27 @@ void TMotore_application::do_elab( TDocumento& doc, int when) // C 90
break; break;
} }
TToken_string tipi, stati; if (el != NULL && el->is_document_ok(doc))
el->tipi_stati_iniziali(tipi, stati);
if (stati.find(doc.stato()) >= 0)
{ {
TLista_documenti in; in.add(doc); TLista_documenti in; in.add(doc);
TLista_documenti out; TLista_documenti out;
TDocumento newdoc(doc.get_char(DOC_PROVV), doc.get_int(DOC_ANNO), el->codice_numerazione_finale(), 0L);
if (when == 0) if (when == 0)
{ {
TDocumento::copy_data(newdoc.head(), doc.head()); TDocumento* newdoc = new TDocumento(doc.get_char(DOC_PROVV), doc.get_int(DOC_ANNO), el->codice_numerazione_finale(), 0L);
newdoc.put(DOC_TIPODOC, el->tipo_finale()); TDocumento::copy_data(newdoc->head(), doc.head());
newdoc.put(DOC_STATO, el->stato_finale()); newdoc->put(DOC_TIPODOC, el->tipo_finale());
if (newdoc.tipo().mov_mag()) newdoc->put(DOC_STATO, el->stato_finale());
newdoc.put(DOC_CAUSMAG, newdoc.tipo().caus_mov()); if (newdoc->tipo().mov_mag())
newdoc->put(DOC_CAUSMAG, newdoc->tipo().caus_mov());
else else
newdoc.zero(DOC_CAUSMAG); newdoc->zero(DOC_CAUSMAG);
out.add(newdoc); out.add(newdoc);
} }
if (el->elabora(in, out, TDate(TODAY), true)) if (el->elabora(in, out, TDate(TODAY), true))
{ {
if (when == 0 && out.items() && out[0] != newdoc) if (when == 0 && out.items() && out[0].numero() > 0L)
out.rewrite(); out.rewrite();
if (when < 2 && in.items() && in[0] != doc) if (when < 2 && in.items() && in[0] != doc)
doc = in[0]; doc = in[0];
@ -621,9 +619,11 @@ static bool num_filter(const TRelation* r)
{ {
const TCodice_numerazione& cod_num = cached_numerazione(r->curr().get("CODTAB")); const TCodice_numerazione& cod_num = cached_numerazione(r->curr().get("CODTAB"));
const int last = cod_num.ntipi_doc(); const int last = cod_num.ntipi_doc();
for (int i = 0; i < last; i++ ) for (int i = 0; i < last; i++)
if (tipodoc_ok(cod_num.tipo_doc(i))) {
if (is_tipodoc_ok(cod_num.tipo_doc(i)))
return true; return true;
}
return false; return false;
} }

View File

@ -6,6 +6,11 @@ ENDPAGE
PAGE "Distinta Base" 0 0 0 0 PAGE "Distinta Base" 0 0 0 0
GROUPBOX DLG_NULL 78 9
BEGIN
PROMPT 1 1 "@bParametri esplosione ditinte"
END
BOOLEAN F_EXPLODEDB BOOLEAN F_EXPLODEDB
BEGIN BEGIN
PROMPT 2 2 "Esplosione distinte" PROMPT 2 2 "Esplosione distinte"
@ -14,14 +19,9 @@ BEGIN
FIELD EXPLODEDB FIELD EXPLODEDB
END END
GROUPBOX DLG_NULL 78 14
BEGIN
PROMPT 1 4 "Parametri esplosione"
END
LISTBOX F_VALCOMP 15 LISTBOX F_VALCOMP 15
BEGIN BEGIN
PROMPT 2 6 "Calcolo valore su " PROMPT 2 3 "Calcolo valore su "
ITEM " |Prodotto finito" ITEM " |Prodotto finito"
ITEM "X|Componenti" ITEM "X|Componenti"
FIELD VALCOMP FIELD VALCOMP
@ -30,7 +30,7 @@ END
LISTBOX F_TIPOESPL 20 LISTBOX F_TIPOESPL 20
BEGIN BEGIN
PROMPT 2 8 "Tipo esplosione " PROMPT 2 4 "Tipo esplosione "
ITEM " |Scalare" ITEM " |Scalare"
ITEM "X|Materiali di base" ITEM "X|Materiali di base"
FIELD TIPOESPL FIELD TIPOESPL
@ -39,7 +39,7 @@ END
LIST F_RAGGART 34 LIST F_RAGGART 34
BEGIN BEGIN
PROMPT 2 10 "Raggruppo articoli " PROMPT 2 5 "Raggrupp. articoli "
ITEM "0|Nessun raggruppamento" ITEM "0|Nessun raggruppamento"
ITEM "1|Converti nell'unita' principale" ITEM "1|Converti nell'unita' principale"
ITEM "1|Converti nell'unita' di distinta" ITEM "1|Converti nell'unita' di distinta"
@ -52,14 +52,14 @@ END
NUMBER F_LIVELLO 3 NUMBER F_LIVELLO 3
BEGIN BEGIN
PROMPT 2 12 "Livello esplosione " PROMPT 2 6 "Livello esplosione "
FIELD LIVESPL FIELD LIVESPL
GROUP 8 GROUP 8
END END
NUMBER F_ORDDB 3 NUMBER F_ORDDB 3
BEGIN BEGIN
PROMPT 2 14 "Ordinamento distinta " PROMPT 2 7 "Ordinamento distinta "
USE ORD USE ORD
INPUT CODTAB F_ORDDB INPUT CODTAB F_ORDDB
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -73,17 +73,76 @@ END
STRING F_DESORDDB 47 STRING F_DESORDDB 47
BEGIN BEGIN
PROMPT 30 14 "" PROMPT 30 7 ""
FLAGS "D" FLAGS "D"
END END
BOOLEAN F_ELRORIG BOOLEAN F_ELRORIG
BEGIN BEGIN
PROMPT 2 16 "Elimino la riga originale" PROMPT 2 8 "Eliminare la riga originale"
FIELD ELRORIG FIELD ELRORIG
GROUP 8 GROUP 8
END END
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 1 10 "@bParametri articoli"
END
BOOLEAN F_IVA_OBBL
BEGIN
PROMPT 2 11 "Codice IVA obbligatorio sugli articoli"
FIELD IVA_OBBL
END
GROUPBOX DLG_NULL 56 4
BEGIN
PROMPT 2 12 "@bGenerazione automatica codici"
END
LIST F_GEN_EAN 2 6
BEGIN
PROMPT 3 13 "Codice articolo "
ITEM " |Nulla"
ITEM "08|EAN 8"
ITEM "13|EAN 13"
FIELD GEN_EAN
END
LIST F_ALT_EAN 2 6
BEGIN
PROMPT 3 14 "Codice alternativo "
ITEM " |Nulla"
ITEM "08|EAN 8"
ITEM "13|EAN 13"
FIELD ALT_EAN
END
GROUPBOX DLG_NULL 20 4
BEGIN
PROMPT 57 12 "@bPrefissi"
END
NUMBER F_EAN8 4
BEGIN
PROMPT 61 13 "EAN 8 "
FIELD EAN8
FLAGS "Z"
END
BOOLEAN F_EAN8CIN
BEGIN
PROMPT 36 13 "Genera CIN EAN8"
FIELD EAN8CIN
END
NUMBER F_EAN13 6
BEGIN
PROMPT 61 14 "EAN 13 "
FIELD EAN13
FLAGS "Z"
END
ENDPAGE ENDPAGE
PAGE "Articoli 1" 1 1 60 14 PAGE "Articoli 1" 1 1 60 14
@ -982,159 +1041,6 @@ BEGIN
GROUP 28 GROUP 28
END END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 11 ""
END
BOOLEAN F_CHK_USER19
BEGIN
PROMPT 2 11 "Campo libero 19"
MESSAGE FALSE CLEAR,29@
MESSAGE TRUE ENABLE,29@
FIELD CHK_USER[19]
END
STRING F_PROMPT_USER19 18
BEGIN
PROMPT 2 12 "Prompt "
FIELD PROMPT_USER[19]
GROUP 29
END
LISTBOX F_TYPE_USER19 7
BEGIN
PROMPT 30 12 "Tipo "
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER19|CLEAR,F_DEC_USER19
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER19|ENABLE,F_DEC_USER19
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER19|CLEAR,F_DEC_USER19
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER19|CLEAR,F_DEC_USER19
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER19|CLEAR,F_DEC_USER19
FIELD TYPE_USER[19]
GROUP 29
END
NUMBER F_LEN_USER19 2
BEGIN
PROMPT 45 12 "Lunghezza "
FIELD LEN_USER[19]
GROUP 29
FLAGS "U"
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
END
STRING F_DEC_USER19 2
BEGIN
PROMPT 58 12 "Decimali "
FIELD DEC_USER[19]
GROUP 29
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 14 ""
END
BOOLEAN F_CHK_USER20
BEGIN
PROMPT 2 14 "Campo libero 20"
MESSAGE FALSE CLEAR,30@
MESSAGE TRUE ENABLE,30@
FIELD CHK_USER[20]
END
STRING F_PROMPT_USER20 18
BEGIN
PROMPT 2 15 "Prompt "
FIELD PROMPT_USER[20]
GROUP 30
END
LISTBOX F_TYPE_USER20 7
BEGIN
PROMPT 30 15 "Tipo "
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER20|CLEAR,F_DEC_USER20
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER20|ENABLE,F_DEC_USER20
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER20|CLEAR,F_DEC_USER20
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER20|CLEAR,F_DEC_USER20
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER20|CLEAR,F_DEC_USER20
FIELD TYPE_USER[20]
GROUP 30
END
NUMBER F_LEN_USER20 2
BEGIN
PROMPT 45 15 "Lunghezza "
FIELD LEN_USER[20]
GROUP 30
FLAGS "U"
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
END
STRING F_DEC_USER20 2
BEGIN
PROMPT 58 15 "Decimali "
FIELD DEC_USER[20]
GROUP 30
END
BOOLEAN F_IVA_OBBL
BEGIN
PROMPT 2 17 "Codice IVA obbligatorio sugli articoli"
FIELD IVA_OBBL
END
GROUPBOX DLG_NULL 56 4
BEGIN
PROMPT 1 18 "@bGenerazione automatica codici"
END
LIST F_GEN_EAN 2 6
BEGIN
PROMPT 2 19 "Codice articolo "
ITEM " |Nulla"
ITEM "08|EAN 8"
ITEM "13|EAN 13"
FIELD GEN_EAN
END
LIST F_ALT_EAN 2 6
BEGIN
PROMPT 2 20 "Codice alternativo "
ITEM " |Nulla"
ITEM "08|EAN 8"
ITEM "13|EAN 13"
FIELD ALT_EAN
END
GROUPBOX DLG_NULL 20 4
BEGIN
PROMPT 59 18 "@bPrefissi"
END
NUMBER F_EAN8 4
BEGIN
PROMPT 62 19 "EAN 8 "
FIELD EAN8
FLAGS "Z"
END
BOOLEAN F_EAN8CIN
BEGIN
PROMPT 37 19 "Genera CIN EAN8"
FIELD EAN8CIN
END
NUMBER F_EAN13 6
BEGIN
PROMPT 62 20 "EAN 13 "
FIELD EAN13
FLAGS "Z"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -267,7 +267,7 @@ void TContabilizzazione_analitica_app::contabilize()
//E finalmente fa l'agognata elaborazione!!!!! //E finalmente fa l'agognata elaborazione!!!!!
TString16 elaborazione = _msk->get(F_CODICE_ELAB); TString16 elaborazione = _msk->get(F_CODICE_ELAB);
TContabilizzazione_analitica contanal(elaborazione); TContabilizzazione_analitica contanal(elaborazione);
contanal.elabora(lista_in, lista_out, data_reg); contanal.elabora(lista_in, lista_out, data_reg, true);
if (contanal.processed_docs() > 0L) if (contanal.processed_docs() > 0L)
message_box(FR("Totale documenti contabilizzati: %ld"), contanal.processed_docs()); message_box(FR("Totale documenti contabilizzati: %ld"), contanal.processed_docs());

View File

@ -210,7 +210,6 @@ Item_04 = "Contabilizzazione spese e bolli", "ve0 -2 -4", "F"
Item_05 = "Contabilizzazione", "ve0 -2 -5", "F" Item_05 = "Contabilizzazione", "ve0 -2 -5", "F"
Item_06 = "Conti per categoria e gruppo", "ve0 -6 &CVM", "F" Item_06 = "Conti per categoria e gruppo", "ve0 -6 &CVM", "F"
Item_07 = "Gestione spese e bolli", "ve0 -2 -6", "F" Item_07 = "Gestione spese e bolli", "ve0 -2 -6", "F"
Item_08 = "Articoli e Distinte", "ve0 -2 -7", "F"
Item_09 = "Configurazione contabilità", "cg5 -1", "F" Item_09 = "Configurazione contabilità", "cg5 -1", "F"
Item_10 = "Fido cliente", "ve0 -2 -8", "F" Item_10 = "Fido cliente", "ve0 -2 -8", "F"
@ -221,7 +220,7 @@ Module = 0
Flags = "" Flags = ""
Item_01 = "Modifica valori", "ve4 -0", "F" Item_01 = "Modifica valori", "ve4 -0", "F"
Item_02 = "Aggiornamento Codici IVA", "ve4 -1", "FP" Item_02 = "Aggiornamento Codici IVA", "ve4 -1", "FP"
Item_03 = "Invio", [ACQVEN_025] Item_03 = "Invio", [ACQVEN_025]
Item_04 = "Ricezione", [ACQVEN_026] Item_04 = "Ricezione", [ACQVEN_026]
@ -230,9 +229,10 @@ Caption = "Configurazione magazzino"
Picture = <ba04> Picture = <ba04>
Module = 0 Module = 0
Flags = "" Flags = ""
Item_01 = "Parametri di magazzino", "mg0 -2 -1", "F" Item_01 = "Parametri di magazzino", "mg0 -2 -1", "F"
Item_02 = "Formato codice articoli", "mg0 -0 FCA", "F" Item_02 = "Formato codice articoli", "mg0 -0 FCA", "F"
Item_03 = "Formato codice giacenze", "mg0 -0 FCG", "F" Item_03 = "Formato codice giacenze", "mg0 -0 FCG", "F"
Item_04 = "Articoli e Distinte", "ve0 -2 -7", "F"
[ACQVEN_023] [ACQVEN_023]
Caption = "Archivi contabili" Caption = "Archivi contabili"
@ -287,4 +287,5 @@ Caption = "Verticalizzazioni"
Picture = <ve01> Picture = <ve01>
Module = 0 Module = 0
Flags = "" Flags = ""
Item_01 = "Caffè Hardy", <hamenu.men>, "", 10232 Item_01 = "Bee Store", <bsmenu.men>, "", 9015
Item_02 = "Caffè Hardy", <hamenu.men>, "", 10232

View File

@ -296,9 +296,11 @@ public:
const char stato_mov_iniziale() const {return get_char("S7"); } const char stato_mov_iniziale() const {return get_char("S7"); }
const char stato_mov_finale() const {return get_char("S8"); } const char stato_mov_finale() const {return get_char("S8"); }
const char stato_provvigioni() const {return get("S3")[0]; } const char stato_provvigioni() const {return get("S3")[0]; }
const TString & elaborazione() const {return get("S3").mid(4,8); } const TString& elaborazione() const {return get("S3").mid(4,8); }
const TString & elaborazione_stampa() const {return get("S3").mid(12,8); } const TString& elaborazione_stampa() const {return get("S3").mid(12,8); }
const TString & elaborazione_definitiva() const {return get("S3").mid(20,8); } const TString& elaborazione_definitiva() const {return get("S3").mid(20,8); }
const TString& elaborazione_speciale() const {return get("S3").mid(28,8); }
bool movimento_interno() const;
const TString & caus_mov() const {return get("S9"); } // Causale di magazzino const TString & caus_mov() const {return get("S9"); } // Causale di magazzino
const TString & caus_anticipo() const {return get("S10"); } const TString & caus_anticipo() const {return get("S10"); }
const TString & tipi_iva_validi() const {return get("S11"); } const TString & tipi_iva_validi() const {return get("S11"); }
@ -318,7 +320,7 @@ public:
bool mail_print_profile(TFilename& report) const; bool mail_print_profile(TFilename& report) const;
bool is_costo() const ; bool is_costo() const ;
bool is_ricavo() const ; bool is_ricavo() const ;
const TString & module() const { return _module; } const TString& module() const { return _module; }
TFormula_documento* first_formula() { return succ_formula(true); } TFormula_documento* first_formula() { return succ_formula(true); }
TFormula_documento* succ_formula(bool restart = false); TFormula_documento* succ_formula(bool restart = false);
@ -1018,6 +1020,7 @@ public:
static bool codval_handler( TMask_field& f, KEY key ); static bool codval_handler( TMask_field& f, KEY key );
static bool confirm_handler( TMask_field& f, KEY key ); static bool confirm_handler( TMask_field& f, KEY key );
static bool barcode_handler( TMask_field& f, KEY key ); static bool barcode_handler( TMask_field& f, KEY key );
static bool movint_handler( TMask_field& f, KEY key );
static bool sort_row_handler( TMask_field& f, KEY key ); static bool sort_row_handler( TMask_field& f, KEY key );
static bool ss_notify(TSheet_field& ss, int r, KEY key); static bool ss_notify(TSheet_field& ss, int r, KEY key);
static bool ss_handler(TMask_field& f, KEY key); static bool ss_handler(TMask_field& f, KEY key);

View File

@ -3008,6 +3008,10 @@ void TDocumento::update_conai()
bool TDocumento::is_evaso() const bool TDocumento::is_evaso() const
{ {
bool ok = is_ordine() || is_bolla() || is_generic(); bool ok = is_ordine() || is_bolla() || is_generic();
if (ok && tipo().is_ordine_quadro())
return false;
for (int r = 1; ok && r <= physical_rows(); r++) for (int r = 1; ok && r <= physical_rows(); r++)
{ {
const TRiga_documento& riga = physical_row(r); const TRiga_documento& riga = physical_row(r);

View File

@ -171,21 +171,29 @@ const TString& TTipo_documento::riferimento(const TDocumento & doc, TString& rif
} }
TString val; TString val;
switch (field.file())
if (field.file() == LF_DOC) {
{ case LF_CLIFO:
case LF_CFVEN:
if (doc.get_long(DOC_CODCF) > 0)
{
TString8 key; key << doc.get(DOC_TIPOCF) << '|' << doc.get(DOC_CODCF);
const TRectype& rec = cache().get(field.file(), key);
val = field.read(rec);
}
break;
case LF_OCCAS:
if (doc.get_char(DOC_TIPOCF) == 'C' && doc.get(DOC_OCFPI).full())
{
const TRectype& rec = cache().get(LF_OCCAS, doc.get(DOC_OCFPI));
val = field.read(rec);
}
break;
default:
val = field.read(doc); val = field.read(doc);
rif.insert(val, p); break;
} }
else rif.insert(val, p);
{
TString8 key(doc.get(DOC_TIPOCF));
key << '|' << doc.get(DOC_CODCF);
const TRectype& rec = cache().get(field.file(), key);
val = field.read(rec);
rif.insert(val, p);
}
switch (conn) switch (conn)
{ {
@ -449,6 +457,17 @@ void TTipo_documento::read_formule()
_check_double_art = prof.get_bool("CHECK_DOUBLE_ART"); _check_double_art = prof.get_bool("CHECK_DOUBLE_ART");
} }
bool TTipo_documento::movimento_interno() const
{
const TString& elab = elaborazione();
if (elab.full())
{
const TString& app = cache().get("%ELD", elab, "S3");
return app.starts_with("ci1 -4", true);
}
return false;
}
bool TTipo_documento::stato_with_mov_mag(const char stato) const bool TTipo_documento::stato_with_mov_mag(const char stato) const
{ {
if (!mov_mag()) if (!mov_mag())

View File

@ -537,8 +537,9 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
return error_box("Non è stato specificato il nome del'applicazione esterna"); return error_box("Non è stato specificato il nome del'applicazione esterna");
CHECK(doc_in.items() == 1, "Si deve specificare un solo documento in entrata"); CHECK(doc_in.items() == 1, "Si deve specificare un solo documento in entrata");
CHECK(doc_out.items() <= 1, "Si deve specificare un solo documento in uscita"); CHECK(doc_out.items() <= 1, "Si deve specificare un solo documento in uscita");
TFilename name; name.temp("ext"); TDocumento& d = doc_in[0];
TFilename name; name.temp("ext");
TString16 par; TString16 par;
{ {
@ -554,10 +555,16 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
c.set("CodNumOut", doc_out[0].get(DOC_CODNUM)); c.set("CodNumOut", doc_out[0].get(DOC_CODNUM));
c.set("NDocOut", doc_out[0].get(DOC_NDOC)); c.set("NDocOut", doc_out[0].get(DOC_NDOC));
} }
else if (codice_numerazione_finale().full())
{
c.set("ProvvOut", d.get(DOC_PROVV));
c.set("AnnoOut", d.get(DOC_ANNO));
c.set("CodNumOut", codice_numerazione_finale());
c.set("NDocOut", 0L);
}
par.format("%d", LF_DOC); par.format("%d", LF_DOC);
TDocumento& d = doc_in[0];
const int doc_fields = d.items(); const int doc_fields = d.items();
for (int i = 0; i < doc_fields; i++) for (int i = 0; i < doc_fields; i++)
{ {
@ -608,25 +615,25 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
c.list_paragraphs(p); c.list_paragraphs(p);
d.destroy_rows(); d.destroy_rows();
int r = 1 ; for (int r = 1; ; r++)
par.format("%d,%d", LF_RIGHEDOC, r); {
while (p.find(par) >= 0) par.format("%d,%d", LF_RIGHEDOC, r);
{ if (p.find(par) < 0)
const TString& tiporiga = c.get(RDOC_TIPORIGA, par); break;
const TString& tiporiga = c.get(RDOC_TIPORIGA, par, -1, "01");
TRiga_documento& row = d.new_row(tiporiga); TRiga_documento& row = d.new_row(tiporiga);
for (int i = row.items()-1; i >= 0; i--) for (int i = row.items()-1; i >= 0; i--)
{ {
const char* fname = row.fieldname(i); const char* fname = row.fieldname(i);
const TFieldref f(fname, LF_RIGHEDOC); const TFieldref f(fname, LF_RIGHEDOC);
const TString& val = f.read(c, par); const TString& val = f.read(c, par);
if (val.not_empty()) if (val.full())
row.put(fname, val); row.put(fname, val);
} }
par.format("%d,%d", LF_RIGHEDOC, ++r);
} }
const char final = stato_finale_doc_iniziale()[0]; const char final = stato_finale_doc_iniziale()[0];
if (d.stato() != final) if (final > '0' && d.stato() != final)
d.stato(final); d.stato(final);
return true; return true;
@ -635,11 +642,13 @@ bool TElaborazione_esterna::elabora(TLista_documenti& doc_in, TLista_documenti&
{ {
if (doc_out.items()) if (doc_out.items())
{ {
const TString& ndoc = c.get("NDocOut", "Transaction");
if (ndoc != doc_out[0].get(DOC_NDOC))
doc_out[0].put(DOC_NDOC, ndoc);
doc_out[0].read(); doc_out[0].read();
return true; return true;
} }
} }
} }
return false; return false;
} }

View File

@ -642,7 +642,7 @@ protected:
const TCausale& rdoc2caus(const TRiga_documento& rdoc); const TCausale& rdoc2caus(const TRiga_documento& rdoc);
void init_distrib(TString_array& conti, TGeneric_distrib& distrib, bool pareggio); void init_distrib(TString_array& conti, TGeneric_distrib& distrib, bool pareggio);
void calcola_date_comp(const TDocumento& doc, TDate& datacomp, TDate& datafcomp, int annoes); int calcola_date_comp(const TDocumento& doc, TDate& datacomp, TDate& datafcomp) const;
public: public:
bool search_costo_ricavo(const TRiga_documento& riga, TBill& conto, bool riclassifica_fdr_fde); bool search_costo_ricavo(const TRiga_documento& riga, TBill& conto, bool riclassifica_fdr_fde);

View File

@ -220,17 +220,20 @@ void TConsegna_mask::doc2mask(const TDocumento& indoc, const TDocumento& outdoc,
TEsercizi_contabili esc; TEsercizi_contabili esc;
const int codes = esc.date2esc(oggi); const int codes = esc.date2esc(oggi);
const bool show_evaded = indoc.tipo().mostra_righe_evase_in_elaborazione(); const TTipo_documento& tip = indoc.tipo();
const bool ordine_quadro = tip.is_ordine_quadro();
const bool show_evaded = ordine_quadro || tip.mostra_righe_evase_in_elaborazione();
TSheet_field& s = sfield(F_ROWS); TSheet_field& s = sfield(F_ROWS);
s.destroy(); s.destroy();
const int rows = indoc.physical_rows(); const int rows = indoc.physical_rows();
int rowno = 0; int rowno = 0;
for (int i = 0; i < rows; i++) for (int i = 0; i < rows; i++)
{ {
const TRiga_documento& rec = indoc[i+1]; const TRiga_documento& rec = indoc[i+1];
const real residuo = rec.qtaresidua(); const real residuo = rec.qtaresidua();
const bool evasa = residuo.is_zero(); const bool evasa = residuo.is_zero() && !ordine_quadro;
bool show_line = show_evaded || !evasa; bool show_line = show_evaded || !evasa;
if (rec.is_descrizione()) if (rec.is_descrizione())
show_line = !_ignora_descrizioni; show_line = !_ignora_descrizioni;
@ -355,15 +358,13 @@ bool TConsegna_ordini::aggiorna_ncolli_tara_pnetto(TRiga_documento& r) const
TArticolo& articolo = cached_article(codart); TArticolo& articolo = cached_article(codart);
const real qta = articolo.convert_to_um(r.quantita(), NULL, r.get(RDOC_UMQTA)); const real qta = articolo.convert_to_um(r.quantita(), NULL, r.get(RDOC_UMQTA));
real ncolli, tara, pnetto; real ncolli, tara, pnetto;
const bool ok = calcola_ncolli_tara_pnetto(codart, qta, ncolli, tara, pnetto); const bool ok = calcola_ncolli_tara_pnetto(codart, qta, ncolli, tara, pnetto);
if (ok) if (ok)
{ {
r.put(RDOC_NCOLLI, ncolli); r.put(RDOC_NCOLLI, ncolli);
r.put(RDOC_TARA, tara); r.put(RDOC_TARA, tara);
r.put(RDOC_PNETTO, pnetto); r.put(RDOC_PNETTO, pnetto);
} }
return ok; return ok;
} }
@ -400,7 +401,6 @@ bool TConsegna_ordini::genera_righe_riferimento(const TDocumento& indoc, TDocume
} }
const TString4 numrif = num_riferimenti_in(); const TString4 numrif = num_riferimenti_in();
if (numrif.full()) if (numrif.full())
{ {
TAssoc_array doc_rows; TAssoc_array doc_rows;
@ -425,8 +425,7 @@ bool TConsegna_ordini::genera_righe_riferimento(const TDocumento& indoc, TDocume
query << "\nFROM " << select; query << "\nFROM " << select;
query << "\nTO " << select; query << "\nTO " << select;
TISAM_recordset recset(query); TISAM_recordset recset(query);
for (bool ok = recset.move_first(); ok; ok = recset.move_next()) for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{ {
const char provv = recset.get(RDOC_PROVV).as_string()[0]; const char provv = recset.get(RDOC_PROVV).as_string()[0];
@ -820,8 +819,7 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
} }
// Crea una nuova riga merce senza articolo e con sola descrizione, qta ed um // Crea una nuova riga merce senza articolo e con sola descrizione, qta ed um
TRiga_documento& outrec = outdoc.insert_row(i+1, tiporiga); TRiga_documento& outrec = outdoc.insert_row(i+1, tiporiga);
TString descr; TString descr; descr << TR("Scarto ") << codart;
descr << TR("Scarto") << ' ' << codart;
outrec.put(RDOC_DESCR, descr); outrec.put(RDOC_DESCR, descr);
TToken_string& ska = *(TToken_string*)obj; TToken_string& ska = *(TToken_string*)obj;
outrec.put(RDOC_UMQTA, ska.get(0)); outrec.put(RDOC_UMQTA, ska.get(0));
@ -846,8 +844,6 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
FOR_EACH_PHYSICAL_RDOC_BACK(indoc, i, rdoc) FOR_EACH_PHYSICAL_RDOC_BACK(indoc, i, rdoc)
{ {
TRiga_documento& inrec = *rdoc; TRiga_documento& inrec = *rdoc;
const int nrow = inrec.get_int(RDOC_NRIGA);
if (inrec.is_evasa()) if (inrec.is_evasa())
indoc.destroy_row(i, true); indoc.destroy_row(i, true);
else else
@ -855,7 +851,6 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
const real evaso = inrec.qtaevasa(); const real evaso = inrec.qtaevasa();
const char* fq = inrec.field_qta(); const char* fq = inrec.field_qta();
const char* fqe = inrec.field_qtaevasa(); const char* fqe = inrec.field_qtaevasa();
inrec.add(fq, -evaso); // nuovo modo di incrementare inrec.add(fq, -evaso); // nuovo modo di incrementare
inrec.zero(fqe); inrec.zero(fqe);
} }

View File

@ -41,7 +41,7 @@ const TCausale& TCache_causali::causale(const TDocumento& doc, const TString & f
if (!fld_cms.blank()) if (!fld_cms.blank())
{ {
const TString & cms = doc.commessa_principale(); const TString& cms = doc.commessa_principale();
if (!cms.blank()) if (!cms.blank())
{ {
@ -302,7 +302,7 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty()) if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty())
{ {
TString80 key(rdoc->get(RDOC_CODNUM)); TString80 key = rdoc->get(RDOC_CODNUM);
const TCodice_numerazione& num = cached_numerazione(key); const TCodice_numerazione& num = cached_numerazione(key);
if (num.fattura_emettere_ricevere()) if (num.fattura_emettere_ricevere())
@ -334,11 +334,12 @@ bool TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documento& r,
return conto.ok() && conto.find(); return conto.ok() && conto.find();
} }
bool TContabilizzazione_analitica::find_conti_iva_indetraibile(const TRiga_documento& riga, const TBill & bill, TString_array& conti, int annoes, const char tipomov, bool & pareggio) bool TContabilizzazione_analitica::find_conti_iva_indetraibile(const TRiga_documento& riga, const TBill& bill,
TString_array& conti, int annoes, const char tipomov, bool& pareggio)
{ {
const TString80 riga_cos = riga.codice_costo(); const TCodice_cdc riga_cos = riga.codice_costo();
const TString80 riga_cms = riga.codice_commessa(); const TCodice_cms riga_cms = riga.codice_commessa();
const TString16 riga_fsc = riga.fase_commessa(); const TCodice_fas riga_fsc = riga.fase_commessa();
TToken_string conto; TToken_string conto;
conto = bill.string(0x8); // format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto()); conto = bill.string(0x8); // format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto());
@ -381,7 +382,7 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
bool bArcticleFound = false; bool bArcticleFound = false;
const char tipocf = riga.doc().get_char(DOC_TIPOCF); const char tipocf = riga.doc().get_char(DOC_TIPOCF);
TString80 contanal; TCodice_con contanal;
TToken_string conto; TToken_string conto;
TBill bill; // Cerco il conto contabile TBill bill; // Cerco il conto contabile
@ -442,9 +443,9 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
return true; return true;
} }
const TString80 riga_cos = riga.codice_costo(); const TCodice_cdc riga_cos = riga.codice_costo();
const TString80 riga_cms = riga.codice_commessa(); const TCodice_cms riga_cms = riga.codice_commessa();
const TString16 riga_fsc = riga.fase_commessa(); const TCodice_fas riga_fsc = riga.fase_commessa();
if (contanal.full()) // Non ho trovato il conto in anagrafica ... if (contanal.full()) // Non ho trovato il conto in anagrafica ...
{ {
@ -469,18 +470,16 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
conto = rigarip.get(RRIP_CODCONTO).full() ? rigarip.get(RRIP_CODCONTO) : contanal; conto = rigarip.get(RRIP_CODCONTO).full() ? rigarip.get(RRIP_CODCONTO) : contanal;
const TString costo = rigarip.get(RRIP_CODCOSTO); const TString& costo = rigarip.get(RRIP_CODCOSTO);
conto.add(costo.full() ? costo : riga_cos, 1); conto.add(costo.full() ? costo : riga_cos, 1);
const TString & commessa = rigarip.get(RRIP_CODCMS); const TString& commessa = rigarip.get(RRIP_CODCMS);
conto.add(commessa.full() ? commessa : riga_cms, 2); conto.add(commessa.full() ? commessa : riga_cms, 2);
const TString & fase = rigarip.get(RRIP_CODFASE); const TString & fase = rigarip.get(RRIP_CODFASE);
conto.add(fase.full() ? fase: riga_fsc, 3); conto.add(fase.full() ? fase: riga_fsc, 3);
conto.add(rigarip.get(RRIP_RIPARTO), 4);
conto.add(rigarip.get(RRIP_RIPARTO), 4);
conti.add(conto); conti.add(conto);
} }
} }
@ -502,7 +501,7 @@ void TContabilizzazione_analitica::init_distrib(TString_array& conti, TGeneric_d
} }
} }
void TContabilizzazione_analitica::calcola_date_comp(const TDocumento& doc, TDate& datacomp, TDate& datafcomp, int annoes) int TContabilizzazione_analitica::calcola_date_comp(const TDocumento& doc, TDate& datacomp, TDate& datafcomp) const
{ {
const TDate datadoc = doc.get_date(DOC_DATADOC); const TDate datadoc = doc.get_date(DOC_DATADOC);
datacomp = doc.get_date(DOC_DATACOMP); datacomp = doc.get_date(DOC_DATACOMP);
@ -512,7 +511,7 @@ void TContabilizzazione_analitica::calcola_date_comp(const TDocumento& doc, TDat
if (!datafcomp.ok()) if (!datafcomp.ok())
datafcomp = datacomp; datafcomp = datacomp;
annoes = esercizi().date2esc(datacomp); //ci potrebbe andare datacomp? All'analisi l'ardua sentenza return esercizi().date2esc(datacomp); //ci potrebbe andare datacomp? All'analisi l'ardua sentenza
} }
void TContabilizzazione_analitica::split_sp_amount(TAnal_mov & mov, bool pareggio, const TImporto & totdoc, void TContabilizzazione_analitica::split_sp_amount(TAnal_mov & mov, bool pareggio, const TImporto & totdoc,
@ -573,7 +572,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
} }
else else
{ {
calcola_date_comp(doc, datacomp, datafcomp, annoes); annoes = calcola_date_comp(doc, datacomp, datafcomp);
datareg = datadoc; datareg = datadoc;
doc.riferimento(descr); doc.riferimento(descr);
@ -620,7 +619,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
mov.put(MOVANA_NUMREG, numreg_ca = 0); mov.put(MOVANA_NUMREG, numreg_ca = 0);
} }
calcola_date_comp(doc, datacomp, datafcomp, annoes); annoes = calcola_date_comp(doc, datacomp, datafcomp);
mov.put(MOVANA_DATAREG, datareg); mov.put(MOVANA_DATAREG, datareg);
mov.put(MOVANA_DATACOMP, datacomp); mov.put(MOVANA_DATACOMP, datacomp);
@ -872,7 +871,9 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu
p.links().add("Movimento Analitico |r|w", 0); p.links().add("Movimento Analitico |r|w", 0);
p.setlinkhandler(link_handler_ana); p.setlinkhandler(link_handler_ana);
pre_process_input(doc_in); pre_process_input(doc_in);
v.open_modal();
if (interattivo)
v.open_modal();
for (int i = 0; i < doc_in.items(); i++) for (int i = 0; i < doc_in.items(); i++)
{ {
TAnal_mov mov; TAnal_mov mov;
@ -897,7 +898,8 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu
break; break;
} }
v.close_print(); v.close_print();
v.close_modal(); if (interattivo)
v.close_modal();
if (_total_docs > 0) if (_total_docs > 0)
{ {
@ -905,8 +907,11 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu
post_process(doc_out, doc_in); post_process(doc_out, doc_in);
} }
if (v.run() == K_CTRL+'S') // Ho premuto Stampa if (interattivo || _total_docs < doc_in.items())
p.print_txt(v.text()); {
if (v.run() == K_CTRL+'S') // Ho premuto Stampa
p.print_txt(v.text());
}
return true; return true;
} }

File diff suppressed because it is too large Load Diff

View File

@ -610,7 +610,7 @@ bool iva_handler( TMask_field& f, KEY key )
bool addiva = false; bool addiva = false;
if (pos_ai >= 0) if (pos_ai >= 0)
addiva = row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se e' settato l'addebito IVA addiva = row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se è settato l'addebito IVA
const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() || const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() ||
(riga.is_omaggio() && addiva); (riga.is_omaggio() && addiva);
@ -625,7 +625,7 @@ bool iva_handler( TMask_field& f, KEY key )
const bool qf = qe && row_mask.fld(pos_q).get().not_empty(); const bool qf = qe && row_mask.fld(pos_q).get().not_empty();
const bool required = pf && !(qe && !qf); const bool required = pf && !(qe && !qf);
if (required) if (required)
return f.error_box("Il codice IVA e' obbligatorio."); return f.error_box(TR("Il codice IVA è obbligatorio."));
} }
} }
return true; return true;
@ -892,11 +892,8 @@ void upd_colli_peso_tara(TMask& m, const TString & codart)
const real peso = qta * articolo.get_real(ANAMAG_PESO); const real peso = qta * articolo.get_real(ANAMAG_PESO);
m.fld(pos).set(peso.string()); m.fld(pos).set(peso.string());
} }
} }
bool pricerange_handler(TMask_field& f, KEY key ) bool pricerange_handler(TMask_field& f, KEY key )
{ {
if (key == K_TAB && f.focusdirty()) if (key == K_TAB && f.focusdirty())
@ -1040,8 +1037,8 @@ bool TPrice_sheet::get_ini_paragraph(const TEdit_field& field, TString& parag) c
TPrice_sheet::TPrice_sheet(TEdit_field& f) TPrice_sheet::TPrice_sheet(TEdit_field& f)
: TArray_sheet(0, 3, -1, 16, TR("Ricerca Prezzi"), : TArray_sheet(0, 3, -1, 16, TR("Ricerca Prezzi"),
HR("Num.|Data@10|Codice articolo@20|Descrizione@40|Quantità@15P|Prezzo@18P|Sconto@10|Numerazione@18|Tipo Documento@18"), 0, 1), HR("Num.|Data@10|Codice articolo@20|Descrizione@40|Quantità@15P|Prezzo@18P|Sconto@10|Numerazione@18|Tipo Documento@18"), 0, 1),
_fld(f) _fld(f)
{ {
load_columns_order(_fld); load_columns_order(_fld);
} }
@ -1114,13 +1111,11 @@ static void search_price(TEdit_field& f, KEY key )
rec.put(RDOC_NDOC, cur.curr().get(DOC_NDOC)); rec.put(RDOC_NDOC, cur.curr().get(DOC_NDOC));
r.read(rec); r.read(rec);
int last_row = r.last_row(); const int last_row = r.last_row();
for (int i = r.first_row(); i <= last_row; i = r.succ_row(i)) for (int i = r.first_row(); i <= last_row; i = r.succ_row(i))
{ {
const TRectype & rdoc = r.row(i); const TRectype& rdoc = r.row(i);
const TString & codart = rdoc.get(RDOC_CODART); const TString& codart = rdoc.get(RDOC_CODART);
if (codart.full()) if (codart.full())
{ {
TToken_string row; TToken_string row;
@ -1437,15 +1432,14 @@ TObject* TCache_documenti::rec2obj(const TRectype& curr) const
return new TDocumento(curr); return new TDocumento(curr);
} }
TDocumento & TCache_documenti::doc(const char* key) TDocumento& TCache_documenti::doc(const char* key)
{ {
return (TDocumento &)query(key); return (TDocumento &)query(key);
} }
TDocumento & cached_doc(const char* key) TDocumento& cached_doc(const char* key)
{ {
static TCache_documenti * _cache_docs = NULL; static TCache_documenti * _cache_docs = NULL;
if (_cache_docs == NULL) if (_cache_docs == NULL)
_cache_docs = new TCache_documenti(); _cache_docs = new TCache_documenti();
return _cache_docs->doc(key); return _cache_docs->doc(key);
@ -1454,12 +1448,11 @@ TDocumento & cached_doc(const char* key)
class TLink_riga_documento : public TRiga_documento class TLink_riga_documento : public TRiga_documento
{ {
protected: protected:
const TDocumento_mask* _mask;
const TDocumento_mask * _mask;
virtual const TString& get_str(const char* fieldname) const; virtual const TString& get_str(const char* fieldname) const;
public: public:
virtual const TDocumento & doc() const; virtual const TDocumento& doc() const;
void set_mask(const TDocumento_mask * m) { _mask = m;} void set_mask(const TDocumento_mask * m) { _mask = m;}
virtual real qtaresidua() const; virtual real qtaresidua() const;
@ -1471,8 +1464,7 @@ const TString& TLink_riga_documento::get_str(const char* fieldname) const
{ {
if (strcmp(fieldname, "RESIDUO") == 0) if (strcmp(fieldname, "RESIDUO") == 0)
{ {
TString & value = get_tmp_string(80); TString& value = get_tmp_string();
value = qtaresidua().string(); value = qtaresidua().string();
return value; return value;
} }
@ -1480,17 +1472,17 @@ const TString& TLink_riga_documento::get_str(const char* fieldname) const
return TRiga_documento::get_str(fieldname); return TRiga_documento::get_str(fieldname);
} }
const TDocumento & TLink_riga_documento::doc() const const TDocumento& TLink_riga_documento::doc() const
{ {
if (has_doc()) if (has_doc())
return TRiga_documento::doc(); return TRiga_documento::doc();
TToken_string key;
TToken_string key;
key.add(get_char(RDOC_PROVV)); key.add(get_char(RDOC_PROVV));
key.add(get_int(RDOC_ANNO)); key.add(get_int(RDOC_ANNO));
key.add(get(RDOC_CODNUM)); key.add(get(RDOC_CODNUM));
key.add(get_long(RDOC_NDOC)); key.add(get_long(RDOC_NDOC));
return cached_doc(key);; return cached_doc(key);
} }
real TLink_riga_documento::qtaresidua() const real TLink_riga_documento::qtaresidua() const
@ -1551,7 +1543,7 @@ bool TLink_article_sheet::get_ini_paragraph(const TEdit_field& field, TString& p
TLink_article_sheet::TLink_article_sheet(TCursor& cur, TEdit_field& f, const char * fieldlist, const char * headers) TLink_article_sheet::TLink_article_sheet(TCursor& cur, TEdit_field& f, const char * fieldlist, const char * headers)
: TBrowse_sheet(&cur, fieldlist, TR("Evasione"), headers, 0, f, TToken_string()) : TBrowse_sheet(&cur, fieldlist, TR("Evasione"), headers, 0, f, TToken_string())
{ } { }
bool link_row_handler(TMask_field& f, KEY key ) bool link_row_handler(TMask_field& f, KEY key )
@ -2164,10 +2156,10 @@ bool um_handler( TMask_field& f, KEY key )
if ( key == K_TAB && f.focusdirty()) if ( key == K_TAB && f.focusdirty())
{ {
TMask& row_mask = f.mask( ); TMask& row_mask = f.mask( );
TTable & ums = (TTable &) ((TEdit_field &) f).browse()->cursor()->file(); TTable& ums = (TTable&)((TEdit_field&)f).browse()->cursor()->file();
const TString16 um(f.get()); const TString4 um = f.get();
real fc(1.0); real fc = UNO;
if (um.not_empty() && curr_um.not_empty() && um != curr_um) if (um.not_empty() && curr_um.not_empty() && um != curr_um)
{ {
@ -2175,7 +2167,7 @@ bool um_handler( TMask_field& f, KEY key )
if (ums.read() == NOERR) if (ums.read() == NOERR)
{ {
real qta(row_mask.get_real(FR_QTA)); real qta(row_mask.get_real(FR_QTA));
const TString16 umsrif0(ums.get("S7")); const TString4 umsrif0 = ums.get("S7");
const real fc0 = ums.get_real("R10"); const real fc0 = ums.get_real("R10");
if (um == umsrif0) if (um == umsrif0)
fc = fc0; fc = fc0;
@ -2185,15 +2177,14 @@ bool um_handler( TMask_field& f, KEY key )
if (ums.read() == NOERR) if (ums.read() == NOERR)
{ {
const real fc1 = ums.get_real("R10"); const real fc1 = ums.get_real("R10");
const TString16 umsrif1(ums.get("S7"));
if (fc1 > ZERO) if (fc1 > ZERO)
{ {
const TString& umsrif1 = ums.get("S7");
if (curr_um == umsrif1) if (curr_um == umsrif1)
fc = 1 / fc1; fc = UNO / fc1;
else else
if (umsrif0 == ums.get("S7")) if (umsrif0 == umsrif1)
fc = fc0 / ums.get_real("R10"); fc = fc0 / fc1;
} }
} }
} }
@ -3241,12 +3232,12 @@ bool sottocat_conai_handler(TMask_field& f, KEY key )
return true; return true;
} }
bool peso_conai_handler(TMask_field& f, KEY key ) bool peso_conai_handler(TMask_field& f, KEY key)
{ {
if (key == K_F8) if (key == K_F8)
{ {
const TString & codart = f.mask().get(FR_CODARTMAG); const TString& codart = f.mask().get(FR_CODARTMAG);
TArticolo & articolo = cached_article(codart); const TArticolo& articolo = cached_article(codart);
const TCONAI_class type = conai_id2class(f.dlg()); const TCONAI_class type = conai_id2class(f.dlg());
f.set(articolo.get(conai_peso_name(type, LF_ANAMAG))); f.set(articolo.get(conai_peso_name(type, LF_ANAMAG)));
} }
@ -3258,16 +3249,14 @@ bool datacomp_handler(TMask_field& f, KEY key)
if (key == K_F8) if (key == K_F8)
f.set(f.mask().get(F_DATADOC)); f.set(f.mask().get(F_DATADOC));
if (f.to_check(key, false)) if (f.to_check(key, false) && !f.empty())
{ {
const TDate datadoc = f.mask().get_date(F_DATADOC); const TDate datadoc = f.mask().get_date(F_DATADOC);
const TEsercizi_contabili es_doc; const TEsercizi_contabili esc;
int anno_doc = es_doc.date2esc(datadoc); const int anno_doc = esc.date2esc(datadoc);
const TDate datacomp = f.get(); const TDate datacomp = f.get();
const TEsercizi_contabili es_comp; const int anno_comp = esc.date2esc(datacomp);
int anno_comp = es_comp.date2esc(datacomp);
if (anno_doc != anno_comp) if (anno_doc != anno_comp)
return error_box("La data inizio competenza deve appartenere all'esercizio del documento!"); return error_box("La data inizio competenza deve appartenere all'esercizio del documento!");
} }
@ -3276,7 +3265,7 @@ bool datacomp_handler(TMask_field& f, KEY key)
bool datafcomp_handler(TMask_field& f, KEY key) bool datafcomp_handler(TMask_field& f, KEY key)
{ {
if (f.to_check(key, false)) if (f.to_check(key, false) && !f.empty())
{ {
const TDate datacomp = f.mask().get_date(F_DATACOMP); const TDate datacomp = f.mask().get_date(F_DATACOMP);
const TDate datafcomp = f.get(); const TDate datafcomp = f.get();

View File

@ -48,7 +48,7 @@ bool nar_handler(TMask_field& f, KEY key);
bool subappalto_hndl(TMask_field& f, KEY key); bool subappalto_hndl(TMask_field& f, KEY key);
bool reportba8_hndl(TMask_field& f, KEY key); bool reportba8_hndl(TMask_field& f, KEY key);
bool tipodoc_ok(const TString & tipodoc); bool is_tipodoc_ok(const TString & tipodoc);
TCONAI_class conai_id2class(short id); TCONAI_class conai_id2class(short id);
short conai_peso_id(TCONAI_class cc); short conai_peso_id(TCONAI_class cc);

View File

@ -51,6 +51,13 @@
#define RSS_MATRICOLA 172 #define RSS_MATRICOLA 172
#define RSS_QUALIFICA 173 #define RSS_QUALIFICA 173
#define RSS_TIPOSTRA1 180
#define RSS_DOPOSTRA1 181
#define RSS_COSTOSTRA1 182
#define RSS_TIPOSTRA2 183
#define RSS_DOPOSTRA2 184
#define RSS_COSTOSTRA2 185
#ifndef __VETBANAL_H #ifndef __VETBANAL_H
#include "vetbanal.h" #include "vetbanal.h"
#endif #endif

View File

@ -1,470 +1,517 @@
#include "vetbrss.h" #include "vetbrss.h"
TOOLBAR "Toolbar" 0 0 0 2 TOOLBAR "Toolbar" 0 0 0 2
#include <relapbar.h> #include <relapbar.h>
ENDPAGE ENDPAGE
PAGE "Risorse" 0 0 0 0 PAGE "Risorse" 0 0 0 0
GROUPBOX DLG_NULL 75 8 GROUPBOX DLG_NULL 75 8
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
FLAGS "R" FLAGS "R"
END END
STRING RSS_CODICE 16 STRING RSS_CODICE 16
BEGIN BEGIN
PROMPT 2 1 "Codice " PROMPT 2 1 "Codice "
FIELD CODTAB FIELD CODTAB
KEY 1 KEY 1
USE RSS USE RSS
FLAGS "U" FLAGS "U"
INPUT CODTAB RSS_CODICE INPUT CODTAB RSS_CODICE
DISPLAY "Codice@16" CODTAB DISPLAY "Codice@16" CODTAB
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
OUTPUT RSS_CODICE CODTAB OUTPUT RSS_CODICE CODTAB
OUTPUT RSS_RAGSOC S0 OUTPUT RSS_RAGSOC S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,10@ MESSAGE COPY,10@
END END
STRING RSS_RAGSOC 50 STRING RSS_RAGSOC 50
BEGIN BEGIN
PROMPT 9 2 "" PROMPT 2 2 "Nome "
FIELD S0 FIELD S0
KEY 2 KEY 2
USE RSS KEY 2 USE RSS KEY 2
INPUT S0 RSS_RAGSOC INPUT S0 RSS_RAGSOC
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
DISPLAY "Codice@16" CODTAB DISPLAY "Codice@16" CODTAB
COPY OUTPUT RSS_CODICE COPY OUTPUT RSS_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,20@ MESSAGE COPY,20@
END END
LIST RSS_COLLAB 1 10 STRING RSS_MATRICOLA 20
BEGIN BEGIN
PROMPT 2 3 "Tipo " PROMPT 42 1 "Matricola "
ITEM "|Nessuno" FIELD S3[21,40]
MESSAGE HIDE,1@|HIDE,2@|ENABLE,RSS_RAGSOC END
ITEM "D|Dipendente"
MESSAGE HIDE,1@|SHOW,2@|DISABLE,RSS_RAGSOC STRING RSS_QUALIFICA 20
ITEM "F|Fornitore" BEGIN
MESSAGE SHOW,1@|HIDE,2@|DISABLE,RSS_RAGSOC PROMPT 42 3 "Qualifica "
FIELD B0 FIELD S3[41,60]
END END
NUMBER RSS_CODFORN 6 LIST RSS_COLLAB 1 10
BEGIN BEGIN
PROMPT 32 3 "" PROMPT 2 3 "Tipo "
USE LF_CLIFO ITEM "|Nessuno"
INPUT TIPOCF "F" MESSAGE HIDE,1@|HIDE,2@|ENABLE,RSS_RAGSOC
INPUT CODCF RSS_CODFORN ITEM "D|Dipendente"
DISPLAY "Codice" CODCF MESSAGE HIDE,1@|SHOW,2@|DISABLE,RSS_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC ITEM "F|Fornitore"
OUTPUT RSS_CODFORN CODCF MESSAGE SHOW,1@|HIDE,2@|DISABLE,RSS_RAGSOC
OUTPUT RSS_RAGSOC RAGSOC FIELD B0
OUTPUT RSS_ADDRESS_F INDCF END
OUTPUT RSS_CIVICO_F CIVCF
OUTPUT RSS_STATO_F STATOCF NUMBER RSS_CODFORN 6
OUTPUT RSS_COMUNE_F COMCF BEGIN
CHECKTYPE REQUIRED PROMPT 30 3 ""
FIELD I6 USE LF_CLIFO
WARNING "Codice fornitore inesistente" INPUT TIPOCF "F"
ADD RUN CG0 -1 INPUT CODCF RSS_CODFORN
GROUP 1 DISPLAY "Codice" CODCF
END DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT RSS_CODFORN CODCF
NUMBER RSS_CODFIS 6 OUTPUT RSS_RAGSOC RAGSOC
BEGIN OUTPUT RSS_ADDRESS_F INDCF
PROMPT 32 3 "" OUTPUT RSS_CIVICO_F CIVCF
USE LF_ANAG OUTPUT RSS_STATO_F STATOCF
INPUT TIPOA "F" OUTPUT RSS_COMUNE_F COMCF
INPUT CODANAGR RSS_CODFIS CHECKTYPE REQUIRED
DISPLAY "Codice" CODANAGR FIELD I6
DISPLAY "Cognome@30" RAGSOC[1,30] WARNING "Codice fornitore inesistente"
DISPLAY "Nome@20" RAGSOC[31,50] ADD RUN CG0 -1
OUTPUT RSS_CODFIS CODANAGR GROUP 1
OUTPUT RSS_RAGSOC RAGSOC END
OUTPUT RSS_ADDRESS_C INDRES
OUTPUT RSS_CIVICO_C CIVRES NUMBER RSS_CODFIS 6
OUTPUT RSS_STATO_C STATORES BEGIN
OUTPUT RSS_COMUNE_C COMRES PROMPT 30 3 ""
CHECKTYPE REQUIRED USE LF_ANAG
WARNING "Codice persona inesistente" INPUT TIPOA "F"
FIELD I6 INPUT CODANAGR RSS_CODFIS
ADD RUN BA4 -1 DISPLAY "Codice" CODANAGR
GROUP 2 DISPLAY "Cognome@30" RAGSOC[1,30]
END DISPLAY "Nome@20" RAGSOC[31,50]
OUTPUT RSS_CODFIS CODANAGR
STRING RSS_ADDRESS_F 35 OUTPUT RSS_RAGSOC RAGSOC
BEGIN OUTPUT RSS_ADDRESS_C INDRES
PROMPT 2 4 "Indirizzo " OUTPUT RSS_CIVICO_C CIVRES
FLAGS "D" OUTPUT RSS_STATO_C STATORES
GROUP 1 OUTPUT RSS_COMUNE_C COMRES
END CHECKTYPE REQUIRED
WARNING "Codice persona inesistente"
STRING RSS_CIVICO_F 5 FIELD I6
BEGIN ADD RUN BA4 -1
PROMPT 65 4 "N. " GROUP 2
FLAGS "D" END
GROUP 1
END STRING RSS_ADDRESS_F 35
BEGIN
NUMBER RSS_STATO_F 3 PROMPT 2 4 "Indirizzo "
BEGIN FLAGS "D"
PROMPT 2 5 "Comune: Stato " GROUP 1
FLAGS "DZ" END
USE %STA
INPUT CODTAB RSS_STATO_F STRING RSS_CIVICO_F 5
OUTPUT RSS_DESTATO_F S0 BEGIN
CHECKTYPE NORMAL PROMPT 65 4 "N. "
GROUP 1 FLAGS "D"
END GROUP 1
END
STRING RSS_DESTATO_F 50
BEGIN NUMBER RSS_STATO_F 3
PROMPT 23 5 "" BEGIN
FLAGS "D" PROMPT 2 5 "Comune: Stato "
GROUP 1 FLAGS "DZ"
END USE %STA
INPUT CODTAB RSS_STATO_F
STRING RSS_COMUNE_F 4 OUTPUT RSS_DESTATO_F S0
BEGIN CHECKTYPE NORMAL
PROMPT 8 6 ":Codice " GROUP 1
FLAGS "DU" END
USE LF_COMUNI
INPUT STATO RSS_STATO_F STRING RSS_DESTATO_F 50
INPUT COM RSS_COMUNE_F BEGIN
OUTPUT RSS_DENCOM_F DENCOM PROMPT 23 5 ""
CHECKTYPE NORMAL FLAGS "D"
GROUP 1 GROUP 1
END END
STRING RSS_DENCOM_F 50 STRING RSS_COMUNE_F 4
BEGIN BEGIN
PROMPT 23 6 "" PROMPT 8 6 ":Codice "
FLAGS "D" FLAGS "DU"
GROUP 1 USE LF_COMUNI
END INPUT STATO RSS_STATO_F
INPUT COM RSS_COMUNE_F
STRING RSS_ADDRESS_C 35 OUTPUT RSS_DENCOM_F DENCOM
BEGIN CHECKTYPE NORMAL
PROMPT 2 4 "Indirizzo " GROUP 1
FLAGS "D" END
GROUP 2
END STRING RSS_DENCOM_F 50
BEGIN
STRING RSS_CIVICO_C 5 PROMPT 23 6 ""
BEGIN FLAGS "D"
PROMPT 65 4 "N. " GROUP 1
FLAGS "D" END
GROUP 2
END STRING RSS_ADDRESS_C 35
BEGIN
NUMBER RSS_STATO_C 3 PROMPT 2 4 "Indirizzo "
BEGIN FLAGS "D"
PROMPT 2 5 "Comune: Stato " GROUP 2
FLAGS "DZ" END
USE %STA
INPUT CODTAB RSS_STATO_C STRING RSS_CIVICO_C 5
OUTPUT RSS_DESTATO_C S0 BEGIN
CHECKTYPE NORMAL PROMPT 65 4 "N. "
GROUP 2 FLAGS "D"
END GROUP 2
END
STRING RSS_DESTATO_C 50
BEGIN NUMBER RSS_STATO_C 3
PROMPT 23 5 "" BEGIN
FLAGS "D" PROMPT 2 5 "Comune: Stato "
GROUP 2 FLAGS "DZ"
END USE %STA
INPUT CODTAB RSS_STATO_C
STRING RSS_COMUNE_C 4 OUTPUT RSS_DESTATO_C S0
BEGIN CHECKTYPE NORMAL
PROMPT 8 6 ":Codice " GROUP 2
FLAGS "DU" END
USE LF_COMUNI
INPUT STATO RSS_STATO_C STRING RSS_DESTATO_C 50
INPUT COM RSS_COMUNE_C BEGIN
OUTPUT RSS_DENCOM_C DENCOM PROMPT 23 5 ""
CHECKTYPE NORMAL FLAGS "D"
GROUP 2 GROUP 2
END END
STRING RSS_DENCOM_C 50 STRING RSS_COMUNE_C 4
BEGIN BEGIN
PROMPT 23 6 "" PROMPT 8 6 ":Codice "
FLAGS "D" FLAGS "DU"
GROUP 2 USE LF_COMUNI
END INPUT STATO RSS_STATO_C
INPUT COM RSS_COMUNE_C
STRING RSS_TIPORIGA 4 OUTPUT RSS_DENCOM_C DENCOM
BEGIN CHECKTYPE NORMAL
PROMPT 1 8 "Tipo riga " GROUP 2
FIELD S8 END
FLAGS "U"
USE %TRI SELECT S7=="R" STRING RSS_DENCOM_C 50
INPUT CODTAB RSS_TIPORIGA BEGIN
DISPLAY "Codice" CODTAB PROMPT 23 6 ""
DISPLAY "Descrizione@50" S0 FLAGS "D"
OUTPUT RSS_TIPORIGA CODTAB GROUP 2
OUTPUT RSS_DESCRRIGA S0 END
CHECKTYPE REQUIRED
END STRING RSS_TIPORIGA 4
BEGIN
STRING RSS_DESCRRIGA 50 PROMPT 1 8 "Tipo riga "
BEGIN FIELD S8
PROMPT 24 8 "" FLAGS "U"
USE %TRI KEY 2 SELECT S7=="R" USE %TRI SELECT S7=="R"
INPUT S0 RSS_DESCRRIGA INPUT CODTAB RSS_TIPORIGA
DISPLAY "Descrizione@50" S0 DISPLAY "Codice" CODTAB
DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0
COPY OUTPUT RSS_TIPORIGA OUTPUT RSS_TIPORIGA CODTAB
END OUTPUT RSS_DESCRRIGA S0
CHECKTYPE REQUIRED
END
STRING RSS_CODIVA 4
BEGIN STRING RSS_DESCRRIGA 50
PROMPT 1 9 "Codice IVA " BEGIN
FIELD S3[1,4] PROMPT 24 8 ""
FLAGS "U" USE %TRI KEY 2 SELECT S7=="R"
USE %IVA INPUT S0 RSS_DESCRRIGA
INPUT CODTAB RSS_CODIVA DISPLAY "Descrizione@50" S0
DISPLAY "Codice " CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 COPY OUTPUT RSS_TIPORIGA
OUTPUT RSS_CODIVA CODTAB END
OUTPUT RSS_DESIVA S0
CHECKTYPE NORMAL
END STRING RSS_CODIVA 4
BEGIN
PROMPT 1 9 "Codice IVA "
STRING RSS_DESIVA 50 FIELD S3[1,4]
BEGIN FLAGS "U"
PROMPT 24 9 "" USE %IVA
USE %IVA KEY 2 INPUT CODTAB RSS_CODIVA
INPUT S0 RSS_DESIVA DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice " CODTAB OUTPUT RSS_CODIVA CODTAB
COPY OUTPUT RSS_CODIVA OUTPUT RSS_DESIVA S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING RSS_CODVAL 4
BEGIN STRING RSS_DESIVA 50
PROMPT 1 10 "Codice valuta " BEGIN
FIELD S4 PROMPT 24 9 ""
FLAGS "U" USE %IVA KEY 2
USE %VAL INPUT S0 RSS_DESIVA
INPUT CODTAB RSS_CODVAL DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50" S0 COPY OUTPUT RSS_CODIVA
OUTPUT RSS_CODVAL CODTAB CHECKTYPE NORMAL
OUTPUT RSS_DESVAL S0 END
CHECKTYPE NORMAL
END STRING RSS_CODVAL 4
BEGIN
STRING RSS_DESVAL 50 PROMPT 1 10 "Codice valuta "
BEGIN FIELD S4
PROMPT 24 10 "" FLAGS "U"
USE %VAL KEY 2 USE %VAL
INPUT S0 RSS_DESVAL INPUT CODTAB RSS_CODVAL
DISPLAY "Descrizione@50" S0 DISPLAY "Codice" CODTAB
DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0
COPY OUTPUT RSS_CODVAL OUTPUT RSS_CODVAL CODTAB
CHECKTYPE NORMAL OUTPUT RSS_DESVAL S0
END CHECKTYPE NORMAL
END
STRING RSS_CODART 20
BEGIN STRING RSS_DESVAL 50
PROMPT 1 11 "Articolo (CI) " BEGIN
USE LF_ANAMAG PROMPT 24 10 ""
INPUT CODART RSS_CODART USE %VAL KEY 2
DISPLAY "Codice@20" CODART INPUT S0 RSS_DESVAL
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" S0
OUTPUT RSS_CODART CODART DISPLAY "Codice" CODTAB
OUTPUT RSS_DESCART DESCR COPY OUTPUT RSS_CODVAL
CHECKTYPE NORMAL CHECKTYPE NORMAL
FLAGS "U" END
FIELD S2
END STRING RSS_CODART 20
BEGIN
STRING RSS_DESCART 50 34 PROMPT 1 11 "Articolo (CI) "
BEGIN USE LF_ANAMAG
PROMPT 40 11 "" INPUT CODART RSS_CODART
USE LF_ANAMAG KEY 2 DISPLAY "Codice@20" CODART
INPUT DESCR RSS_DESCART DISPLAY "Descrizione@50" DESCR
DISPLAY "Descrizione@50" DESCR OUTPUT RSS_CODART CODART
DISPLAY "Codice@20" CODART OUTPUT RSS_DESCART DESCR
COPY OUTPUT RSS_CODART CHECKTYPE NORMAL
CHECKTYPE NORMAL FLAGS "U"
FLAGS "U" FIELD S2
END END
LISTBOX RSS_CAMPI 15 STRING RSS_DESCART 50 34
BEGIN BEGIN
PROMPT 1 12 "Campo default " PROMPT 40 11 ""
FIELD S6 USE LF_ANAMAG KEY 2
ITEM "Q|Qta prezzo " INPUT DESCR RSS_DESCART
FLAGS "H" DISPLAY "Descrizione@50" DESCR
END DISPLAY "Codice@20" CODART
COPY OUTPUT RSS_CODART
CURRENCY RSS_PREZZO 15 CHECKTYPE NORMAL
BEGIN FLAGS "U"
PROMPT 1 12 "Prezzo " END
FIELD R10
FLAGS "U" LISTBOX RSS_CAMPI 15
END BEGIN
PROMPT 1 12 "Campo default "
NUMBER RSS_QTA 13 5 FIELD S6
BEGIN ITEM "Q|Qta prezzo "
PROMPT 38 12 "Quantita' " FLAGS "H"
FIELD R1 END
END
CURRENCY RSS_PREZZO 15
STRING RSS_UM 2 BEGIN
BEGIN PROMPT 1 12 "Prezzo "
PROMPT 67 12 "U.M. " FIELD R10
FIELD S7 FLAGS "U"
FLAGS "U" END
USE %UMS
INPUT CODTAB RSS_UM NUMBER RSS_QTA 13 5
DISPLAY "U.M." CODTAB BEGIN
DISPLAY "Descrizione@50" S0 PROMPT 38 12 "Quantita' "
OUTPUT RSS_UM CODTAB FIELD R1
CHECKTYPE NORMAL END
END
STRING RSS_UM 2
STRING RSS_PRESTAZ 8 BEGIN
BEGIN PROMPT 67 12 "U.M. "
PROMPT 1 13 "Prestazione per fatturazione " FIELD S7
USE PRS FLAGS "U"
INPUT CODTAB RSS_PRESTAZ USE %UMS
DISPLAY "Codice@8" CODTAB INPUT CODTAB RSS_UM
DISPLAY "Descrizione@50" S0 DISPLAY "U.M." CODTAB
OUTPUT RSS_PRESTAZ CODTAB DISPLAY "Descrizione@50" S0
CHECKTYPE NORMAL OUTPUT RSS_UM CODTAB
FIELD S5 CHECKTYPE NORMAL
END END
BOOLEAN RSS_MRP_ATTIVO STRING RSS_PRESTAZ 8
BEGIN BEGIN
PROMPT 1 14 "@bCollegamento M.R.P.:" PROMPT 1 13 "Prestazione per fatturazione "
MESSAGE FALSE CLEAR,9@ USE PRS
MESSAGE TRUE ENABLE,9@ INPUT CODTAB RSS_PRESTAZ
END DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
STRING RSS_IMPIANTO 5 OUTPUT RSS_PRESTAZ CODTAB
BEGIN CHECKTYPE NORMAL
PROMPT 25 14 "Impianto " FIELD S5
FIELD S3[5,9] END
USE IMP
INPUT CODTAB RSS_IMPIANTO BOOLEAN RSS_MRP_ATTIVO
DISPLAY "Codice" CODTAB BEGIN
DISPLAY "Descrizione@50" S0 PROMPT 1 14 "@bCollegamento M.R.P.:"
OUTPUT RSS_IMPIANTO CODTAB MESSAGE FALSE CLEAR,9@
GROUP 9 MESSAGE TRUE ENABLE,9@
END END
STRING RSS_LINEA 5 STRING RSS_IMPIANTO 5
BEGIN BEGIN
PROMPT 45 14 "Linea " PROMPT 25 14 "Impianto "
FIELD S3[10,14] FIELD S3[5,9]
USE LNP USE IMP
INPUT CODTAB RSS_LINEA INPUT CODTAB RSS_IMPIANTO
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT RSS_LINEA CODTAB OUTPUT RSS_IMPIANTO CODTAB
GROUP 9 GROUP 9
END END
NUMBER RSS_GRUPPOA 3 STRING RSS_LINEA 5
BEGIN BEGIN
PROMPT 2 15 "Conto acquisti " PROMPT 45 14 "Linea "
FIELD I3 FIELD S3[10,14]
END USE LNP
INPUT CODTAB RSS_LINEA
NUMBER RSS_CONTOA 3 DISPLAY "Codice" CODTAB
BEGIN DISPLAY "Descrizione@50" S0
PROMPT 22 15 "" OUTPUT RSS_LINEA CODTAB
FIELD I4 GROUP 9
END END
NUMBER RSS_SOTTOA 6 NUMBER RSS_GRUPPOA 3
BEGIN BEGIN
PROMPT 28 15 "" PROMPT 2 15 "Conto acquisti "
FIELD I5 FIELD I3
USE LF_PCON SELECT SOTTOCONTO!="" END
INPUT GRUPPO RSS_GRUPPOA
INPUT CONTO RSS_CONTOA NUMBER RSS_CONTOA 3
INPUT SOTTOCONTO RSS_SOTTOA BEGIN
DISPLAY "Gruppo@3" GRUPPO PROMPT 22 15 ""
DISPLAY "Conto@3" CONTO FIELD I4
DISPLAY "Sottoconto@6" SOTTOCONTO END
DISPLAY "Descrizione@50" DESCR
OUTPUT RSS_GRUPPOA GRUPPO NUMBER RSS_SOTTOA 6
OUTPUT RSS_CONTOA CONTO BEGIN
OUTPUT RSS_SOTTOA SOTTOCONTO PROMPT 28 15 ""
OUTPUT RSS_DESCRCONTOA DESCR FIELD I5
CHECKTYPE NORMAL USE LF_PCON SELECT SOTTOCONTO!=""
WARNING "Sottoconto errato" INPUT GRUPPO RSS_GRUPPOA
ADD RUN CG0 -0 INPUT CONTO RSS_CONTOA
END INPUT SOTTOCONTO RSS_SOTTOA
DISPLAY "Gruppo@3" GRUPPO
STRING RSS_DESCRCONTOA 50 35 DISPLAY "Conto@3" CONTO
BEGIN DISPLAY "Sottoconto@6" SOTTOCONTO
PROMPT 39 15 "" DISPLAY "Descrizione@50" DESCR
FLAG "U" OUTPUT RSS_GRUPPOA GRUPPO
USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" OUTPUT RSS_CONTOA CONTO
INPUT DESCR RSS_DESCRCONTOA OUTPUT RSS_SOTTOA SOTTOCONTO
DISPLAY "Descrizione@50" DESCR OUTPUT RSS_DESCRCONTOA DESCR
DISPLAY "Gruppo@3" GRUPPO CHECKTYPE NORMAL
DISPLAY "Conto@3" CONTO WARNING "Sottoconto errato"
DISPLAY "Sottoconto@6" SOTTOCONTO ADD RUN CG0 -0
COPY OUTPUT RSS_SOTTOA END
CHECKTYPE NORMAL
WARNING "Il conto deve essere un ricavo" STRING RSS_DESCRCONTOA 50 35
ADD RUN CG0 -0 BEGIN
END PROMPT 39 15 ""
FLAG "U"
STRING RSS_MATRICOLA 20 USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
BEGIN INPUT DESCR RSS_DESCRCONTOA
PROMPT 2 20 "Matricola " DISPLAY "Descrizione@50" DESCR
FIELD S3[21,40] DISPLAY "Gruppo@3" GRUPPO
END DISPLAY "Conto@3" CONTO
DISPLAY "Sottoconto@6" SOTTOCONTO
STRING RSS_QUALIFICA 20 COPY OUTPUT RSS_SOTTOA
BEGIN CHECKTYPE NORMAL
PROMPT 2 21 "Qualifica " WARNING "Il conto deve essere un ricavo"
FIELD S3[41,60] ADD RUN CG0 -0
END END
ENDPAGE STRING RSS_TIPOSTRA1 2
BEGIN
PAGE "Analitica" 11 60 14 PROMPT 1 17 "Tipo ora straordinaria 1 "
USE &CIORE
GROUPBOX DLG_NULL 78 4 INPUT CODTAB RSS_TIPOSTRA1
BEGIN DISPLAY "Codice" CODTAB
PROMPT 1 0 "" DISPLAY "Descrizione@50" S0
FLAGS "R" OUTPUT RSS_TIPOSTRA1 CODTAB
END CHECKTYPE NORMAL
FIELD S9
STRING DLG_NULL 8 END
BEGIN
PROMPT 2 1 "Codice " NUMBER RSS_DOPOSTRA1 2
GROUP 10 BEGIN
FLAGS "D" PROMPT 41 17 "dopo ore "
END FIELD R5
END
STRING DLG_NULL 50
BEGIN CURRENCY RSS_COSTOSTRA1 9
PROMPT 2 2 "Descrizione " BEGIN
GROUP 20 PROMPT 59 17 "Costo "
FLAGS "D" FIELD R6
END END
ENDPAGE STRING RSS_TIPOSTRA2 2
BEGIN
ENDMASK PROMPT 1 18 "Tipo ora straordinaria 2 "
COPY USE RSS_TIPOSTRA1
INPUT CODTAB RSS_TIPOSTRA2
COPY DISPLAY RSS_TIPOSTRA1
OUTPUT RSS_TIPOSTRA2 CODTAB
CHECKTYPE NORMAL
FIELD S10
END
NUMBER RSS_DOPOSTRA2 2
BEGIN
PROMPT 41 18 "dopo ore "
FIELD R7
END
CURRENCY RSS_COSTOSTRA2 9
BEGIN
PROMPT 59 18 "Costo "
FIELD R8
END
ENDPAGE
PAGE "Analitica" 11 60 14
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 8
BEGIN
PROMPT 2 1 "Codice "
GROUP 10
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 2 2 "Descrizione "
GROUP 20
FLAGS "D"
END
ENDPAGE
ENDMASK

View File

@ -40,6 +40,8 @@
#define F_DESCELABS 157 #define F_DESCELABS 157
#define F_CODELABD 158 #define F_CODELABD 158
#define F_DESCELABD 159 #define F_DESCELABD 159
#define F_CODELABK 160
#define F_DESCELABK 161
#define F_STATOI_MOD_1 201 #define F_STATOI_MOD_1 201
#define F_STATOI_MOD_2 202 #define F_STATOI_MOD_2 202

View File

@ -209,7 +209,7 @@ END
BOOLEAN F_MOVMAG BOOLEAN F_MOVMAG
BEGIN BEGIN
PROMPT 2 14 "Mov. mag. a partire dallo stato " PROMPT 2 14 "Mov. magazzino"
FIELD B1 FIELD B1
MESSAGE FALSE CLEAR,1@ MESSAGE FALSE CLEAR,1@
MESSAGE TRUE ENABLE,1@ MESSAGE TRUE ENABLE,1@
@ -219,7 +219,7 @@ END
STRING F_STATO_MOV_I 1 STRING F_STATO_MOV_I 1
BEGIN BEGIN
PROMPT 38 14 "" PROMPT 24 14 "dallo stato "
FIELD S7 FIELD S7
USE %STD USE %STD
INPUT CODTAB F_STATO_MOV_I INPUT CODTAB F_STATO_MOV_I
@ -1222,14 +1222,14 @@ BEGIN
FIELD S11[5,5] FIELD S11[5,5]
END END
GROUPBOX DLG_NULL 42 3 GROUPBOX DLG_NULL 45 3
BEGIN BEGIN
PROMPT 41 1 "@bIntra" PROMPT 38 1 "@bIntra"
END END
STRING F_NATURA 1 STRING F_NATURA 1
BEGIN BEGIN
PROMPT 42 2 "Natura transazione " PROMPT 39 2 "Natura transazione "
FLAGS "U" FLAGS "U"
USE %INT USE %INT
INPUT CODTAB F_NATURA INPUT CODTAB F_NATURA
@ -1256,7 +1256,7 @@ BEGIN
FIELD B11 FIELD B11
END END
GROUPBOX DLG_NULL 78 5 GROUPBOX DLG_NULL 78 6
BEGIN BEGIN
PROMPT 1 12 "@bElaborazioni automatiche" PROMPT 1 12 "@bElaborazioni automatiche"
END END
@ -1336,6 +1336,29 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_CODELABK 8
BEGIN
PROMPT 2 16 "Speciale "
FLAG "U"
FIELD S3[29,36]
CHECKTYPE NORMAL
COPY USE F_CODELAB
INPUT CODTAB F_CODELABD
COPY DISPLAY F_CODELAB
OUTPUT F_CODELABK CODTAB
OUTPUT F_DESCELABK S0
HELP "Codice dell'elaborazione differita da eseguire"
END
STRING F_DESCELABK 50
BEGIN
PROMPT 26 16 ""
COPY USE F_DESCELAB
INPUT S0 F_DESCELABD
COPY DISPLAY F_DESCELAB
COPY OUTPUT F_CODELABK
CHECKTYPE NORMAL
END
ENDPAGE ENDPAGE

View File

@ -6,7 +6,7 @@ TOOLBAR "Toolbar" 0 0 0 2
ENDPAGE ENDPAGE
PAGE "Unita' di misura " 0 0 0 0 PAGE "Unità di misura " 0 0 0 0
GROUPBOX DLG_NULL 75 7 GROUPBOX DLG_NULL 75 7
BEGIN BEGIN
@ -16,7 +16,7 @@ END
STRING F_UM 2 STRING F_UM 2
BEGIN BEGIN
PROMPT 2 2 "Unita' di misura " PROMPT 2 2 "Unità di misura "
FIELD CODTAB FIELD CODTAB
KEY 1 KEY 1
FLAG "U" FLAG "U"
@ -44,7 +44,7 @@ END
STRING F_UMR 2 STRING F_UMR 2
BEGIN BEGIN
PROMPT 2 8 "Unita' di riferimento " PROMPT 2 8 "Unità di riferimento "
FIELD S7 FIELD S7
FLAG "U" FLAG "U"
USE %UMS USE %UMS
@ -60,7 +60,7 @@ BEGIN
PROMPT 2 10 "Fatt.conversione al riferim." PROMPT 2 10 "Fatt.conversione al riferim."
FIELD R10 FIELD R10
VALIDATE REQIF_FUNC 1 F_UMR VALIDATE REQIF_FUNC 1 F_UMR
WARNING "Fattore di conversione obbligatorio se specificata l'unita' di misura di riferimento" WARNING "Fattore di conversione obbligatorio se specificata l'unità di misura di riferimento"
END END
BOOLEAN F_ROUND BOOLEAN F_ROUND
@ -78,6 +78,21 @@ BEGIN
FIELD I0 FIELD I0
END END
DATE DLG_NULL
BEGIN
PROMPT 1 -1 "Ultimo aggiornamento "
FIELD DATAAGG
FLAGS "D"
END
STRING DLG_NULL 16
BEGIN
PROMPT 41 -1 "Ultimo utente "
FIELD UTENTE
FLAGS "D"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK