Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Aggiunta importazione descrizioni in lingua, testate contratti, corretti ammenicoli relativi all'importazione delle condizioni di vendita. git-svn-id: svn://10.65.10.50/trunk@7004 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
11f8358b10
commit
a27685b053
@ -122,6 +122,7 @@ public:
|
||||
void mettilavirgola(TFile_text& file, TRecord_text& curr, const char* field, int len, int comma);
|
||||
void permille(TFile_text& file, TRecord_text& curr, const char* field);
|
||||
void machedata(TFile_text& file, TRecord_text& curr, const char* field);
|
||||
void macheseqric(TFile_text& file, TRecord_text& curr, const char* field);
|
||||
|
||||
void import_tables(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_clifor(const TFilename& name, TBrowsefile_field& bf);
|
||||
@ -276,7 +277,8 @@ void TTrasfer36::import_tables(const TFilename& name, TBrowsefile_field& bf)
|
||||
abi.right_just(5, '0');
|
||||
cab.right_just(5, '0');
|
||||
|
||||
TString16 codtab = abi;
|
||||
TString16 codtab;
|
||||
codtab = abi;
|
||||
ban.put("CODTAB", codtab);
|
||||
if (ban.read() != NOERR)
|
||||
{
|
||||
@ -329,17 +331,23 @@ void TTrasfer36::import_tables(const TFilename& name, TBrowsefile_field& bf)
|
||||
}
|
||||
}
|
||||
else
|
||||
if (type == "A11") // File testate listini
|
||||
if (type == "A11" || type == "A27") // File testate listini(A11) e contratti (A27)
|
||||
{
|
||||
const TString& ann = file.get_field(curr, "ANNULLATO");
|
||||
if (ann != "A")
|
||||
{
|
||||
file.add_field(curr, "TIPO", "L");
|
||||
file.add_field(curr, "TIPO", type == "A11" ? "L" : "C");
|
||||
|
||||
if (type == "A27") // ..trattasi di contratti...
|
||||
{
|
||||
const int tcf = atoi(file.get_field(curr, "TIPO ANAGRAFICA"));
|
||||
file.add_field(curr, "TIPO ANAGRAFICA", tcf == 1 ? "C" : "F");
|
||||
}
|
||||
mettilavirgola(file, curr, "CAMBIO", 11, 5);
|
||||
machedata(file, curr, "INIZIO VALIDITA");
|
||||
machedata(file, curr, "FINE VALIDITA");
|
||||
machedata(file, curr, "DATA CAMBIO");
|
||||
// TBI: traduzione campo SEQRIC per la sequenza di ricerca
|
||||
macheseqric(file, curr, "SEQUENZA RICERCA");
|
||||
const int err = file.autosave(curr);
|
||||
if (err != NOERR)
|
||||
{
|
||||
@ -382,6 +390,34 @@ void TTrasfer36::permille(TFile_text& file, TRecord_text& curr, const char* fiel
|
||||
}
|
||||
}
|
||||
|
||||
void TTrasfer36::macheseqric(TFile_text& file, TRecord_text& curr, const char* field)
|
||||
{
|
||||
TString16 seq(file.get_field(curr, field));
|
||||
const int l = seq.len();
|
||||
for (int i=0; i<l; i++)
|
||||
switch(seq[i])
|
||||
{
|
||||
case '1':
|
||||
seq[i] = 'A';
|
||||
break;
|
||||
case '2':
|
||||
seq[i] = 'G';
|
||||
break;
|
||||
case '3':
|
||||
seq[i] = 'S';
|
||||
break;
|
||||
case '4':
|
||||
seq[i] = 'R';
|
||||
break;
|
||||
default:
|
||||
seq[i] = '-';
|
||||
break;
|
||||
}
|
||||
for (i=l; i<4; i++)
|
||||
seq << '-'; // Padding...
|
||||
file.add_field(curr, field, seq);
|
||||
}
|
||||
|
||||
void TTrasfer36::machedata(TFile_text& file, TRecord_text& curr, const char* field)
|
||||
{
|
||||
TString80 num = file.get_field(curr, field);
|
||||
@ -588,18 +624,26 @@ void TTrasfer36::import_clifor(const TFilename& name, TBrowsefile_field& bf)
|
||||
|
||||
void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
||||
{
|
||||
TArray languages; // Massimo 4 lingue... corrispondono in modo fisso
|
||||
TMask msk_lng("ibm36101");
|
||||
TString msg, des, codart, um;
|
||||
TString16 codlin;
|
||||
real r;
|
||||
msg = "Importazione Anagrafica articoli";
|
||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||
TFile_text file(name, "ibm36art.ini");
|
||||
long valid = 0;
|
||||
int nriga;
|
||||
|
||||
languages.add(new TString); languages.add(new TString);
|
||||
languages.add(new TString); languages.add(new TString); // Max 4 linguacciones
|
||||
|
||||
msg.insert("@b", 0);
|
||||
bf.add_line(msg);
|
||||
bf.add_line("");
|
||||
TRelation rel(LF_ANAMAG);
|
||||
rel.add(LF_UMART,"CODART=CODART");
|
||||
TLocalisamfile deslin(LF_DESLIN);
|
||||
|
||||
TRecord_text curr;
|
||||
while (file.read(curr) == NOERR)
|
||||
@ -608,13 +652,13 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
||||
if (pi.iscancelled())
|
||||
break;
|
||||
|
||||
|
||||
const int tipo_record = curr.type()[0] - '0';
|
||||
if (tipo_record == 0)
|
||||
if (tipo_record == 0) // Anagrafica articoli
|
||||
{
|
||||
const char stato_record = file.get_field(curr, "ANNULLATO")[0];
|
||||
if (stato_record == 'A')
|
||||
continue;
|
||||
|
||||
des = file.get_field(curr, "DESCRIZIONE ARTICOLO");
|
||||
des << " ";
|
||||
des << file.get_field(curr, "ESTENSIONE DESCRIZIONE");
|
||||
@ -673,6 +717,55 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (tipo_record >= 1 && tipo_record <= 4) // Descrizioni in lingua
|
||||
{
|
||||
const char stato_record = file.get_field(curr, "ANNULLATO")[0];
|
||||
if (stato_record == 'A')
|
||||
continue;
|
||||
// Il tipo record corrisponde ad una lingua fissa... ogni volta che se ne incontra una
|
||||
// nuova si chiede all'utente in input a quale lingua corrisponde su EuroCAMPO
|
||||
codlin = (TString&) languages[tipo_record-1];
|
||||
if (codlin.empty()) // Non esiste la corrispondenza? La chiedo all'utente...
|
||||
{
|
||||
msk_lng.set(100, (long)tipo_record);
|
||||
msk_lng.run();
|
||||
codlin = msk_lng.get(101);
|
||||
languages.add(codlin, tipo_record-1); // lo memorizzo al posto di quello vuoto
|
||||
}
|
||||
nriga = 1;
|
||||
codart = file.get_field(curr, "CODICE PRIMARIO");
|
||||
des = file.get_field(curr, "DESCRIZIONE");
|
||||
des << " ";
|
||||
des << file.get_field(curr, "ESTENSIONE DESCRIZIONE");
|
||||
des.strip_d_spaces();
|
||||
deslin.put("CODART", codart);
|
||||
deslin.put("DESCR", des);
|
||||
deslin.put("CODLIN", codlin);
|
||||
deslin.put("NRIGA", nriga);
|
||||
// Aggiunge sempre in coda perche' gli articoli possono essere mischiati
|
||||
// al massimo pero' le lingue sono 4...
|
||||
int err = NOERR;
|
||||
while ((err = deslin.write()) == _isreinsert && nriga < 4)
|
||||
{
|
||||
nriga++;
|
||||
deslin.put("NRIGA", nriga);
|
||||
}
|
||||
if (err == _isreinsert) // Se non e' riuscito ad aggiungerlo... forza la riscrittura al tipo_record...
|
||||
{
|
||||
deslin.put("NRIGA", tipo_record); // Non importa se i numeri riga non saranno esattamente in sequenza
|
||||
err = deslin.rewrite(); // perche' i record array leggono ugualmente
|
||||
}
|
||||
//const int err = file.autosave(curr);
|
||||
if (err != NOERR)
|
||||
{
|
||||
msg = "! Errore di scrittura sul file LF_DESLIN: ";
|
||||
msg << err;
|
||||
bf.add_line(msg);
|
||||
}
|
||||
else
|
||||
valid++;
|
||||
}
|
||||
}
|
||||
|
||||
// Messaggio finale di elaborazione
|
||||
@ -684,7 +777,9 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
||||
|
||||
void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
{
|
||||
TString msg,des,cod;
|
||||
TMask msk_prm("ibm36102");
|
||||
TString msg,des,cod, camp_seq_ric;
|
||||
bool camp_um, camp_sca, camp_sco;
|
||||
msg = "Importazione Condizioni di vendita";
|
||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||
TFile_text file(name, "ibm36cvn.ini");
|
||||
@ -706,13 +801,16 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
if (pi.iscancelled())
|
||||
break;
|
||||
|
||||
const char stato_record = file.get_field(curr, "ANNULLATO")[0];
|
||||
if (stato_record == 'A') // ANNULLATO is always defined ;-)
|
||||
continue;
|
||||
|
||||
const char tipo_record = curr.type()[0];
|
||||
int err = NOERR;
|
||||
file.add_field(curr, "TIPO ARCHIVIO", "A"); // E' sempre tipo <A>rticolo ??? waiting for Morena's call...
|
||||
|
||||
if (tipo_record >= 'A' && tipo_record <= 'F')
|
||||
{
|
||||
const char stato_record = file.get_field(curr, "ANNULLATO")[0];
|
||||
if (stato_record == 'A') // ANNULLATO is always defined for records A through F
|
||||
continue;
|
||||
file.add_field(curr, "TIPO ARCHIVIO", "A"); // E' sempre tipo <A>rticolo
|
||||
}
|
||||
switch (tipo_record)
|
||||
{
|
||||
case 'A': // Righe listini. Non necessitano di scrittura testata
|
||||
@ -738,7 +836,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
rcondv.put("TIPO", "L");
|
||||
rcondv.put("CATVEN", file.get_field(curr,"CATEGORIA VENDITE"));
|
||||
rcondv.put("COD", file.get_field(curr,"CODICE LISTINO"));
|
||||
rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ??
|
||||
rcondv.put("TIPORIGA", "A"); // See above...
|
||||
rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
||||
@ -769,6 +867,23 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
case 'D':
|
||||
file.add_field(curr, "TIPO", "O"); // Sostituisce
|
||||
cod = file.get_field(curr,"CODICE");
|
||||
// La prima volta chiede i parametri di default per la testata campagne:
|
||||
// sequenza ricerca
|
||||
// campagne per UM
|
||||
// campagne a scaglioni
|
||||
// campagne con sconti ed omaggi
|
||||
if (camp_seq_ric.empty())
|
||||
{
|
||||
msk_prm.run();
|
||||
camp_seq_ric = msk_prm.get(100);
|
||||
camp_seq_ric << msk_prm.get(101);
|
||||
camp_seq_ric << msk_prm.get(102);
|
||||
camp_seq_ric << msk_prm.get(103);
|
||||
camp_um = msk_prm.get_bool(104);
|
||||
camp_sca = msk_prm.get_bool(105);
|
||||
camp_sco = msk_prm.get_bool(106);
|
||||
}
|
||||
|
||||
if (tipo_record == 'C')
|
||||
{
|
||||
mettilavirgola(file, curr, "QTA LIMITE SCAGLIONE", 11, 3);
|
||||
@ -776,12 +891,13 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2);
|
||||
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
||||
mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3);
|
||||
// Scrive o aggiorna tranquillamente i record di tipo "A": se vi sono
|
||||
// Scrive o aggiorna tranquillamente i record di tipo "C": se vi sono
|
||||
// record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO)
|
||||
err = file.autosave(rel, curr);
|
||||
// Scrive la testata... ma solo se non esiste:
|
||||
if (err == NOERR)
|
||||
{
|
||||
rel.read();
|
||||
if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata?
|
||||
{
|
||||
des = "Offerta ";
|
||||
@ -794,6 +910,10 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
condv.put("DESCR", des);
|
||||
condv.put("VALIN",file.get_field(curr,"VALIDITA INIZIALE"));
|
||||
condv.put("VALFIN",file.get_field(curr,"VALIDITA FINALE"));
|
||||
condv.put("SEQRIC", camp_seq_ric);
|
||||
condv.put("GESTUM", camp_um);
|
||||
condv.put("GESTSCAGL", camp_sca);
|
||||
condv.put("GESTSCO", camp_sco);
|
||||
if (condv.write() != NOERR) // Allora la scrive...
|
||||
{
|
||||
msg.format("! Errore %d di scrittura testata offerte sul file LF_CONDV: %s", condv.status(), (const char*) cod);
|
||||
@ -808,7 +928,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
rcondv.put("TIPO", "O");
|
||||
rcondv.put("CATVEN", "");
|
||||
rcondv.put("COD", cod);
|
||||
rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ??
|
||||
rcondv.put("TIPORIGA", "A"); // See above...
|
||||
rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
||||
@ -834,7 +954,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
else
|
||||
valid++;
|
||||
break;
|
||||
case 'E': // Righe contratti
|
||||
case 'E': // Righe contratti: non necessitano di scrittura testata
|
||||
case 'F':
|
||||
{
|
||||
file.add_field(curr, "TIPO", "C"); // Sostituisce
|
||||
@ -849,30 +969,9 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2);
|
||||
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
||||
mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3);
|
||||
// Scrive o aggiorna tranquillamente i record di tipo "A": se vi sono
|
||||
// Scrive o aggiorna tranquillamente i record di tipo "E": se vi sono
|
||||
// record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO)
|
||||
err = file.autosave(rel, curr);
|
||||
|
||||
// Scrive la testata... ma solo se non esiste:
|
||||
if (err == NOERR)
|
||||
{
|
||||
if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata?
|
||||
{
|
||||
des = "Contratto ";
|
||||
des << cod;
|
||||
condv.put("TIPO","C");
|
||||
condv.put("CATVEN","");
|
||||
condv.put("TIPOCF",tipocf);
|
||||
condv.put("CODCF", codcf);
|
||||
condv.put("COD",cod);
|
||||
condv.put("DESCR", des);
|
||||
if (condv.write() != NOERR) // Allora la scrive...
|
||||
{
|
||||
msg.format("! Errore %d di scrittura testata contratti sul file LF_CONDV: %s", condv.status(), (const char*) cod);
|
||||
bf.add_line(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -882,7 +981,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
||||
rcondv.put("CODCF", codcf);
|
||||
rcondv.put("CATVEN", "");
|
||||
rcondv.put("COD", cod);
|
||||
rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ??
|
||||
rcondv.put("TIPORIGA", "A"); // See above...
|
||||
rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
||||
|
39
ibm36/ibm36101.uml
Executable file
39
ibm36/ibm36101.uml
Executable file
@ -0,0 +1,39 @@
|
||||
PAGE "Corrispondenza Lingue" -1 -1 68 8
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 1 "Scegliere il codice lingua di EuroCAMPO per la"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 2 "corrispondenza in importazione descrizioni in lingua"
|
||||
END
|
||||
|
||||
NUMBER 100 1
|
||||
BEGIN
|
||||
PROMPT 1 3 "Cod. lingua "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING 101 1
|
||||
BEGIN
|
||||
PROMPT 1 4 "Cod. Lingua EuroCAMPO "
|
||||
USE %LNG
|
||||
INPUT CODTAB 101
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT 101 CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Codice lingua errato"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
78
ibm36/ibm36102.uml
Executable file
78
ibm36/ibm36102.uml
Executable file
@ -0,0 +1,78 @@
|
||||
PAGE "Parametri Campagne" -1 -1 78 8
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 1 "Scegliere i parametri default per le testate delle campagne"
|
||||
END
|
||||
|
||||
LIST 100 10
|
||||
BEGIN
|
||||
PROMPT 2 2 "Sequenza ricerca "
|
||||
ITEM "A|Articoli"
|
||||
ITEM "G|Gruppo M."
|
||||
ITEM "S|Sottog. M."
|
||||
ITEM "R|Ragg.fisc."
|
||||
END
|
||||
|
||||
LIST 101 10
|
||||
BEGIN
|
||||
PROMPT 34 2 ""
|
||||
ITEM "-|Nessuno" MESSAGE CLEAR,5@
|
||||
ITEM "A|Articoli" MESSAGE ENABLE,102
|
||||
ITEM "G|Gruppo M." MESSAGE ENABLE,102
|
||||
ITEM "S|Sottog. M." MESSAGE ENABLE,102
|
||||
ITEM "R|Ragg.fisc." MESSAGE ENABLE,102
|
||||
STR_EXPR (#THIS_FIELD=="-")||(#THIS_FIELD!=#100)
|
||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||
END
|
||||
|
||||
LIST 102 10
|
||||
BEGIN
|
||||
PROMPT 49 2 ""
|
||||
ITEM "-|Nessuno" MESSAGE CLEAR,103
|
||||
ITEM "A|Articoli" MESSAGE ENABLE,103
|
||||
ITEM "G|Gruppo M." MESSAGE ENABLE,103
|
||||
ITEM "S|Sottog. M." MESSAGE ENABLE,103
|
||||
ITEM "R|Ragg.fisc." MESSAGE ENABLE,103
|
||||
GROUP 5
|
||||
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#100)&&(#THIS_FIELD!=#101))
|
||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||
END
|
||||
|
||||
LIST 103 10
|
||||
BEGIN
|
||||
PROMPT 64 2 ""
|
||||
ITEM "-|Nessuno"
|
||||
ITEM "A|Articoli"
|
||||
ITEM "G|Gruppo M."
|
||||
ITEM "S|Sottog. M."
|
||||
ITEM "R|Ragg.fisc."
|
||||
GROUP 5
|
||||
STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#100)&&(#THIS_FIELD!=#101)&&(#THIS_FIELD!=#102))
|
||||
WARNING "La sequenza di ricerca deve indicare quattro tipi diversi di righe"
|
||||
END
|
||||
|
||||
BOOLEAN 104
|
||||
BEGIN
|
||||
PROMPT 2 3 "Gestione per UM "
|
||||
END
|
||||
|
||||
BOOLEAN 105
|
||||
BEGIN
|
||||
PROMPT 2 4 "Gestione scaglioni "
|
||||
END
|
||||
|
||||
BOOLEAN 106
|
||||
BEGIN
|
||||
PROMPT 2 5 "Gestione sconti "
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -176,3 +176,186 @@ FIELD(41) = PESO
|
||||
FIELD(46) = PERCPROVV
|
||||
FIELD(47) = SCONTO
|
||||
|
||||
[RECORD 1]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 1
|
||||
LENGTH(2) = 19
|
||||
LENGTH(3) = 1
|
||||
LENGTH(4) = 19
|
||||
LENGTH(5) = 1
|
||||
LENGTH(6) = 19
|
||||
LENGTH(7) = 3
|
||||
LENGTH(8) = 2
|
||||
LENGTH(9) = 2
|
||||
LENGTH(10) = 35
|
||||
LENGTH(11) = 35
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPO RECORD
|
||||
NAME(2) = CODICE PRIMARIO
|
||||
NAME(3) = SECONDO TIPO RECORD
|
||||
NAME(4) = CODICE ALTERNATIVO
|
||||
NAME(5) = TERZO TIPO RECORD
|
||||
NAME(6) = SECONDO CODICE ALTERNATIVO
|
||||
NAME(7) = CODICE LINEA
|
||||
NAME(8) = CODICE STATISTICO
|
||||
NAME(9) = FILLER
|
||||
NAME(10) = DESCRIZIONE
|
||||
NAME(11) = ESTENSIONE DESCRIZIONE
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
POSITION(2) = 2
|
||||
POSITION(3) = 21
|
||||
POSITION(4) = 22
|
||||
POSITION(5) = 41
|
||||
POSITION(6) = 42
|
||||
POSITION(7) = 61
|
||||
POSITION(8) = 64
|
||||
POSITION(9) = 66
|
||||
POSITION(10) = 68
|
||||
POSITION(11) = 103
|
||||
|
||||
FIELD(1) = NRIGA
|
||||
FIELD(2) = CODART
|
||||
FIELD(3) = CODLIN
|
||||
FIELD(10) = DESCR
|
||||
USE = 51
|
||||
|
||||
[RECORD 2]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 1
|
||||
LENGTH(2) = 19
|
||||
LENGTH(3) = 1
|
||||
LENGTH(4) = 19
|
||||
LENGTH(5) = 1
|
||||
LENGTH(6) = 19
|
||||
LENGTH(7) = 3
|
||||
LENGTH(8) = 2
|
||||
LENGTH(9) = 2
|
||||
LENGTH(10) = 35
|
||||
LENGTH(11) = 35
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPO RECORD
|
||||
NAME(2) = CODICE PRIMARIO
|
||||
NAME(3) = SECONDO TIPO RECORD
|
||||
NAME(4) = CODICE ALTERNATIVO
|
||||
NAME(5) = TERZO TIPO RECORD
|
||||
NAME(6) = SECONDO CODICE ALTERNATIVO
|
||||
NAME(7) = CODICE LINEA
|
||||
NAME(8) = CODICE STATISTICO
|
||||
NAME(9) = FILLER
|
||||
NAME(10) = DESCRIZIONE
|
||||
NAME(11) = ESTENSIONE DESCRIZIONE
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
POSITION(2) = 2
|
||||
POSITION(3) = 21
|
||||
POSITION(4) = 22
|
||||
POSITION(5) = 41
|
||||
POSITION(6) = 42
|
||||
POSITION(7) = 61
|
||||
POSITION(8) = 64
|
||||
POSITION(9) = 66
|
||||
POSITION(10) = 68
|
||||
POSITION(11) = 103
|
||||
|
||||
FIELD(1) = NRIGA
|
||||
FIELD(2) = CODART
|
||||
FIELD(3) = CODLIN
|
||||
FIELD(10) = DESCR
|
||||
USE = 51
|
||||
|
||||
[RECORD 3]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 1
|
||||
LENGTH(2) = 19
|
||||
LENGTH(3) = 1
|
||||
LENGTH(4) = 19
|
||||
LENGTH(5) = 1
|
||||
LENGTH(6) = 19
|
||||
LENGTH(7) = 3
|
||||
LENGTH(8) = 2
|
||||
LENGTH(9) = 2
|
||||
LENGTH(10) = 35
|
||||
LENGTH(11) = 35
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPO RECORD
|
||||
NAME(2) = CODICE PRIMARIO
|
||||
NAME(3) = SECONDO TIPO RECORD
|
||||
NAME(4) = CODICE ALTERNATIVO
|
||||
NAME(5) = TERZO TIPO RECORD
|
||||
NAME(6) = SECONDO CODICE ALTERNATIVO
|
||||
NAME(7) = CODICE LINEA
|
||||
NAME(8) = CODICE STATISTICO
|
||||
NAME(9) = FILLER
|
||||
NAME(10) = DESCRIZIONE
|
||||
NAME(11) = ESTENSIONE DESCRIZIONE
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
POSITION(2) = 2
|
||||
POSITION(3) = 21
|
||||
POSITION(4) = 22
|
||||
POSITION(5) = 41
|
||||
POSITION(6) = 42
|
||||
POSITION(7) = 61
|
||||
POSITION(8) = 64
|
||||
POSITION(9) = 66
|
||||
POSITION(10) = 68
|
||||
POSITION(11) = 103
|
||||
|
||||
FIELD(1) = NRIGA
|
||||
FIELD(2) = CODART
|
||||
FIELD(3) = CODLIN
|
||||
FIELD(10) = DESCR
|
||||
USE = 51
|
||||
|
||||
[RECORD 4]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 1
|
||||
LENGTH(2) = 19
|
||||
LENGTH(3) = 1
|
||||
LENGTH(4) = 19
|
||||
LENGTH(5) = 1
|
||||
LENGTH(6) = 19
|
||||
LENGTH(7) = 3
|
||||
LENGTH(8) = 2
|
||||
LENGTH(9) = 2
|
||||
LENGTH(10) = 35
|
||||
LENGTH(11) = 35
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPO RECORD
|
||||
NAME(2) = CODICE PRIMARIO
|
||||
NAME(3) = SECONDO TIPO RECORD
|
||||
NAME(4) = CODICE ALTERNATIVO
|
||||
NAME(5) = TERZO TIPO RECORD
|
||||
NAME(6) = SECONDO CODICE ALTERNATIVO
|
||||
NAME(7) = CODICE LINEA
|
||||
NAME(8) = CODICE STATISTICO
|
||||
NAME(9) = FILLER
|
||||
NAME(10) = DESCRIZIONE
|
||||
NAME(11) = ESTENSIONE DESCRIZIONE
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
POSITION(2) = 2
|
||||
POSITION(3) = 21
|
||||
POSITION(4) = 22
|
||||
POSITION(5) = 41
|
||||
POSITION(6) = 42
|
||||
POSITION(7) = 61
|
||||
POSITION(8) = 64
|
||||
POSITION(9) = 66
|
||||
POSITION(10) = 68
|
||||
POSITION(11) = 103
|
||||
|
||||
FIELD(1) = NRIGA
|
||||
FIELD(2) = CODART
|
||||
FIELD(3) = CODLIN
|
||||
FIELD(10) = DESCR
|
||||
USE = 51
|
||||
|
@ -334,7 +334,7 @@ NAME(4) = NUMERO CONTRATTO
|
||||
NAME(5) = TIPO ARCHIVIO
|
||||
NAME(6) = CHIAVE RIGA
|
||||
NAME(7) = CODICE LOTTO
|
||||
NAME(8) = UNITA DI MISURA
|
||||
NAME(8) = UNITA MISURA
|
||||
NAME(9) = NUMERO SCAGLIONE
|
||||
NAME(10) = QTA LIMITE SCAGLIONE
|
||||
NAME(11) = PREZZO VENDITA
|
||||
@ -411,7 +411,7 @@ NAME(4) = NUMERO CONTRATTO
|
||||
NAME(5) = TIPO ARCHIVIO
|
||||
NAME(6) = CHIAVE RIGA
|
||||
NAME(7) = CODICE LOTTO
|
||||
NAME(8) = UNITA DI MISURA
|
||||
NAME(8) = UNITA MISURA
|
||||
NAME(9) = NUMERO SCAGLIONE
|
||||
NAME(10) = CODICE ARTICOLO OMAGGIO
|
||||
NAME(11) = CODICE LOTTO TAGLIA
|
||||
|
@ -44,6 +44,90 @@ POSITION(9) = 129
|
||||
POSITION(10) = 134
|
||||
USE = %BAN
|
||||
|
||||
[RECORD A27]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 3
|
||||
LENGTH(2) = 1
|
||||
LENGTH(3) = 6
|
||||
LENGTH(4) = 2
|
||||
LENGTH(5) = 4
|
||||
LENGTH(6) = 30
|
||||
LENGTH(7) = 3
|
||||
LENGTH(8) = 11
|
||||
LENGTH(9) = 6
|
||||
LENGTH(10) = 6
|
||||
LENGTH(11) = 2
|
||||
LENGTH(12) = 1
|
||||
LENGTH(13) = 4
|
||||
LENGTH(14) = 1
|
||||
LENGTH(15) = 1
|
||||
LENGTH(16) = 1
|
||||
LENGTH(17) = 1
|
||||
LENGTH(18) = 6
|
||||
LENGTH(19) = 1
|
||||
LENGTH(20) = 1
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPO
|
||||
NAME(2) = TIPO ANAGRAFICA
|
||||
NAME(3) = CODICE CLIENTE
|
||||
NAME(4) = NUMERO CONTRATTO
|
||||
NAME(5) = FILLER
|
||||
NAME(6) = DESCRIZIONE
|
||||
NAME(7) = CODICE DIVISA
|
||||
NAME(8) = CAMBIO
|
||||
NAME(9) = INIZIO VALIDITA
|
||||
NAME(10) = FINE VALIDITA
|
||||
NAME(11) = UNUSED
|
||||
NAME(12) = FLAG LORDO
|
||||
NAME(13) = SEQUENZA RICERCA
|
||||
NAME(14) = GESTIONE UM
|
||||
NAME(15) = GESTIONE SCAGLIONI
|
||||
NAME(16) = GESTIONE SCONTI
|
||||
NAME(17) = TIPO GESTIONE
|
||||
NAME(18) = DATA CAMBIO
|
||||
NAME(19) = VALIDITA CAMPAGNA
|
||||
NAME(20) = CONTRATTO OBBLIGATORIO
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
POSITION(2) = 4
|
||||
POSITION(3) = 5
|
||||
POSITION(4) = 11
|
||||
POSITION(5) = 13
|
||||
POSITION(6) = 17
|
||||
POSITION(7) = 47
|
||||
POSITION(8) = 50
|
||||
POSITION(9) = 56
|
||||
POSITION(10) = 62
|
||||
POSITION(11) = 68
|
||||
POSITION(12) = 70
|
||||
POSITION(13) = 71
|
||||
POSITION(14) = 75
|
||||
POSITION(15) = 76
|
||||
POSITION(16) = 77
|
||||
POSITION(17) = 78
|
||||
POSITION(18) = 79
|
||||
POSITION(19) = 85
|
||||
POSITION(20) = 86
|
||||
|
||||
FIELD(1) = TIPO
|
||||
FIELD(2) = TIPOCF
|
||||
FIELD(3) = CODCF
|
||||
FIELD(4) = COD
|
||||
FIELD(6) = DESCR
|
||||
FIELD(7) = CODVAL
|
||||
FIELD(8) = CAMBIO
|
||||
FIELD(9) = VALIN
|
||||
FIELD(10) = VALFIN
|
||||
FIELD(13) = SEQRIC
|
||||
FIELD(14) = GESTUM
|
||||
FIELD(15) = GESTSCAGL
|
||||
FIELD(16) = GESTSCO
|
||||
FIELD(18) = DATACAM
|
||||
FIELD(20) = OBBLIG
|
||||
USE = 52
|
||||
|
||||
[RECORD A11]
|
||||
LENGTH(0) = 1
|
||||
LENGTH(1) = 3
|
||||
|
Loading…
x
Reference in New Issue
Block a user