campo-sirio/db/dbcv01.cpp

150 lines
3.3 KiB
C++
Raw Normal View History

#include "dbcv.h"
#include "dbcv01a.h"
#include "dbcv09.h"
#include <filetext.h>
#include <mask.h>
#include "dbcv01.h"
bool TCrea_dbf::create()
{
return TSkeleton_application::create();
}
bool TCrea_dbf::destroy()
{
return TSkeleton_application::destroy();
}
void TCrea_dbf::txt2dbf(const char * dbf,const char *txt,const char *ini )
{
long lineno=0L;
TIndwin iw(80, format("Ricostruzione file DBF da file di testo BPCS ..."),FALSE,FALSE);
TImport_file dest(_path,dbf);
TFilename txtname(_path),ininame(_path);
txtname.add(txt);txtname.ext("txt");
if (ini)
ininame.add(ini);
else
ininame.add(txt);
ininame.ext("ini");
TFile_text source(txtname, ininame);
dest.zap();
TRecord_text rec;
source.open();
int err;
while ((err = source.read(rec))==NOERR)
{
if ((lineno%TICK) == 0)
{
iw.set_text(format("Importazione %s : linea %ld",txt, lineno));
do_events();
}
TTracciato_record *tr=source.t_rec(rec.type());
if (tr)
{
TArray& a_tc = tr->tracciati_campo();
int items = a_tc.items();
TString valore;
dest.zero();
for (int i = 0; i < items; i++)
{
const TTracciato_campo& tc = tr->get(i);
TFieldref field(tc.field());
if (field.name().not_empty())
{
valore = rec.row(i);
valore.trim();
dest.put(field.name(),valore);
}
}
dest.write();
}
lineno++;
}
source.close();
}
void TCrea_dbf::main_loop()
{
TMask m("dbcv01a.msk");
while (m.run()!=K_QUIT)
{
set_path(m.get(F_PATH));
// anagrafiche
if (m.get_bool(F_ARTS))
{
txt2dbf(BPCS_IMPORTEX,"iims_aga");
txt2dbf(BPCS_ANAGRAFICA, "iim_aga");
}
if (m.get_bool(F_BOMS))
txt2dbf(BPCS_DISTINTE,"mbm_aga");
if (m.get_bool(F_DIVS ))
txt2dbf(BPCS_DIVISORI,"cic_aga");
// magazzino
if (m.get_bool(F_MOVMAG))
{
TFilename txtname(m.get(F_MOVMAG_FILE));
TFilename dbfname(txtname);
if (txtname.blank())
{
txtname = "ith_aga";
dbfname = BPCS_MOVMAG;
} else {
TFilename s(m.get(F_PATH)),d(m.get(F_PATH));
s.add(BPCS_MOVMAG);
s.ext("dbf");
d.add(dbfname.name());
d.ext("dbf");
if (!d.exist())
{
fcopy(s,d);
s.ext("cdx");
d.ext("cdx");
fcopy(s,d);
}
}
txt2dbf(dbfname,txtname,"ith_aga");
}
// ordini
if (m.get_bool(F_ORDACQ))
txt2dbf(BPCS_ORDACQ,"ord_acq");
if (m.get_bool(F_ORDPROD))
txt2dbf(BPCS_SHOPORDS,"ord_prod");
if (m.get_bool(F_ORDCLI))
txt2dbf(BPCS_FIRMORD,"ord_cli" );
}
}
class TCreaauto_dbf: public TCrea_dbf
{
protected:
void main_loop() ;
};
void TCreaauto_dbf::main_loop()
{
TCreaauto_dbf creadbf;
TMask m("dbcv01b.msk");
if (m.run() != K_QUIT)
{
TFilename source(m.get(F_MOVMAG_FILE));
TFilename txtsource(source);
creadbf.set_path(m.get(F_PATH));
creadbf.txt2dbf(source,txtsource,"ith_aga");
}
}
int dbcv01(int argc, char* argv[])
{
if (argc > 2 && argv[2][0]=='a')
{
TCreaauto_dbf dt;
dt.run(argc, argv, "Conversione txt da magazzino BPCS a files DBF");
}
else
{
TCrea_dbf dt;
dt.run(argc, argv, "Conversione txt da BPCS in files DBF");
}
return 0;
}