campo-sirio/ce/ce0.cpp
guy 29dc209df8 ce0.cpp Aggiunti messaggio d'errore
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
1997-12-11 13:23:04 +00:00

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