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 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 permille(TFile_text& file, TRecord_text& curr, const char* field);
|
||||||
void machedata(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_tables(const TFilename& name, TBrowsefile_field& bf);
|
||||||
void import_clifor(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');
|
abi.right_just(5, '0');
|
||||||
cab.right_just(5, '0');
|
cab.right_just(5, '0');
|
||||||
|
|
||||||
TString16 codtab = abi;
|
TString16 codtab;
|
||||||
|
codtab = abi;
|
||||||
ban.put("CODTAB", codtab);
|
ban.put("CODTAB", codtab);
|
||||||
if (ban.read() != NOERR)
|
if (ban.read() != NOERR)
|
||||||
{
|
{
|
||||||
@ -329,17 +331,23 @@ void TTrasfer36::import_tables(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
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");
|
const TString& ann = file.get_field(curr, "ANNULLATO");
|
||||||
if (ann != "A")
|
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);
|
mettilavirgola(file, curr, "CAMBIO", 11, 5);
|
||||||
machedata(file, curr, "INIZIO VALIDITA");
|
machedata(file, curr, "INIZIO VALIDITA");
|
||||||
machedata(file, curr, "FINE VALIDITA");
|
machedata(file, curr, "FINE VALIDITA");
|
||||||
machedata(file, curr, "DATA CAMBIO");
|
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);
|
const int err = file.autosave(curr);
|
||||||
if (err != NOERR)
|
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)
|
void TTrasfer36::machedata(TFile_text& file, TRecord_text& curr, const char* field)
|
||||||
{
|
{
|
||||||
TString80 num = file.get_field(curr, 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)
|
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;
|
TString msg, des, codart, um;
|
||||||
|
TString16 codlin;
|
||||||
real r;
|
real r;
|
||||||
msg = "Importazione Anagrafica articoli";
|
msg = "Importazione Anagrafica articoli";
|
||||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||||
TFile_text file(name, "ibm36art.ini");
|
TFile_text file(name, "ibm36art.ini");
|
||||||
long valid = 0;
|
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);
|
msg.insert("@b", 0);
|
||||||
bf.add_line(msg);
|
bf.add_line(msg);
|
||||||
bf.add_line("");
|
bf.add_line("");
|
||||||
TRelation rel(LF_ANAMAG);
|
TRelation rel(LF_ANAMAG);
|
||||||
rel.add(LF_UMART,"CODART=CODART");
|
rel.add(LF_UMART,"CODART=CODART");
|
||||||
|
TLocalisamfile deslin(LF_DESLIN);
|
||||||
|
|
||||||
TRecord_text curr;
|
TRecord_text curr;
|
||||||
while (file.read(curr) == NOERR)
|
while (file.read(curr) == NOERR)
|
||||||
@ -608,13 +652,13 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
if (pi.iscancelled())
|
if (pi.iscancelled())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
const int tipo_record = curr.type()[0] - '0';
|
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];
|
const char stato_record = file.get_field(curr, "ANNULLATO")[0];
|
||||||
if (stato_record == 'A')
|
if (stato_record == 'A')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
des = file.get_field(curr, "DESCRIZIONE ARTICOLO");
|
des = file.get_field(curr, "DESCRIZIONE ARTICOLO");
|
||||||
des << " ";
|
des << " ";
|
||||||
des << file.get_field(curr, "ESTENSIONE DESCRIZIONE");
|
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
|
// 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)
|
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";
|
msg = "Importazione Condizioni di vendita";
|
||||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||||
TFile_text file(name, "ibm36cvn.ini");
|
TFile_text file(name, "ibm36cvn.ini");
|
||||||
@ -706,13 +801,16 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
if (pi.iscancelled())
|
if (pi.iscancelled())
|
||||||
break;
|
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];
|
const char tipo_record = curr.type()[0];
|
||||||
int err = NOERR;
|
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)
|
switch (tipo_record)
|
||||||
{
|
{
|
||||||
case 'A': // Righe listini. Non necessitano di scrittura testata
|
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("TIPO", "L");
|
||||||
rcondv.put("CATVEN", file.get_field(curr,"CATEGORIA VENDITE"));
|
rcondv.put("CATVEN", file.get_field(curr,"CATEGORIA VENDITE"));
|
||||||
rcondv.put("COD", file.get_field(curr,"CODICE LISTINO"));
|
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("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
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':
|
case 'D':
|
||||||
file.add_field(curr, "TIPO", "O"); // Sostituisce
|
file.add_field(curr, "TIPO", "O"); // Sostituisce
|
||||||
cod = file.get_field(curr,"CODICE");
|
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')
|
if (tipo_record == 'C')
|
||||||
{
|
{
|
||||||
mettilavirgola(file, curr, "QTA LIMITE SCAGLIONE", 11, 3);
|
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 SCONTO", 5, 2);
|
||||||
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
||||||
mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3);
|
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)
|
// record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO)
|
||||||
err = file.autosave(rel, curr);
|
err = file.autosave(rel, curr);
|
||||||
// Scrive la testata... ma solo se non esiste:
|
// Scrive la testata... ma solo se non esiste:
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
|
rel.read();
|
||||||
if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata?
|
if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata?
|
||||||
{
|
{
|
||||||
des = "Offerta ";
|
des = "Offerta ";
|
||||||
@ -794,6 +910,10 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
condv.put("DESCR", des);
|
condv.put("DESCR", des);
|
||||||
condv.put("VALIN",file.get_field(curr,"VALIDITA INIZIALE"));
|
condv.put("VALIN",file.get_field(curr,"VALIDITA INIZIALE"));
|
||||||
condv.put("VALFIN",file.get_field(curr,"VALIDITA FINALE"));
|
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...
|
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);
|
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("TIPO", "O");
|
||||||
rcondv.put("CATVEN", "");
|
rcondv.put("CATVEN", "");
|
||||||
rcondv.put("COD", cod);
|
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("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
||||||
@ -834,7 +954,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
else
|
else
|
||||||
valid++;
|
valid++;
|
||||||
break;
|
break;
|
||||||
case 'E': // Righe contratti
|
case 'E': // Righe contratti: non necessitano di scrittura testata
|
||||||
case 'F':
|
case 'F':
|
||||||
{
|
{
|
||||||
file.add_field(curr, "TIPO", "C"); // Sostituisce
|
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 SCONTO", 5, 2);
|
||||||
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2);
|
||||||
mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3);
|
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)
|
// record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO)
|
||||||
err = file.autosave(rel, curr);
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -882,7 +981,7 @@ void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf)
|
|||||||
rcondv.put("CODCF", codcf);
|
rcondv.put("CODCF", codcf);
|
||||||
rcondv.put("CATVEN", "");
|
rcondv.put("CATVEN", "");
|
||||||
rcondv.put("COD", cod);
|
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("CODRIGA", file.get_field(curr,"CHIAVE RIGA"));
|
||||||
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
rcondv.put("UM", file.get_field(curr,"UNITA MISURA"));
|
||||||
rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE"));
|
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(46) = PERCPROVV
|
||||||
FIELD(47) = SCONTO
|
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(5) = TIPO ARCHIVIO
|
||||||
NAME(6) = CHIAVE RIGA
|
NAME(6) = CHIAVE RIGA
|
||||||
NAME(7) = CODICE LOTTO
|
NAME(7) = CODICE LOTTO
|
||||||
NAME(8) = UNITA DI MISURA
|
NAME(8) = UNITA MISURA
|
||||||
NAME(9) = NUMERO SCAGLIONE
|
NAME(9) = NUMERO SCAGLIONE
|
||||||
NAME(10) = QTA LIMITE SCAGLIONE
|
NAME(10) = QTA LIMITE SCAGLIONE
|
||||||
NAME(11) = PREZZO VENDITA
|
NAME(11) = PREZZO VENDITA
|
||||||
@ -411,7 +411,7 @@ NAME(4) = NUMERO CONTRATTO
|
|||||||
NAME(5) = TIPO ARCHIVIO
|
NAME(5) = TIPO ARCHIVIO
|
||||||
NAME(6) = CHIAVE RIGA
|
NAME(6) = CHIAVE RIGA
|
||||||
NAME(7) = CODICE LOTTO
|
NAME(7) = CODICE LOTTO
|
||||||
NAME(8) = UNITA DI MISURA
|
NAME(8) = UNITA MISURA
|
||||||
NAME(9) = NUMERO SCAGLIONE
|
NAME(9) = NUMERO SCAGLIONE
|
||||||
NAME(10) = CODICE ARTICOLO OMAGGIO
|
NAME(10) = CODICE ARTICOLO OMAGGIO
|
||||||
NAME(11) = CODICE LOTTO TAGLIA
|
NAME(11) = CODICE LOTTO TAGLIA
|
||||||
|
@ -44,6 +44,90 @@ POSITION(9) = 129
|
|||||||
POSITION(10) = 134
|
POSITION(10) = 134
|
||||||
USE = %BAN
|
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]
|
[RECORD A11]
|
||||||
LENGTH(0) = 1
|
LENGTH(0) = 1
|
||||||
LENGTH(1) = 3
|
LENGTH(1) = 3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user