Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Aggiunta ricezione documenti di vendita e righe documenti di vendita


git-svn-id: svn://10.65.10.50/trunk@7104 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1998-09-21 15:57:05 +00:00
parent 736e086a7d
commit e071d68bee
4 changed files with 1173 additions and 16 deletions

View File

@ -33,7 +33,8 @@ public:
bool TMask36::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch(o.dlg())
const short id = o.dlg();
switch(id)
{
case 100:
if (e == fe_modify || e == fe_close)
@ -42,20 +43,18 @@ bool TMask36::on_field_event(TOperable_field& o, TField_event e, long jolly)
return error_box("Directory non valida");
}
break;
case 101:
case 102:
case 103:
case 104:
case 105:
if (e == fe_modify || e == fe_close)
default :
if (id > 100 && id < 200)
{
TFilename name = get(100);
name.add(o.get());
if (!name.exist())
return error_box("File non valido");
if (e == fe_modify || e == fe_close)
{
TFilename name = get(100);
name.add(o.get());
if (!name.exist())
return error_box("File non valido");
}
}
break;
default : break;
}
return TRUE;
}
@ -102,12 +101,13 @@ const TString* TBankitalia::codban2abicab(const char* cod)
}
///////////////////////////////////////////////////////////
// TTrasfer36 Applicazione di importazione dati da 36
// TTrasfer36 Applicazione di importazione dati da IBM36
///////////////////////////////////////////////////////////
class TTrasfer36 : public TSkeleton_application
{
TBankitalia _bankitalia;
TAssoc_array _testate;
protected:
virtual void main_loop();
@ -130,6 +130,8 @@ public:
void import_condv(const TFilename& name, TBrowsefile_field& bf);
void import_movmag(const TFilename& name, TBrowsefile_field& bf);
void import_rigmag(const TFilename& name, TBrowsefile_field& bf);
void import_docven(const TFilename& name, TBrowsefile_field& bf);
void import_rdocven(const TFilename& name, TBrowsefile_field& bf);
};
const TString& TTrasfer36::cap2com(const TString& cap, const TString& name) const
@ -1170,6 +1172,276 @@ void TTrasfer36::import_rigmag(const TFilename& name, TBrowsefile_field& bf)
bf.add_line("");
}
void TTrasfer36::import_docven(const TFilename& name, TBrowsefile_field& bf)
{
TString msg, str;
msg = "Importazione documenti di vendita";
TProgind pi(::fsize(name), msg, TRUE, TRUE);
TFile_text file(name, "ibm36dv.ini");
_testate.destroy();
long valid = 0;
msg.insert("@b", 0);
bf.add_line(msg);
bf.add_line("");
TRelation docven(LF_DOC);
TRectype& doc = docven.curr();
TRecord_text curr;
TString annodoc, mesedoc, giornodoc, datadoc;
while (file.read(curr) == NOERR)
{
pi.setstatus(file.read_file()->tellg());
if (pi.iscancelled())
break;
const char stato_record = file.get_field(curr, "STATO RECORD")[0];
if (stato_record == 'A')
continue;
annodoc = file.get_field(curr, "ANNO DOCUMENTO");
annodoc.insert("19", 0);
file.add_field(curr, "ANNO DOCUMENTO", annodoc);
datadoc = file.get_field(curr, "DATA DOCUMENTO");
mesedoc = datadoc.left(2);
giornodoc = datadoc.mid(2);
datadoc = giornodoc;
datadoc << '-' << mesedoc << '-' << annodoc;
file.add_field(curr, "DATA DOCUMENTO", datadoc);
str = file.get_field(curr, "TIPOCF");
str = (str == "2") ? "F" : "C";
file.add_field(curr, "TIPOCF", str);
mettilavirgola(file, curr, "CAMBIO", 18, 5);
machedata(file, curr, "DATAINSC");
str = file.get_field(curr, "CODICE BANCA");
if (str.not_empty())
{
const TString* bank = _bankitalia.codban2abicab(str);
if (bank)
{
docven.curr().put("CODABIP", bank->left(5));
docven.curr().put("CODCABP", bank->mid(5));
}
else
{
msg = "Ipossibile determinare l'ABI/CAB della banca di presentazione ";
msg << str << " in un documento di vendita";
bf.add_line(msg);
}
}
str = file.get_field(curr, "SCONTO");
if (str.not_empty())
{
TString sconto;
for (int s = 0; s < 3; s++)
{
real sco(str.mid(s*5, 5));
sco /= 100.0;
if (!sco.is_zero())
{
if (sconto.not_empty() && sco > 0.0)
sconto << '+';
}
sconto << sco.string(".2");
}
file.add_field(curr, "SCONTO", sconto);
}
machedata(file, curr, "DATADOCRIF");
machedata(file, curr, "DATAPART");
mettilavirgola(file, curr, "IMPPAGATO", 18, 2);
str = file.get_field(curr, "ACCSALDO");
str = (str == "S") ? "X" : "";
file.add_field(curr, "ACCSALDO", str);
machedata(file, curr, "DATACONS");
#ifdef DBG
docven.curr().put("PROVV", "P"); // Tutto provvisorio in DEBUG
#else
docven.curr().put("PROVV", "D"); // Tutto definitivo alla PRASSI
#endif
const int err = file.autosave(docven, curr);
if (err != NOERR)
{
msg = "! Errore di scrittura sul file LF_DOC: ";
msg << err;
bf.add_line(msg);
}
else
{
valid++;
// Memorizza il numero record per le righe del documento
str = file.get_field(curr, "NUMERO RECORD");
if (str.not_empty())
{
real recno = docven.lfile().recno();
_testate.add(str, recno);
}
}
}
// Messaggio finale di elaborazione
msg = "Record importati: ";
msg << valid;
bf.add_line(msg);
bf.add_line("");
}
void TTrasfer36::import_rdocven(const TFilename& name, TBrowsefile_field& bf)
{
TString msg, str;
msg = "Importazione righe documenti di vendita";
TProgind pi(::fsize(name), msg, TRUE, TRUE);
TFile_text file(name, "ibm36rdv.ini");
long testate = 0, righe = 0;
msg.insert("@b", 0);
bf.add_line(msg);
bf.add_line("");
TRelation docven(LF_DOC);
TRectype& doc = docven.curr();
TRelation rdocven(LF_RIGHEDOC);
TRectype& rdoc = rdocven.curr();
TRecord_text curr;
while (file.read(curr) == NOERR)
{
pi.setstatus(file.read_file()->tellg());
if (pi.iscancelled())
break;
// Ignora i clienti occasionali ed altri tipi sconosciuti
if (curr.type() == "A1" || curr.type()[0] > 'B')
continue;
const char stato_record = file.get_field(curr, "STATO RECORD")[0];
if (stato_record == 'A')
continue;
str = file.get_field(curr, "NUMERO RECORD");
real* recno = (real*)_testate.objptr(str);
if (recno != NULL)
{
const int err = docven.lfile().readat(recno->integer());
if (err != NOERR)
recno = NULL;
}
if (recno == NULL)
{
msg = "! Impossibile tovare la testata del ";
msg << "record " << curr.type() << ' ' << str;
bf.add_line(msg);
continue;
}
if (curr.type() == "A2")
{
str = file.get_field(curr, "PERCSPINC");
str = (str == "S") ? "100" : "0";
file.add_field(curr, "PERCSPINC", str);
bool addebito_bolli = FALSE;
str = file.get_field(curr, "ADDEBITO BOLLI RIBA");
str << file.get_field(curr, "ADDEBITO BOLLI TRATTE");
str << file.get_field(curr, "ADDEBITO BOLLI DOCUMENTI");
str = (str.find('S') >= 0) ? "X" : " ";
file.add_field(curr, "ADDEBITO BOLLI RIBA", str);
const int err = file.autosave(docven, curr);
if (err != NOERR)
{
msg = "! Errore di scrittura sul file LF_DOC: ";
msg << err;
bf.add_line(msg);
}
else
testate++;
}
if (curr.type()[0] == 'B')
{
str = file.get_field(curr, "CODMAG");
str << file.get_field(curr, "CODDEP");
file.add_field(curr, "CODMAG", str);
mettilavirgola(file, curr, "QTAEVASA", 11, 3);
mettilavirgola(file, curr, "QTA", 11, 3);
mettilavirgola(file, curr, "PREZZO", 11, 2);
str.cut(0);
for (int s = 0; s < 2; s++)
{
TString16 sconto = file.get_field(curr, s == 0 ? "SCONTO" : "SCONTO2");
real sco(sconto);
sco /= 100.0;
if (!sco.is_zero())
{
if (str.not_empty() && sco > 0.0)
sconto << '+';
str << sconto;
}
}
if (str.not_empty())
file.add_field(curr, "SCONTO", str);
mettilavirgola(file, curr, "PERCPROVV", 5, 2);
mettilavirgola(file, curr, "TARA", 7, 2);
mettilavirgola(file, curr, "PNETTO", 7, 2);
str = file.get_field(curr, "CODMAGC");
str << file.get_field(curr, "CODDEPC");
file.add_field(curr, "CODMAGC", str);
rdoc.put("PROVV", doc.get("PROVV"));
rdoc.put("ANNO", doc.get("ANNO"));
rdoc.put("CODNUM", doc.get("CODNUM"));
rdoc.put("NDOC", doc.get("NDOC"));
str = file.get_field(curr, "NRIGA");
rdoc.put("NRIGA", str);
const int err = file.autosave(rdocven, curr);
if (err != NOERR)
{
msg = "! Errore di scrittura sul file LF_RDOC: ";
msg << err;
bf.add_line(msg);
}
else
righe++;
}
}
_testate.destroy();
// Messaggio finale di elaborazione
msg = "Record di testata importati: ";
msg << testate;
bf.add_line(msg);
msg = "Record di righe importati: ";
msg << righe;
bf.add_line(msg);
bf.add_line("");
}
void TTrasfer36::mask2ini(TMask& m, bool load)
{
TConfig cfg(CONFIG_DITTA, "ibm36");
@ -1203,14 +1475,14 @@ void TTrasfer36::main_loop()
{
vw.destroy_lines();
const TFilename dir = m.get(100);
for (short id = 101; id <= 106; id++)
for (short id = 101; id <= 108; id++)
{
const TMask_field& fld = m.field(id);
if (fld.enabled() && !fld.empty())
{
TFilename name = dir;
name.add(fld.get());
switch(fld.dlg())
switch(id)
{
case 101: import_tables(name, bf); break;
case 102: import_clifor(name, bf); break;
@ -1218,6 +1490,8 @@ void TTrasfer36::main_loop()
case 104: import_movmag(name, bf); break;
case 105: import_rigmag(name, bf); break;
case 106: import_condv(name, bf); break;
case 107: import_docven(name, bf); break;
case 108: import_rdocven(name, bf); break;
default : break;
}
}

View File

@ -92,9 +92,26 @@ BEGIN
PROMPT 13 5 ""
END
BOOLEAN 207
BEGIN
PROMPT 1 6 "Doc.Ven."
MESSAGE FALSE DISABLE,107|DISABLE,108
MESSAGE TRUE ENABLE,107|ENABLE,108
END
STRING 107 16
BEGIN
PROMPT 13 6 ""
END
STRING 108 16
BEGIN
PROMPT 37 6 "Rig.Ven. "
END
BROWSEFILE 300 -3 -1
BEGIN
PROMPT 0 6 ""
PROMPT 0 7 ""
FLAGS "R"
END

265
ibm36/ibm36dv.ini Executable file
View File

@ -0,0 +1,265 @@
[MAIN]
TYPEPOS=0
TYPELEN=0
[RECORD]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = TIPO DOCUMENTO
POSITION(1) = 1
LENGTH(1) = 2
FIELD(1) = TIPODOC
NAME(2) = ANNO DOCUMENTO
POSITION(2) = 3
LENGTH(2) = 2
FIELD(2) = ANNO
NAME(3) = NUMERAZIONE DOCUMENTO
POSITION(3) = 5
LENGTH(3) = 1
FIELD(3) = CODNUM
NAME(4) = TIPO DOCUMENTO
POSITION(4) = 6
LENGTH(4) = 6
FIELD(4) = NDOC
NAME(5) = STATO DOCUMENTO
POSITION(5) = 12
LENGTH(5) = 1
FIELD(5) = STATO
NAME(6) = PROFILO DOCUMENTO
POSITION(6) = 13
LENGTH(6) = 2
NAME(7) = DATA DOCUMENTO
POSITION(7) = 15
LENGTH(7) = 4
FIELD(7) = DATADOC
NAME(8) = OCFPI
POSITION(8) = 19
LENGTH(8) = 16
FIELD(8) = OCFPI
NAME(9) = TIPOCF
POSITION(9) = 35
LENGTH(9) = 1
FIELD(9) = TIPOCF
NAME(10) = CODCF
POSITION(10) = 36
LENGTH(10) = 6
FIELD(10) = CODCF
NAME(11) = CATVEN
POSITION(11) = 42
LENGTH(11) = 2
FIELD(11) = CATVEN
NAME(12) = ZONA
POSITION(12) = 44
LENGTH(12) = 2
FIELD(12) = ZONA
NAME(13) = CODVAL
POSITION(13) = 46
LENGTH(13) = 3
FIELD(13) = CODVAL
NAME(14) = CAMBIO
POSITION(14) = 49
LENGTH(14) = 11
FIELD(14) = CAMBIO
NAME(15) = CODLIN
POSITION(15) = 60
LENGTH(15) = 1
FIELD(15) = CODLIN
NAME(16) = SOSPENSIONE IMPOSTA
POSITION(16) = 61
LENGTH(16) = 1
NAME(17) = RAGGR
POSITION(17) = 62
LENGTH(17) = 1
FIELD(17) = RAGGR
NAME(18) = NOSTRI RIFERIMENTI
POSITION(18) = 63
LENGTH(18) = 25
NAME(19) = VOSTRI RIFERIMENTI
POSITION(19) = 88
LENGTH(19) = 25
NAME(20) = CODPAG
POSITION(20) = 113
LENGTH(20) = 2
FIELD(20) = CODPAG
NAME(21) = DATAINSC
POSITION(21) = 115
LENGTH(21) = 6
FIELD(21) = DATAINSC
NAME(22) = CODICE BANCA
POSITION(22) = 121
LENGTH(22) = 3
NAME(23) = CONTRATTO
POSITION(23) = 124
LENGTH(23) = 1
NAME(24) = CODLIST
POSITION(24) = 125
LENGTH(24) = 2
FIELD(24) = CODLIST
NAME(25) = CODICE SCONTO
POSITION(25) = 127
LENGTH(25) = 2
NAME(26) = SCONTO
POSITION(26) = 129
LENGTH(26) = 25
FIELD(26) = SCONTOPERC
NAME(27) = INDIRIZZO SPEDIZIONE
POSITION(27) = 144
LENGTH(27) = 3
FIELD(27) = CODINDSP
NAME(28) = ASSOGGETTAMENTO FISCALE
POSITION(28) = 147
LENGTH(28) = 2
NAME(29) = DATADOCRIF
POSITION(29) = 149
LENGTH(29) = 6
FIELD(29) = DATADOCRIF
NAME(30) = NUMDOCRIF
POSITION(30) = 155
LENGTH(30) = 7
FIELD(30) = NUMDOCRIF
NAME(31) = CODAG
POSITION(31) = 162
LENGTH(31) = 2
FIELD(31) = CODAG
NAME(32) = CODAGVIS
POSITION(32) = 164
LENGTH(32) = 2
FIELD(32) = CODAGVIS
NAME(33) = ALIQUOTA RIDOTTA
POSITION(33) = 170
LENGTH(33) = 1
NAME(34) = CODICE SPEDIZIONE
POSITION(34) = 171
LENGTH(34) = 2
FIELD(34) = CODSPMEZZO
NAME(35) = CODICE PORTO
POSITION(35) = 173
LENGTH(35) = 2
FIELD(35) = CODPORTO
NAME(36) = NOTE 1
POSITION(36) = 175
LENGTH(36) = 2
FIELD(36) = CODNOTESP1
NAME(37) = NOTE 2
POSITION(37) = 177
LENGTH(37) = 2
FIELD(37) = CODNOTESP2
NAME(38) = CAUSALE TRASPORTO
POSITION(38) = 179
LENGTH(38) = 2
FIELD(38) = CAUSTRASP
NAME(39) = VETTORE 1
POSITION(39) = 181
LENGTH(39) = 3
FIELD(39) = CODVETT1
NAME(40) = VETTORE 2
POSITION(40) = 184
LENGTH(40) = 3
FIELD(40) = CODVETT2
NAME(41) = VETTORE 3
POSITION(41) = 187
LENGTH(41) = 3
FIELD(41) = CODVETT3
NAME(42) = NUMERO COPIE
POSITION(42) = 190
LENGTH(42) = 1
FIELD(42) = NCOPIE
NAME(43) = DATAPART
POSITION(43) = 191
LENGTH(43) = 6
FIELD(43) = DATAPART
NAME(44) = ORAPART
POSITION(44) = 197
LENGTH(44) = 4
FIELD(44) = ORAPART
NAME(45) = IMPPAGATO
POSITION(45) = 201
LENGTH(45) = 13
FIELD(45) = IMPPAGATO
NAME(46) = ACCSALDO
POSITION(46) = 214
LENGTH(46) = 1
FIELD(46) = ACCSALDO
NAME(47) = SCONTO RIGA CLIENTE
NAME(48) = PUNTI PROVVIGIONE
NAME(49) = NOME TESTO
NAME(50) = IMPORTO GIORNALIERO DEL RAME
NAME(51) = DATA EMISSIONE DOC FORNITORE
NAME(52) = NUMERO EMISSIONE DOC FORNITORE
NAME(53) = CODCONT
POSITION(53) = 257
LENGTH(53) = 2
FIELD(53) = CODCONT
NAME(54) = FORZATURA CONTROLLO FIDO
NAME(55) = DATACONS
POSITION(55) = 260
LENGTH(55) = 6
FIELD(55) = DATACONS
NAME(56) = FLAG ORDINE
NAME(57) = DOCEVASO
POSITION(57) = 267
LENGTH(57) = 1
FIELD(57) = DOCEVASO
NAME(58) = NUMERO RECORD
POSITION(58) = 268
LENGTH(58) = 5

601
ibm36/ibm36rdv.ini Executable file
View File

@ -0,0 +1,601 @@
[MAIN]
TYPEPOS=6
TYPELEN=2
[RECORD A1]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
[RECORD A2]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = NUMERO RECORD
POSITION(1) = 1
LENGTH(1) = 5
NAME(2) = TIPO RECORD
POSITION(2) = 6
LENGTH(2) = 2
NAME(3) = NOTE
POSITION(3) = 36
LENGTH(3) = 54
FIELD(3) = NOTE
NAME(4) = ASPBEN1
POSITION(4) = 90
LENGTH(4) = 2
FIELD(4) = ASPBEN1
NAME(5) = ASPBEN2
POSITION(5) = 92
LENGTH(5) = 2
FIELD(5) = ASPBEN2
NAME(6) = PERCSPINC
POSITION(6) = 120
LENGTH(6) = 1
FIELD(6) = PERCSPINC
NAME(7) = ADDEBITO BOLLI RIBA
POSITION(7) = 121
LENGTH(7) = 1
FIELD(7) = ADDBOLLI
NAME(8) = ADDEBITO BOLLI TRATTE
POSITION(8) = 122
LENGTH(8) = 1
NAME(9) = ADDEBITO BOLLI DOCUMENTI
POSITION(9) = 123
LENGTH(9) = 1
NAME(10) = TARA
POSITION(10) = 128
LENGTH(10) = 2
FIELD(10) = TARA
NAME(11) = PNETTO
POSITION(11) = 137
LENGTH(11) = 9
FIELD(11) = PNETTO
NAME(12) = NCOLLI
POSITION(12) = 146
LENGTH(12) = 7
FIELD(12) = NCOLLI
[RECORD B0]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = NUMERO RECORD
POSITION(1) = 1
LENGTH(1) = 5
NAME(2) = TIPO RECORD
POSITION(2) = 6
LENGTH(2) = 2
NAME(2) = NRIGA
POSITION(2) = 7
LENGTH(2) = 3
FIELD(2) = NRIGA
NAME(3) = CODMAG
POSITION(3) = 15
LENGTH(3) = 3
FIELD(3) = CODMAG
NAME(4) = CODDEP
POSITION(4) = 18
LENGTH(4) = 2
NAME(5) = CODART
POSITION(5) = 24
LENGTH(5) = 19
FIELD(5) = CODART
NAME(6) = DESCR
POSITION(6) = 43
LENGTH(6) = 35
FIELD(6) = DESCR
NAME(7) = QTAEVASA
POSITION(7) = 129
LENGTH(7) = 35
FIELD(7) = 11
NAME(8) = CODICE LOTTO
POSITION(8) = 140
LENGTH(8) = 6
FIELD(8) = LIVELLO
NAME(9) = UMQTA
POSITION(9) = 166
LENGTH(9) = 2
FIELD(9) = UMQTA
NAME(10) = QTA
POSITION(10) = 168
LENGTH(10) = 11
FIELD(10) = QTA
NAME(11) = PREZZO
POSITION(11) = 179
LENGTH(11) = 11
FIELD(11) = PREZZO
NAME(12) = SCONTO
POSITION(12) = 190
LENGTH(12) = 5
FIELD(12) = SCONTO
NAME(13) = SCONTO2
POSITION(13) = 195
LENGTH(13) = 5
NAME(14) = PERCPROVV
POSITION(14) = 213
LENGTH(14) = 5
FIELD(14) = PERCPROVV
NAME(15) = CODIVA
POSITION(15) = 227
LENGTH(15) = 2
FIELD(15) = CODIVA
NAME(16) = ADDIVA
POSITION(16) = 229
LENGTH(16) = 1
FIELD(16) = ADDIVA
NAME(17) = TARA
POSITION(17) = 241
LENGTH(17) = 7
FIELD(17) = TARA
NAME(18) = PNETTO
POSITION(18) = 248
LENGTH(18) = 7
FIELD(18) = PNETTO
NAME(19) = NCOLLI
POSITION(19) = 255
LENGTH(19) = 5
FIELD(19) = NCOLLI
NAME(20) = ASPBENI
POSITION(20) = 260
LENGTH(20) = 2
FIELD(20) = ASPBENI
NAME(21) = CAUSMAG
POSITION(21) = 298
LENGTH(21) = 2
FIELD(21) = CAUSMAG
NAME(22) = CODMAGC
POSITION(22) = 324
LENGTH(22) = 3
FIELD(22) = CODMAGC
NAME(23) = CODDEPC
POSITION(23) = 327
LENGTH(23) = 2
NAME(24) = RIGAEVASA
POSITION(24) = 330
LENGTH(24) = 1
FIELD(24) = RIGAEVASA
NAME(25) = TIPO RIGA
POSITION(25) = 349
LENGTH(25) = 1
FIELD(25) = TIPORIGA
[RECORD B1]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = NUMERO RECORD
POSITION(1) = 1
LENGTH(1) = 5
NAME(2) = TIPO RECORD
POSITION(2) = 6
LENGTH(2) = 2
NAME(2) = NRIGA
POSITION(2) = 7
LENGTH(2) = 3
FIELD(2) = NRIGA
NAME(3) = CODMAG
POSITION(3) = 15
LENGTH(3) = 3
FIELD(3) = CODMAG
NAME(4) = CODDEP
POSITION(4) = 18
LENGTH(4) = 2
NAME(5) = CODART
POSITION(5) = 24
LENGTH(5) = 19
FIELD(5) = CODART
NAME(6) = DESCR
POSITION(6) = 43
LENGTH(6) = 35
FIELD(6) = DESCR
NAME(7) = QTAEVASA
POSITION(7) = 129
LENGTH(7) = 35
FIELD(7) = 11
NAME(8) = CODICE LOTTO
POSITION(8) = 140
LENGTH(8) = 6
FIELD(8) = LIVELLO
NAME(9) = UMQTA
POSITION(9) = 166
LENGTH(9) = 2
FIELD(9) = UMQTA
NAME(10) = QTA
POSITION(10) = 168
LENGTH(10) = 11
FIELD(10) = QTA
NAME(11) = PREZZO
POSITION(11) = 179
LENGTH(11) = 11
FIELD(11) = PREZZO
NAME(12) = SCONTO
POSITION(12) = 190
LENGTH(12) = 5
FIELD(12) = SCONTO
NAME(13) = SCONTO2
POSITION(13) = 195
LENGTH(13) = 5
NAME(14) = PERCPROVV
POSITION(14) = 213
LENGTH(14) = 5
FIELD(14) = PERCPROVV
NAME(15) = CODIVA
POSITION(15) = 227
LENGTH(15) = 2
FIELD(15) = CODIVA
NAME(16) = ADDIVA
POSITION(16) = 229
LENGTH(16) = 1
FIELD(16) = ADDIVA
NAME(17) = TARA
POSITION(17) = 241
LENGTH(17) = 7
FIELD(17) = TARA
NAME(18) = PNETTO
POSITION(18) = 248
LENGTH(18) = 7
FIELD(18) = PNETTO
NAME(19) = NCOLLI
POSITION(19) = 255
LENGTH(19) = 5
FIELD(19) = NCOLLI
NAME(20) = ASPBENI
POSITION(20) = 260
LENGTH(20) = 2
FIELD(20) = ASPBENI
NAME(21) = CAUSMAG
POSITION(21) = 298
LENGTH(21) = 2
FIELD(21) = CAUSMAG
NAME(22) = CODMAGC
POSITION(22) = 324
LENGTH(22) = 3
FIELD(22) = CODMAGC
NAME(23) = CODDEPC
POSITION(23) = 327
LENGTH(23) = 2
NAME(24) = RIGAEVASA
POSITION(24) = 330
LENGTH(24) = 1
FIELD(24) = RIGAEVASA
NAME(25) = TIPO RIGA
POSITION(25) = 349
LENGTH(25) = 1
FIELD(25) = TIPORIGA
[RECORD B2]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = NUMERO RECORD
POSITION(1) = 1
LENGTH(1) = 5
NAME(2) = TIPO RECORD
POSITION(2) = 6
LENGTH(2) = 2
NAME(2) = NRIGA
POSITION(2) = 7
LENGTH(2) = 3
FIELD(2) = NRIGA
NAME(3) = CODMAG
POSITION(3) = 15
LENGTH(3) = 3
FIELD(3) = CODMAG
NAME(4) = CODDEP
POSITION(4) = 18
LENGTH(4) = 2
NAME(5) = CODART
POSITION(5) = 24
LENGTH(5) = 19
FIELD(5) = CODART
NAME(6) = DESCR
POSITION(6) = 43
LENGTH(6) = 35
FIELD(6) = DESCR
NAME(7) = QTAEVASA
POSITION(7) = 129
LENGTH(7) = 35
FIELD(7) = 11
NAME(8) = CODICE LOTTO
POSITION(8) = 140
LENGTH(8) = 6
FIELD(8) = LIVELLO
NAME(9) = UMQTA
POSITION(9) = 166
LENGTH(9) = 2
FIELD(9) = UMQTA
NAME(10) = QTA
POSITION(10) = 168
LENGTH(10) = 11
FIELD(10) = QTA
NAME(11) = PREZZO
POSITION(11) = 179
LENGTH(11) = 11
FIELD(11) = PREZZO
NAME(12) = SCONTO
POSITION(12) = 190
LENGTH(12) = 5
FIELD(12) = SCONTO
NAME(13) = SCONTO2
POSITION(13) = 195
LENGTH(13) = 5
NAME(14) = PERCPROVV
POSITION(14) = 213
LENGTH(14) = 5
FIELD(14) = PERCPROVV
NAME(15) = CODIVA
POSITION(15) = 227
LENGTH(15) = 2
FIELD(15) = CODIVA
NAME(16) = ADDIVA
POSITION(16) = 229
LENGTH(16) = 1
FIELD(16) = ADDIVA
NAME(17) = TARA
POSITION(17) = 241
LENGTH(17) = 7
FIELD(17) = TARA
NAME(18) = PNETTO
POSITION(18) = 248
LENGTH(18) = 7
FIELD(18) = PNETTO
NAME(19) = NCOLLI
POSITION(19) = 255
LENGTH(19) = 5
FIELD(19) = NCOLLI
NAME(20) = ASPBENI
POSITION(20) = 260
LENGTH(20) = 2
FIELD(20) = ASPBENI
NAME(21) = CAUSMAG
POSITION(21) = 298
LENGTH(21) = 2
FIELD(21) = CAUSMAG
NAME(22) = CODMAGC
POSITION(22) = 324
LENGTH(22) = 3
FIELD(22) = CODMAGC
NAME(23) = CODDEPC
POSITION(23) = 327
LENGTH(23) = 2
NAME(24) = RIGAEVASA
POSITION(24) = 330
LENGTH(24) = 1
FIELD(24) = RIGAEVASA
NAME(25) = TIPO RIGA
POSITION(25) = 349
LENGTH(25) = 1
FIELD(25) = TIPORIGA
[RECORD B3]
NAME(0) = STATO RECORD
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = NUMERO RECORD
POSITION(1) = 1
LENGTH(1) = 5
NAME(2) = TIPO RECORD
POSITION(2) = 6
LENGTH(2) = 2
NAME(2) = NRIGA
POSITION(2) = 7
LENGTH(2) = 3
FIELD(2) = NRIGA
NAME(3) = CODMAG
POSITION(3) = 15
LENGTH(3) = 3
FIELD(3) = CODMAG
NAME(4) = CODDEP
POSITION(4) = 18
LENGTH(4) = 2
NAME(5) = CODART
POSITION(5) = 24
LENGTH(5) = 19
FIELD(5) = CODART
NAME(6) = DESCR
POSITION(6) = 43
LENGTH(6) = 35
FIELD(6) = DESCR
NAME(7) = QTAEVASA
POSITION(7) = 129
LENGTH(7) = 35
FIELD(7) = 11
NAME(8) = CODICE LOTTO
POSITION(8) = 140
LENGTH(8) = 6
FIELD(8) = LIVELLO
NAME(9) = UMQTA
POSITION(9) = 166
LENGTH(9) = 2
FIELD(9) = UMQTA
NAME(10) = QTA
POSITION(10) = 168
LENGTH(10) = 11
FIELD(10) = QTA
NAME(11) = PREZZO
POSITION(11) = 179
LENGTH(11) = 11
FIELD(11) = PREZZO
NAME(12) = SCONTO
POSITION(12) = 190
LENGTH(12) = 5
FIELD(12) = SCONTO
NAME(13) = SCONTO2
POSITION(13) = 195
LENGTH(13) = 5
NAME(14) = PERCPROVV
POSITION(14) = 213
LENGTH(14) = 5
FIELD(14) = PERCPROVV
NAME(15) = CODIVA
POSITION(15) = 227
LENGTH(15) = 2
FIELD(15) = CODIVA
NAME(16) = ADDIVA
POSITION(16) = 229
LENGTH(16) = 1
FIELD(16) = ADDIVA
NAME(17) = TARA
POSITION(17) = 241
LENGTH(17) = 7
FIELD(17) = TARA
NAME(18) = PNETTO
POSITION(18) = 248
LENGTH(18) = 7
FIELD(18) = PNETTO
NAME(19) = NCOLLI
POSITION(19) = 255
LENGTH(19) = 5
FIELD(19) = NCOLLI
NAME(20) = ASPBENI
POSITION(20) = 260
LENGTH(20) = 2
FIELD(20) = ASPBENI
NAME(21) = CAUSMAG
POSITION(21) = 298
LENGTH(21) = 2
FIELD(21) = CAUSMAG
NAME(22) = CODMAGC
POSITION(22) = 324
LENGTH(22) = 3
FIELD(22) = CODMAGC
NAME(23) = CODDEPC
POSITION(23) = 327
LENGTH(23) = 2
NAME(24) = RIGAEVASA
POSITION(24) = 330
LENGTH(24) = 1
FIELD(24) = RIGAEVASA
NAME(25) = TIPO RIGA
POSITION(25) = 349
LENGTH(25) = 1
FIELD(25) = TIPORIGA