sesadump.cpp Messo a 0 il WPARAM di WM_WAKEUP git-svn-id: svn://10.65.10.50/trunk@5723 c028cbd2-c16b-5b4b-a496-9718f37d4682
214 lines
5.6 KiB
C++
Executable File
214 lines
5.6 KiB
C++
Executable File
#define STRICT
|
|
#define XVT_INCL_NATIVE
|
|
|
|
#include <applicat.h>
|
|
#include <execp.h>
|
|
#include <filetext.h>
|
|
#include <isam.h>
|
|
|
|
#include <anagr.h>
|
|
#include <anafis.h>
|
|
#include <anagiu.h>
|
|
#include <nditte.h>
|
|
#include <unloc.h>
|
|
|
|
class TSESA_anagr : public TSkeleton_application
|
|
{
|
|
protected:
|
|
virtual void main_loop();
|
|
|
|
public:
|
|
bool is_sigla32() const;
|
|
bool split_address(TString& addr, TString& civ) const;
|
|
int write(TLocalisamfile& file, bool re);
|
|
};
|
|
|
|
bool TSESA_anagr::is_sigla32() const
|
|
{
|
|
char szBuffer[80];
|
|
GetPrivateProfileString("SIGLAPP",
|
|
"Driver32", "", szBuffer, sizeof(szBuffer), "odbc.ini");
|
|
return *szBuffer != '\0';
|
|
}
|
|
|
|
bool TSESA_anagr::split_address(TString& addr, TString& civ) const
|
|
{
|
|
bool ok = FALSE;
|
|
char* comma = strchr(addr, ',');
|
|
if (comma == NULL)
|
|
comma = strrchr(addr, ' ');
|
|
if (comma)
|
|
{
|
|
for (const char* c = comma+1; *c; c++)
|
|
{
|
|
if (isdigit(*c))
|
|
{
|
|
*comma = '\0';
|
|
civ = comma+1;
|
|
civ = civ.left(10);
|
|
ok = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
addr.ltrim();
|
|
addr = addr.left(35);
|
|
return ok;
|
|
}
|
|
|
|
int TSESA_anagr::write(TLocalisamfile& file, bool re)
|
|
{
|
|
int err = re ? file.rewrite() : file.write();
|
|
if (err != NOERR)
|
|
err = re ? file.write() : file.rewrite();
|
|
return err;
|
|
}
|
|
|
|
void TSESA_anagr::main_loop()
|
|
{
|
|
TFilename tmp; tmp.tempdir();
|
|
TString cmdline(80);
|
|
cmdline = "dump";
|
|
if (is_sigla32())
|
|
cmdline << "32";
|
|
else
|
|
cmdline << "16";
|
|
cmdline << " ditte " << tmp;
|
|
TExternal_app app(cmdline);
|
|
int err = app.run(FALSE,3);
|
|
if (err != 0)
|
|
{
|
|
error_box("Errore %d nell'esecuzione del programma %s",
|
|
err, (const char*)cmdline);
|
|
return;
|
|
}
|
|
|
|
TFilename txt = tmp; txt.add("ditte.txt");
|
|
TFilename ini = tmp; ini.add("ditte.ini");
|
|
TFile_text file(txt, ini);
|
|
err = file.open('r');
|
|
if (err != 0)
|
|
{
|
|
::remove(ini); // Lo rimuove in caso crei vuoto il TConfig di TFile_text
|
|
error_box("Aggiornamento anagrafiche non effettuato:\n"
|
|
"impossibile aprire il file %s", (const char*)txt);
|
|
return;
|
|
}
|
|
|
|
TLocalisamfile ditte(LF_NDITTE);
|
|
TLocalisamfile anag(LF_ANAG);
|
|
TLocalisamfile anafis(LF_ANAGFIS);
|
|
TLocalisamfile anagiu(LF_ANAGGIU);
|
|
TLocalisamfile unloc(LF_UNLOC);
|
|
|
|
TString ragsoc, comres, locres, indres, civres, capres;
|
|
|
|
TRecord_text rec;
|
|
for (long rig = 1; file.read(rec) == 0; rig++)
|
|
{
|
|
const long codditta = atol(file.get_field(rec, "CODDITTA"));
|
|
if (codditta <= 0)
|
|
{
|
|
error_box("Codice ditta non valido alla riga %ld.", rig);
|
|
continue;
|
|
}
|
|
|
|
const char tipoa = file.get_field(rec, "PERS_FIS") == "S" ? 'F' : 'G';
|
|
ragsoc = file.get_field(rec, "RAGSOC");
|
|
comres = file.get_field(rec, "COMUNE");
|
|
locres = file.get_field(rec, "LOCALITA");
|
|
indres = file.get_field(rec, "INDIR1");
|
|
indres << file.get_field(rec, "INDIR2");
|
|
split_address(indres, civres);
|
|
|
|
ditte.zero();
|
|
ditte.put(NDT_CODDITTA, codditta);
|
|
int err = ditte.read(_isequal, _lock);
|
|
|
|
ditte.put(NDT_CODDITTA, codditta);
|
|
ditte.put(NDT_TIPOA, tipoa);
|
|
ditte.put(NDT_CODANAGR, codditta);
|
|
ditte.put(NDT_RAGSOC, ragsoc);
|
|
|
|
err = write(ditte, err == NOERR);
|
|
if (err != NOERR)
|
|
error_box("Errore %d in scrittura\ndella ditta %ld", err, codditta);
|
|
|
|
anag.put(ANA_TIPOA, tipoa);
|
|
anag.put(ANA_CODANAGR, codditta);
|
|
err = anag.read(_isequal, _lock);
|
|
|
|
anag.put(ANA_TIPOA, tipoa);
|
|
anag.put(ANA_CODANAGR, codditta);
|
|
anag.put(ANA_RAGSOC, ragsoc);
|
|
anag.put(ANA_COMRES, comres);
|
|
anag.put(ANA_INDRES, indres);
|
|
anag.put(ANA_CIVRES, civres);
|
|
anag.put(ANA_CAPRES, capres);
|
|
anag.put(ANA_COFI, file.get_field(rec, "CODFISCALE"));
|
|
anag.put(ANA_PAIV, file.get_field(rec, "PART_IVA"));
|
|
|
|
err = write(anag, err == NOERR);
|
|
if (err != NOERR)
|
|
error_box("Errore %d in scrittura\ndell'anagrafica %ld", err, codditta);
|
|
|
|
if (tipoa == 'F')
|
|
{
|
|
anafis.put(ANF_CODANAGR, codditta);
|
|
err = anafis.read(_isequal, _lock);
|
|
|
|
anafis.put(ANF_CODANAGR, codditta);
|
|
anafis.put(ANF_SESSO, file.get_field(rec, "SESSO"));
|
|
anafis.put(ANF_DATANASC, file.get_field(rec, "NASCITA"));
|
|
anafis.put(ANF_COMNASC, file.get_field(rec, "COMNASC"));
|
|
|
|
err = write(anafis, err == NOERR);
|
|
if (err != NOERR)
|
|
error_box("Errore %d in scrittura\ndella persona fisica %ld", err, codditta);
|
|
}
|
|
else
|
|
{
|
|
anagiu.put(ANG_CODANAGR, codditta);
|
|
err = anagiu.read(_isequal, _lock);
|
|
|
|
anagiu.put(ANG_CODANAGR, codditta);
|
|
anagiu.put(ANG_NATGIU, file.get_field(rec, "NAT_GIURID"));
|
|
|
|
err = write(anagiu, err == NOERR);
|
|
if (err != NOERR)
|
|
error_box("Errore %d in scrittura\ndella persona giuridica %ld", err, codditta);
|
|
}
|
|
|
|
unloc.put(ULC_CODDITTA, codditta);
|
|
unloc.put(ULC_CODULC, 1);
|
|
err = unloc.read(_isequal, _lock);
|
|
|
|
unloc.put(ULC_CODDITTA, codditta);
|
|
unloc.put(ULC_CODULC, 1);
|
|
unloc.put(ULC_COMULC, comres);
|
|
unloc.put(ULC_INDULC, indres);
|
|
unloc.put(ULC_CIVULC, civres);
|
|
unloc.put(ULC_CAPULC, capres);
|
|
unloc.put(ULC_COMCCIAA, comres);
|
|
unloc.put(ULC_COMTRIB, comres);
|
|
|
|
err = write(unloc, err == NOERR);
|
|
if (err != NOERR)
|
|
error_box("Errore %d in scrittura\ndell'unita' locale della ditta %ld", err, codditta);
|
|
}
|
|
if (rig <= 1)
|
|
warning_box("Non e' stata trasferita nessuna ditta");
|
|
|
|
remove(txt);
|
|
remove(ini);
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
TSESA_anagr app;
|
|
app.run(argc, argv, "Aggiornamento anagrafiche");
|
|
exit(0);
|
|
return 0;
|
|
}
|
|
|