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:
guy 1998-08-14 12:48:06 +00:00
parent 65d6a471e9
commit 4b6b88e9dd
5 changed files with 469 additions and 53 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -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
View 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
View 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