Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Importazione movimeti di magazzino da 36 git-svn-id: svn://10.65.10.50/trunk@6961 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
65d6a471e9
commit
4b6b88e9dd
@ -33,6 +33,30 @@ public:
|
||||
|
||||
bool TMask36::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
case 100:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (!fexist(o.get()))
|
||||
return error_box("Directory non valida");
|
||||
}
|
||||
break;
|
||||
case 101:
|
||||
case 102:
|
||||
case 103:
|
||||
case 104:
|
||||
case 105:
|
||||
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;
|
||||
}
|
||||
|
||||
@ -90,14 +114,20 @@ protected:
|
||||
virtual const char* extra_modules() const { return "*"; } // Non e' un modulo normale
|
||||
|
||||
public:
|
||||
void mask2ini(TMask& m, bool load = FALSE);
|
||||
void ini2mask(TMask& m) { mask2ini(m, TRUE); }
|
||||
|
||||
const TString& cap2com(const TString& cap, const TString& name) const;
|
||||
void split_indir(const TString& indir, TString& via, TString& civ) const;
|
||||
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 import_tables(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_clifo(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_clifor(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_anaart(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_movmag(const TFilename& name, TBrowsefile_field& bf);
|
||||
void import_rigmag(const TFilename& name, TBrowsefile_field& bf);
|
||||
};
|
||||
|
||||
const TString& TTrasfer36::cap2com(const TString& cap, const TString& name) const
|
||||
@ -362,7 +392,7 @@ void TTrasfer36::machedata(TFile_text& file, TRecord_text& curr, const char* fie
|
||||
}
|
||||
}
|
||||
|
||||
void TTrasfer36::import_clifo(const TFilename& name, TBrowsefile_field& bf)
|
||||
void TTrasfer36::import_clifor(const TFilename& name, TBrowsefile_field& bf)
|
||||
{
|
||||
TAssoc_array missing_firm;
|
||||
TString msg;
|
||||
@ -637,10 +667,181 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf)
|
||||
bf.add_line("");
|
||||
}
|
||||
|
||||
void TTrasfer36::import_movmag(const TFilename& name, TBrowsefile_field& bf)
|
||||
{
|
||||
TString msg, str;
|
||||
msg = "Importazione Movimenti magazzino";
|
||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||
TFile_text file(name, "ibm36mag.ini");
|
||||
|
||||
long valid = 0;
|
||||
|
||||
msg.insert("@b", 0);
|
||||
bf.add_line(msg);
|
||||
bf.add_line("");
|
||||
|
||||
TRelation movmag(LF_MOVMAG);
|
||||
TRectype& tesmag = movmag.curr();
|
||||
|
||||
TRecord_text curr;
|
||||
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;
|
||||
|
||||
tesmag.zero();
|
||||
|
||||
str = file.get_field(curr, "CODICE ESERCIZIO").right(1);
|
||||
str[0] -= 5;
|
||||
TString16 numreg = file.get_field(curr, "NUMERO REGISTRAZIONE");
|
||||
numreg.right_just(6, '0');
|
||||
numreg.insert(str, 0);
|
||||
tesmag.put("NUMREG", numreg);
|
||||
|
||||
str = file.get_field(curr, "TIPO CODICE");
|
||||
const char* tipocf = (str == "2") ? "F" : "C";
|
||||
file.add_field(curr, "TIPO CODICE", tipocf);
|
||||
|
||||
machedata(file, curr, "DATA REGISTRAZIONE");
|
||||
const TString& datacomp = file.get_field(curr, "DATA REGISTRAZIONE");
|
||||
movmag.curr().put("DATACOMP", datacomp);
|
||||
|
||||
const int err = file.autosave(movmag, curr);
|
||||
if (err != NOERR)
|
||||
{
|
||||
msg = "! Errore di scrittura sul file LF_MOVMAG: ";
|
||||
msg << err;
|
||||
bf.add_line(msg);
|
||||
}
|
||||
else
|
||||
valid++;
|
||||
}
|
||||
|
||||
// Messaggio finale di elaborazione
|
||||
msg = "Record importati: ";
|
||||
msg << valid;
|
||||
bf.add_line(msg);
|
||||
bf.add_line("");
|
||||
}
|
||||
|
||||
void TTrasfer36::import_rigmag(const TFilename& name, TBrowsefile_field& bf)
|
||||
{
|
||||
TString msg, str;
|
||||
msg = "Importazione righe magazzino";
|
||||
TProgind pi(::fsize(name), msg, TRUE, TRUE);
|
||||
TFile_text file(name, "ibm36rig.ini");
|
||||
|
||||
long valid = 0;
|
||||
|
||||
msg.insert("@b", 0);
|
||||
bf.add_line(msg);
|
||||
bf.add_line("");
|
||||
|
||||
TRelation rmovmag(LF_RMOVMAG);
|
||||
TRectype& rigamag = rmovmag.curr();
|
||||
|
||||
TString last_numreg;
|
||||
int num_rig = 0;
|
||||
|
||||
TRecord_text curr;
|
||||
while (file.read(curr) == NOERR)
|
||||
{
|
||||
pi.setstatus(file.read_file()->tellg());
|
||||
if (pi.iscancelled())
|
||||
break;
|
||||
|
||||
const int tipo_record = curr.type()[0] - '0';
|
||||
if (tipo_record == 1 || tipo_record == 2)
|
||||
{
|
||||
const char stato_record = file.get_field(curr, "STATO RECORD")[0];
|
||||
if (stato_record == 'A')
|
||||
continue;
|
||||
|
||||
TString16 numreg = file.get_field(curr, "NUMERO REGISTRAZIONE");
|
||||
if (numreg != last_numreg)
|
||||
{
|
||||
last_numreg = numreg;
|
||||
num_rig = 1;
|
||||
}
|
||||
else
|
||||
num_rig++;
|
||||
|
||||
rigamag.zero();
|
||||
|
||||
str = file.get_field(curr, "CODICE ESERCIZIO").right(1);
|
||||
str[0] -= 5;
|
||||
numreg.right_just(6, '0');
|
||||
numreg.insert(str, 0);
|
||||
rigamag.put("NUMREG", numreg);
|
||||
rigamag.put("NRIG", num_rig);
|
||||
|
||||
if (num_rig == 1)
|
||||
{
|
||||
TLocalisamfile movmag(LF_MOVMAG);
|
||||
movmag.put("NUMREG", numreg);
|
||||
if (movmag.read() != NOERR)
|
||||
{
|
||||
msg = "!Le righe del movimento ";
|
||||
msg << numreg << " non hanno una testata";
|
||||
bf.add_line(msg);
|
||||
}
|
||||
}
|
||||
|
||||
mettilavirgola(file, curr, "QUANT", 11, 3);
|
||||
mettilavirgola(file, curr, "PREZZO", 11, 2);
|
||||
|
||||
if (tipo_record == 2)
|
||||
rigamag.put("AUTOMATICA", "A");
|
||||
|
||||
const int err = file.autosave(rmovmag, curr);
|
||||
if (err != NOERR)
|
||||
{
|
||||
msg = "! Errore di scrittura sul file LF_RMOVMAG: ";
|
||||
msg << err;
|
||||
bf.add_line(msg);
|
||||
}
|
||||
else
|
||||
valid++;
|
||||
}
|
||||
}
|
||||
|
||||
// Messaggio finale di elaborazione
|
||||
msg = "Record importati: ";
|
||||
msg << valid;
|
||||
bf.add_line(msg);
|
||||
bf.add_line("");
|
||||
}
|
||||
|
||||
void TTrasfer36::mask2ini(TMask& m, bool load)
|
||||
{
|
||||
TConfig cfg(CONFIG_DITTA, "ibm36");
|
||||
TString16 id;
|
||||
|
||||
for (int f = m.fields()-1; f >= 0; f--)
|
||||
{
|
||||
TMask_field& fld = m.fld(f);
|
||||
if (fld.is_edit())
|
||||
{
|
||||
id.format("%d", fld.dlg());
|
||||
if (load)
|
||||
fld.set(cfg.get(id));
|
||||
else
|
||||
cfg.set(id, fld.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrasfer36::main_loop()
|
||||
{
|
||||
TMask36 m;
|
||||
TBrowsefile_field& bf = (TBrowsefile_field&)m.field(201);
|
||||
ini2mask(m);
|
||||
|
||||
TBrowsefile_field& bf = (TBrowsefile_field&)m.field(300);
|
||||
|
||||
TViswin& vw = bf.vis_win();
|
||||
vw.show_rulers(FALSE);
|
||||
@ -648,21 +849,28 @@ void TTrasfer36::main_loop()
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
vw.destroy_lines();
|
||||
TFilename name;
|
||||
|
||||
name = m.get(101);
|
||||
if (name.not_empty())
|
||||
import_tables(name, bf);
|
||||
|
||||
name = m.get(102);
|
||||
if (name.not_empty())
|
||||
import_clifo(name, bf);
|
||||
|
||||
name = m.get(103);
|
||||
if (name.not_empty())
|
||||
import_anaart(name, bf);
|
||||
|
||||
|
||||
const TFilename dir = m.get(100);
|
||||
for (short id = 101; id <= 105; id++)
|
||||
{
|
||||
const TMask_field& fld = m.field(id);
|
||||
if (fld.enabled() && !fld.empty())
|
||||
{
|
||||
TFilename name = dir;
|
||||
name.add(fld.get());
|
||||
switch(fld.dlg())
|
||||
{
|
||||
case 101: import_tables(name, bf); break;
|
||||
case 102: import_clifor(name, bf); break;
|
||||
case 103: import_anaart(name, bf); break;
|
||||
case 104: import_movmag(name, bf); break;
|
||||
case 105: import_rigmag(name, bf); break;
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
}
|
||||
vw.goto_top();
|
||||
mask2ini(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,27 +14,75 @@ ENDPAGE
|
||||
|
||||
PAGE "Trasferimento da IBM 36" -1 -1 68 8
|
||||
|
||||
STRING 101 50
|
||||
STRING 100 50
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tabelle "
|
||||
FSELECT ""
|
||||
PROMPT 1 1 "Directory "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING 102 50
|
||||
BOOLEAN 201
|
||||
BEGIN
|
||||
PROMPT 1 2 "Cli/For "
|
||||
FSELECT ""
|
||||
PROMPT 1 2 "Tabelle "
|
||||
MESSAGE FALSE DISABLE,101
|
||||
MESSAGE TRUE ENABLE,101
|
||||
END
|
||||
|
||||
STRING 103 50
|
||||
STRING 101 16
|
||||
BEGIN
|
||||
PROMPT 1 3 "Ana.Art "
|
||||
FSELECT ""
|
||||
PROMPT 13 2 ""
|
||||
END
|
||||
|
||||
BROWSEFILE 201 -3 -1
|
||||
BOOLEAN 202
|
||||
BEGIN
|
||||
PROMPT 0 4 ""
|
||||
PROMPT 35 2 "Cli/For "
|
||||
MESSAGE FALSE DISABLE,102
|
||||
MESSAGE TRUE ENABLE,102
|
||||
END
|
||||
|
||||
STRING 102 16
|
||||
BEGIN
|
||||
PROMPT 47 2 ""
|
||||
END
|
||||
|
||||
BOOLEAN 203
|
||||
BEGIN
|
||||
PROMPT 1 3 "Ana.Art "
|
||||
MESSAGE FALSE DISABLE,103
|
||||
MESSAGE TRUE ENABLE,103
|
||||
END
|
||||
|
||||
STRING 103 16
|
||||
BEGIN
|
||||
PROMPT 13 3 ""
|
||||
END
|
||||
|
||||
BOOLEAN 204
|
||||
BEGIN
|
||||
PROMPT 1 4 "Ana.Mag."
|
||||
MESSAGE FALSE DISABLE,104
|
||||
MESSAGE TRUE ENABLE,104
|
||||
END
|
||||
|
||||
STRING 104 16
|
||||
BEGIN
|
||||
PROMPT 13 4 ""
|
||||
END
|
||||
|
||||
BOOLEAN 205
|
||||
BEGIN
|
||||
PROMPT 35 4 "Rig.Mag."
|
||||
MESSAGE FALSE DISABLE,105
|
||||
MESSAGE TRUE ENABLE,105
|
||||
END
|
||||
|
||||
STRING 105 16
|
||||
BEGIN
|
||||
PROMPT 47 4 ""
|
||||
END
|
||||
|
||||
BROWSEFILE 300 -3 -1
|
||||
BEGIN
|
||||
PROMPT 0 5 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
|
@ -292,11 +292,6 @@ LENGTH(16) = 9
|
||||
LENGTH(17) = 5
|
||||
LENGTH(18) = 51
|
||||
LENGTH(19) = 2
|
||||
LENGTH(20) = 30
|
||||
LENGTH(21) = 8
|
||||
LENGTH(22) = 20
|
||||
LENGTH(23) = 2
|
||||
LENGTH(24) = 3
|
||||
|
||||
NAME(0) = ANNULLATO
|
||||
NAME(1) = TIPOCF
|
||||
@ -317,10 +312,6 @@ NAME(15) = DATA INVIO ULTIMO SOLLECITO
|
||||
NAME(16) = FIDO
|
||||
NAME(17) = PERCENTUALE SCONTO RIGA
|
||||
NAME(19) = TITOLO ONORIFICO
|
||||
NAME(21) = DATA DI NASCITA
|
||||
NAME(22) = LUOGO DI NASCITA
|
||||
NAME(23) = PROVINCIA DI NASCITA
|
||||
NAME(24) = NAZIONE DI NASCITA
|
||||
|
||||
POSITION(0) = 0
|
||||
POSITION(1) = 1
|
||||
@ -331,22 +322,17 @@ POSITION(5) = 14
|
||||
POSITION(6) = 15
|
||||
POSITION(7) = 17
|
||||
POSITION(8) = 19
|
||||
POSITION(9) = 22
|
||||
POSITION(10) = 25
|
||||
POSITION(11) = 26
|
||||
POSITION(12) = 38
|
||||
POSITION(13) = 40
|
||||
POSITION(14) = 41
|
||||
POSITION(15) = 47
|
||||
POSITION(16) = 53
|
||||
POSITION(17) = 58
|
||||
POSITION(18) = 61
|
||||
POSITION(19) = 112
|
||||
POSITION(20) = 114
|
||||
POSITION(21) = 144
|
||||
POSITION(22) = 152
|
||||
POSITION(23) = 172
|
||||
POSITION(24) = 174
|
||||
POSITION(9) = 24
|
||||
POSITION(10) = 27
|
||||
POSITION(11) = 28
|
||||
POSITION(12) = 40
|
||||
POSITION(13) = 42
|
||||
POSITION(14) = 43
|
||||
POSITION(15) = 49
|
||||
POSITION(16) = 55
|
||||
POSITION(17) = 64
|
||||
POSITION(18) = 69
|
||||
POSITION(19) = 71
|
||||
|
||||
FIELD(1) = TIPOCF
|
||||
FIELD(3) = CODCF
|
||||
@ -356,6 +342,7 @@ FIELD(7) = 17->CODSCC
|
||||
FIELD(8) = 17->SCONTO
|
||||
FIELD(9) = 17->CODMAG
|
||||
FIELD(10) = 17->CODDEP
|
||||
FIELD(11) = 17->CODSP1
|
||||
FIELD(12) = 17->PROFSOLL
|
||||
FIELD(13) = 17->MAXSOLL
|
||||
FIELD(14) = 17->DATAESC
|
||||
|
58
ibm36/ibm36mag.ini
Executable file
58
ibm36/ibm36mag.ini
Executable file
@ -0,0 +1,58 @@
|
||||
[MAIN]
|
||||
TYPELEN = 0
|
||||
TYPEPOS = 0
|
||||
|
||||
[RECORD]
|
||||
|
||||
NAME(0) = STATO RECORD
|
||||
POSITION(0) = 0
|
||||
LENGTH(0) = 1
|
||||
|
||||
NAME(1) = CODICE ESERCIZIO
|
||||
POSITION(1) = 1
|
||||
LENGTH(1) = 2
|
||||
FIELD(1) = ANNOES
|
||||
|
||||
NAME(2) = NUMERO REGISTRAZIONE
|
||||
POSITION(2) = 3
|
||||
LENGTH(2) = 6
|
||||
|
||||
NAME(3) = DATA REGISTRAZIONE
|
||||
POSITION(3) = 9
|
||||
LENGTH(3) = 6
|
||||
FIELD(3) = DATAREG
|
||||
|
||||
NAME(4) = TIPO DOCUMENTO
|
||||
|
||||
NAME(5) = ANNO DOCUMENTO
|
||||
|
||||
NAME(6) = NUMERO DOCUMENTO
|
||||
|
||||
NAME(7) = DATA DOCUMENTO
|
||||
|
||||
NAME(8) = TIPO CODICE
|
||||
POSITION(8) = 30
|
||||
LENGTH(8) = 1
|
||||
FIELD(8) = TIPOCF
|
||||
|
||||
NAME(9) = CODICE CLIFO
|
||||
POSITION(9) = 31
|
||||
LENGTH(9) = 6
|
||||
FIELD(9) = CODCF
|
||||
|
||||
NAME(10) = CODICE VALUTA
|
||||
|
||||
NAME(11) = CAMBIO
|
||||
|
||||
NAME(12) = TIPO DOUMENTO
|
||||
|
||||
NAME(13) = DATA DOCUMENTO
|
||||
POSITION(13) = 53
|
||||
LENGTH(13) = 6
|
||||
FIELD(13) = EX_DATADOC
|
||||
|
||||
NAME(14) = NUMERO DOCUMENTO
|
||||
POSITION(14) = 59
|
||||
LENGTH(14) = 7
|
||||
FIELD(14) = EX_NUMDOC
|
||||
|
115
ibm36/ibm36rig.ini
Executable file
115
ibm36/ibm36rig.ini
Executable file
@ -0,0 +1,115 @@
|
||||
[MAIN]
|
||||
TYPEPOS = 13
|
||||
TYPELEN = 1
|
||||
|
||||
[RECORD 1]
|
||||
|
||||
NAME(0) = STATO RECORD
|
||||
POSITION(0) = 0
|
||||
LENGTH(0) = 1
|
||||
|
||||
NAME(1) = CODICE ESERCIZIO
|
||||
POSITION(1) = 1
|
||||
LENGTH(1) = 2
|
||||
|
||||
NAME(2) = NUMERO REGISTRAZIONE
|
||||
POSITION(2) = 3
|
||||
LENGTH(2) = 6
|
||||
|
||||
NAME(3) = NUMERO RIGA
|
||||
POSITION(3) = 9
|
||||
LENGTH(3) = 4
|
||||
|
||||
NAME(4) = TIPO RECORD
|
||||
POSITION(4) = 13
|
||||
LENGTH(4) = 1
|
||||
|
||||
NAME(5) = CODICE ARTICOLO
|
||||
POSITION(5) = 14
|
||||
LENGTH(5) = 10
|
||||
FIELD(5) = CODART
|
||||
|
||||
NAME(6) = DATA REGISTRAZIONE
|
||||
POSITION(6) = 33
|
||||
LENGTH(6) = 6
|
||||
|
||||
NAME(7) = CODICE MAGAZZINO
|
||||
POSITION(7) = 39
|
||||
LENGTH(7) = 3
|
||||
FIELD(7) = CODMAG
|
||||
|
||||
NAME(8) = CAUSALE MAGAZZINO
|
||||
POSITION(8) = 42
|
||||
LENGTH(8) = 2
|
||||
FIELD(8) = CAUS
|
||||
|
||||
NAME(9) = UNITA DI MISURA
|
||||
POSITION(9) = 76
|
||||
LENGTH(9) = 2
|
||||
FIELD(9) = UM
|
||||
|
||||
NAME(10) = QUANT
|
||||
POSITION(10) = 80
|
||||
LENGTH(10) = 11
|
||||
FIELD(10) = QUANT
|
||||
|
||||
NAME(11) = PREZZO
|
||||
POSITION(11) = 102
|
||||
LENGTH(11) = 11
|
||||
FIELD(11) = PREZZO
|
||||
|
||||
[RECORD 2]
|
||||
|
||||
NAME(0) = STATO RECORD
|
||||
POSITION(0) = 0
|
||||
LENGTH(0) = 1
|
||||
|
||||
NAME(1) = CODICE ESERCIZIO
|
||||
POSITION(1) = 1
|
||||
LENGTH(1) = 2
|
||||
|
||||
NAME(2) = NUMERO REGISTRAZIONE
|
||||
POSITION(2) = 3
|
||||
LENGTH(2) = 6
|
||||
|
||||
NAME(3) = NUMERO RIGA
|
||||
POSITION(3) = 9
|
||||
LENGTH(3) = 4
|
||||
|
||||
NAME(4) = TIPO RECORD
|
||||
POSITION(4) = 13
|
||||
LENGTH(4) = 1
|
||||
|
||||
NAME(5) = CODICE ARTICOLO
|
||||
POSITION(5) = 14
|
||||
LENGTH(5) = 10
|
||||
FIELD(5) = CODART
|
||||
|
||||
NAME(6) = DATA REGISTRAZIONE
|
||||
POSITION(6) = 33
|
||||
LENGTH(6) = 6
|
||||
|
||||
NAME(7) = CODICE MAGAZZINO
|
||||
POSITION(7) = 39
|
||||
LENGTH(7) = 3
|
||||
FIELD(7) = CODMAG
|
||||
|
||||
NAME(8) = CAUSALE MAGAZZINO
|
||||
POSITION(8) = 42
|
||||
LENGTH(8) = 2
|
||||
FIELD(8) = CAUS
|
||||
|
||||
NAME(9) = UNITA DI MISURA
|
||||
POSITION(9) = 76
|
||||
LENGTH(9) = 2
|
||||
FIELD(9) = UM
|
||||
|
||||
NAME(10) = QUANT
|
||||
POSITION(10) = 80
|
||||
LENGTH(10) = 11
|
||||
FIELD(10) = QUANT
|
||||
|
||||
NAME(11) = PREZZO
|
||||
POSITION(11) = 102
|
||||
LENGTH(11) = 11
|
||||
FIELD(11) = PREZZO
|
Loading…
x
Reference in New Issue
Block a user