ba1301 Tolta cgettime da programma di test isam

ba3100 Corretta gestione bottone di configurazione stampa registri
bacnvid Aggiunti controlli sui files senza tracciato
batbreg Aggiunto acceleratore alt-s sul bottone di configurazione stampante


git-svn-id: svn://10.65.10.50/trunk@1546 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-07-03 16:16:48 +00:00
parent bca2780adb
commit 55394b9fac
4 changed files with 391 additions and 402 deletions

View File

@ -329,12 +329,12 @@ void TTestProc::do_test_2()
void TTestProc::DumpReport(int err, long i, long x, int key) void TTestProc::DumpReport(int err, long i, long x, int key)
{ {
static rnum=0; static rnum=0;
char ora[10]; char ora[12] = "08-08-1883";
TString RandomFile,ReportFile; TString RandomFile,ReportFile;
FILE * fp; FILE * fp;
get_win()->WriteW(33,15,(const char*)TString(35).format("File nr. %d Test nr. %ld",_nfile,_ntest)); get_win()->WriteW(33,15,(const char*)TString(35).format("File nr. %d Test nr. %ld",_nfile,_ntest));
cgettime(ora);
if (!fexist("test")) // create directory if (!fexist("test")) // create directory
#if XVT_OS==XVT_OS_SCOUNIX #if XVT_OS==XVT_OS_SCOUNIX
mkdir("test",0777); mkdir("test",0777);

View File

@ -120,9 +120,11 @@ HIDDEN bool printer_handler(TMask_field& f, KEY k)
TPrinter& p = printer(); TPrinter& p = printer();
p.set_printtype(normprinter); // Force configuration update p.set_printtype(normprinter); // Force configuration update
p.read_configuration(config); p.read_configuration(config);
p.set(); if (p.set())
m.enable(F_CONFIG); {
m.set(F_CONFIG, "X"); m.enable(F_CONFIG);
m.set(F_CONFIG, "X");
}
p.read_configuration(); p.read_configuration();
} }
else else
@ -142,12 +144,12 @@ HIDDEN bool impdel_handler(TMask_field& f, KEY k)
if (tipo_del == 1 || tipo_del == 7) if (tipo_del == 1 || tipo_del == 7)
{ {
const double lim[2] = { 50000.0, 200000.0};
const int t = tipo_del == 1 ? 0 : 1; const int t = tipo_del == 1 ? 0 : 1;
const real imp(m.get(F_IMPORTO)); const real imp(m.get(F_IMPORTO));
const double lim[2] = { 50000.0, 200000.0};
if (imp < lim[t]) if (imp < lim[t])
return yesno_box("Importo inferiore a Lit. %s. Vuoi registrare lo stesso ?", real(lim[t]).string(".")); return yesno_box("Importo inferiore a Lit. %s. Registrare ugualmente?", real(lim[t]).string("."));
} }
} }
return TRUE; return TRUE;

View File

@ -1,388 +1,375 @@
#include <applicat.h> #include <applicat.h>
#include <isam.h> #include <isam.h>
#include <date.h> #include <date.h>
#include <prefix.h> #include <prefix.h>
#include <progind.h> #include <progind.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
#define DAYBIAS 36525L #define DAYBIAS 36525L
#define DAYYEAR 365 #define DAYYEAR 365
extern "C" { extern "C" {
int CGetFieldBuff(char *, RecDes *, char *, char *); int CGetFieldBuff(char *, RecDes *, char *, char *);
int findfld(RecDes *, const char *); int findfld(RecDes *, const char *);
}; };
byte m1[12] = {31,28,31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; byte m1[12] = {31,28,31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int m2[12] = {31,59,90,120,151,181,212,243,273,304,334,365}; int m2[12] = {31,59,90,120,151,181,212,243,273,304,334,365};
enum what {_date,_isam}; enum what {_date,_isam};
HIDDEN int CGetField(const char *fieldname,RecDes* recd,RecType recin,long* d) HIDDEN int CGetField(const char *fieldname,RecDes* recd,RecType recin,long* d)
{ {
int p, i; int p, i;
unsigned int off; unsigned int off;
byte len; byte len;
char *s1, s[10]; char *s1, s[10];
if ((p = findfld(recd, fieldname)) != -1) if ((p = findfld(recd, fieldname)) != -1)
{ {
off = recd->Fd[p].RecOff; off = recd->Fd[p].RecOff;
len = recd->Fd[p].Len; len = recd->Fd[p].Len;
if (recd->Fd[p].TypeF != _datefld) if (recd->Fd[p].TypeF != _datefld)
{ {
while ((recin[off] == ' ') && (len)) while ((recin[off] == ' ') && (len))
{ {
off++; off++;
len--; len--;
} }
} }
if (len) if (len)
{ {
s1 = recin + off; s1 = recin + off;
for (i = 0; i < len; i++) s[i] = s1[i]; for (i = 0; i < len; i++) s[i] = s1[i];
s[len] = '\0'; s[len] = '\0';
while ((len) && (s[len - 1] == ' ')) s[--len] = '\0'; while ((len) && (s[len - 1] == ' ')) s[--len] = '\0';
} }
else strcpy(s, ""); else strcpy(s, "");
if (recd->Fd[p].TypeF == _datefld) if (recd->Fd[p].TypeF == _datefld)
{ {
if (strlen(s)) *d=atol(s); if (strlen(s)) *d=atol(s);
else *d=0; else *d=0;
} }
return (0); return (0);
} }
else else
{ {
fatal_box("Non esiste il campo %s", fieldname); fatal_box("Non esiste il campo %s", fieldname);
return(-1); return(-1);
} }
} }
class TIsam_date_converter : public TApplication class TIsam_date_converter : public TApplication
{ {
protected: protected:
virtual bool create () ; virtual bool create () ;
virtual bool destroy(); virtual bool destroy();
void update(); void update();
void Iupdate_dir(); void Iupdate_dir();
void convert_dir(const what conversion); void convert_dir(const what conversion);
int Iconvert_file(int logicnum); int Iconvert_file(int logicnum);
void Dconvert_file(int logicnum); void Dconvert_file(int logicnum);
public: public:
TIsam_date_converter() {} TIsam_date_converter() {}
~TIsam_date_converter() {} ~TIsam_date_converter() {}
}; };
bool TIsam_date_converter::create() // initvar e arrmask bool TIsam_date_converter::create() // initvar e arrmask
{ {
TApplication::create(); TApplication::create();
update(); update();
return FALSE; return FALSE;
} }
bool TIsam_date_converter::destroy() // releasev e arrmask bool TIsam_date_converter::destroy() // releasev e arrmask
{ {
return TApplication::destroy() ; return TApplication::destroy() ;
} }
void TIsam_date_converter::update() void TIsam_date_converter::update()
{ {
long firm = get_firm(); long firm = get_firm();
TString pref; TString pref;
if (firm == 0) pref = prefix().name(); if (firm == 0) pref = prefix().name();
do_events(); do_events();
begin_wait(); begin_wait();
// Converte i files in formato DBIII, FOXPRO... // Converte i files in formato DBIII, FOXPRO...
prefix().set(""); prefix().set("");
Iupdate_dir(); Iupdate_dir();
prefix().set("com"); prefix().set("com");
Iupdate_dir(); Iupdate_dir();
convert_dir(_isam); convert_dir(_isam);
TLocalisamfile ditte(LF_NDITTE); TLocalisamfile ditte(LF_NDITTE);
set_autoload_new_files(FALSE); set_autoload_new_files(FALSE);
for (ditte.first(); !ditte.eof(); ditte.next()) for (ditte.first(); !ditte.eof(); ditte.next())
{ {
const long codditta = ditte.get_long("CODDITTA"); const long codditta = ditte.get_long("CODDITTA");
const TRecnotype rec = ditte.recno(); const TRecnotype rec = ditte.recno();
if (prefix().exist(codditta)) if (prefix().exist(codditta))
{ {
set_firm(codditta); set_firm(codditta);
Iupdate_dir(); Iupdate_dir();
convert_dir(_isam); convert_dir(_isam);
} }
} }
// Converte le date in ANSI. // Converte le date in ANSI.
prefix().set("com"); prefix().set("com");
convert_dir(_date); convert_dir(_date);
for (ditte.first(); !ditte.eof(); ditte.next()) for (ditte.first(); !ditte.eof(); ditte.next())
{ {
const long codditta = ditte.get_long("CODDITTA"); const long codditta = ditte.get_long("CODDITTA");
const TRecnotype rec = ditte.recno(); const TRecnotype rec = ditte.recno();
if (prefix().exist(codditta)) if (prefix().exist(codditta))
{ {
set_firm(codditta); set_firm(codditta);
convert_dir(_date); convert_dir(_date);
} }
} }
if (firm > 0) set_firm(firm); if (firm > 0) set_firm(firm);
else prefix().set(pref); else prefix().set(pref);
set_autoload_new_files(TRUE); set_autoload_new_files(TRUE);
end_wait(); end_wait();
} }
void TIsam_date_converter::Iupdate_dir() void TIsam_date_converter::Iupdate_dir()
{ {
TDir d; TDir d;
d.get(LF_DIR); d.get(LF_DIR);
const int items = (int)d.eod(); const int items = (int)d.eod();
TString80 s("Aggiornamento direttorio "); TString80 s("Aggiornamento direttorio ");
TString pref(prefix().name()); TString pref(prefix().name());
if (pref.empty()) s << "standard"; if (pref.empty()) s << "standard";
else else
if (pref == "com") s << "comune"; if (pref == "com") s << "comune";
else s << " della ditta " << atol (pref); else s << " della ditta " << atol (pref);
TProgind p((long)(items ? items : 1), s, TRUE, TRUE, 70); TProgind p((long)(items ? items : 1), s, TRUE, TRUE, 70);
p.setstatus(1L); p.setstatus(1L);
for (int i = 2; i <= items; i++) for (int i = 2; i <= items; i++)
{ {
p.addstatus(1L); p.addstatus(1L);
d.get(i, _nolock, _nordir, _sysdirop); d.get(i, _nolock, _nordir, _sysdirop);
TFilename s(d.name()); TFilename s(d.name());
s.ext(""); s.ext("");
strcpy((char *) d.name(), s); strcpy((char *) d.name(), s);
d.put(i, _nordir, _sysdirop); d.put(i, _nordir, _sysdirop);
} }
} }
void TIsam_date_converter::convert_dir(const what conversion) void TIsam_date_converter::convert_dir(const what conversion)
{ {
const TString pref(prefix().name()); const TString pref(prefix().name());
const bool is_com = prefix().is_com(); const bool is_com = prefix().is_com();
TDir d; TDir d;
d.get(LF_DIR); d.get(LF_DIR);
const int items = (int)d.eod(); const int items = (int)d.eod();
TString80 s("Aggiornamento archivi "); TString80 s("Aggiornamento archivi ");
if (pref == "com") s << "comuni"; if (pref == "com") s << "comuni";
else s << " della ditta " << atol (pref); else s << " della ditta " << atol (pref);
TProgind p((long)(items ? items : 1), s, TRUE, TRUE, 70); TProgind p((long)(items ? items : 1), s, TRUE, TRUE, 70);
p.setstatus(1L); p.setstatus(1L);
for (int i = 2; i <= items; i++) for (int i = 2; i <= items; i++)
{ {
p.setstatus((long)(i+1)); p.setstatus((long)(i+1));
d.get(i, _nolock, _nordir, _sysdirop); d.get(i, _nolock, _nordir, _sysdirop);
const bool to_convert = (is_com ? d.is_com() : d.is_firm()); const bool to_convert = (is_com ? d.is_com() : d.is_firm());
if (to_convert) if (to_convert)
{ {
if (conversion == _isam) if (conversion == _isam)
Iconvert_file(i); Iconvert_file(i);
else else
Dconvert_file(i); Dconvert_file(i);
} }
} }
} }
int TIsam_date_converter::Iconvert_file(int logicnum) int TIsam_date_converter::Iconvert_file(int logicnum)
{ {
TDir dir; TDir dir;
TTrec r; TTrec r;
int err = NOERR; int err = NOERR;
r.get(logicnum); r.get(logicnum);
RecDes *rd=r.rec(); RecDes *rd=r.rec();
const int nflds = r.fields(); const int nflds = r.fields();
const int nkeys = r.keys();
dir.get(logicnum);
if (dir.len() == 0) return 0; dir.get(logicnum);
const char * fp = dir.name(); if (dir.len() == 0 || nflds < 1 || nkeys < 1) return 0;
TFilename old(fp); const char * fp = dir.name();
const TRecnotype nitems = dir.eod(); TFilename old(fp);
TFile f(dir.len()); const TRecnotype nitems = dir.eod();
TFile f(dir.len());
old.ext("dta");
if (fexist(old)) old.ext("dta");
{ if (fexist(old))
f.open(old); {
{ f.open(old);
TSystemisamfile newfile(logicnum); {
TSystemisamfile newfile(logicnum);
if (newfile.build(10) != NOERR) if (newfile.build(10) != NOERR)
fatal_box("Non riesco a creare il file %s : errore n. %d", fp, newfile.status()); fatal_box("Non riesco a creare il file %s : errore n. %d", fp, newfile.status());
} }
char * _field= new char [r.len()]; TString s(80);
TString s(80); s.format("Aggiornamento archivio %s", fp);
TToken_string ts(128); // Build token_string with the names of date fields
for (int j=0; j<r.fields(); j++) TProgind p((long)(nitems ? nitems : 1), s, FALSE, TRUE, 70);
if (rd->Fd[j].TypeF == _datefld) TLocalisamfile newfile(logicnum);
ts.add(rd->Fd[j].Name); TRecnotype i;
for (i = 1; newfile.good() && i <= dir.eod(); i++)
s.format("Aggiornamento archivio %s", fp); {
TProgind p((long)(nitems ? nitems : 1), s, TRUE, TRUE, 70); f.read(newfile.curr().string(),i);
TLocalisamfile newfile(logicnum);
TRecnotype i; if (newfile.curr().string()[0] == '\0')
for (i = 1; newfile.good() && i <= dir.eod(); i++) newfile.curr().recall();
{ else
f.read(newfile.curr().string(),i); newfile.curr().discard();
ts.restart(); if ((i % 50) == 0) p.setstatus((long)(i + 1));
if (newfile.curr().string()[0] == NULL) if (!newfile.curr().isdeleted())
{ newfile.write();
for (int j=0; j<ts.items(); j++) }
{ p.setstatus((long)nitems);
CGetFieldBuff((char*)ts.get(),rd,newfile.curr().string(),_field); f.close();
newfile.curr().put(ts.get(j),_field); if (newfile.good())
} {
newfile.curr().recall(); old.ext("dta");
} ::remove(old);
else old.ext("ndx");
newfile.curr().discard(); ::remove(old);
if ((i % 50) == 0) p.setstatus((long)(i + 1)); }
if (!newfile.curr().isdeleted()) else
newfile.write(); error_box("Errore nella conversione dell' archivio %s : n.ro %d",
} fp, newfile.status());
p.setstatus((long)nitems); }
f.close(); else
if (_field != NULL) {
delete _field; // Crea il file se non esiste il relativo .DTA.
if (newfile.good()) const TString pref(prefix().name());
{ const bool is_com = prefix().is_com();
old.ext("dta");
::remove(old); prefix().set("");
old.ext("ndx"); dir.get(logicnum);
::remove(old); const int module = abs((int)dir.flags());
} prefix().set(pref);
else dir.get(logicnum, _nolock, _nordir, _sysdirop);
error_box("Errore nella conversione dell' archivio %s : n.ro %d", bool to_create = (is_com ? dir.is_com() : dir.is_firm());
fp, newfile.status()); if (to_create && has_module(module, CHK_DONGLE))
} {
else dir.get(logicnum);
{ TFilename s(dir.name());
// Crea il file se non esiste il relativo .DTA. s.ext("dbf");
const TString pref(prefix().name()); if (!fexist(s)) // Crea il file solo se non esiste il .DBF
const bool is_com = prefix().is_com(); {
TSystemisamfile f(logicnum);
prefix().set(""); f.build(10L);
dir.get(logicnum); }
const int module = abs((int)dir.flags()); }
prefix().set(pref); }
dir.get(logicnum, _nolock, _nordir, _sysdirop); return err;
bool to_create = (is_com ? dir.is_com() : dir.is_firm()); }
if (to_create && has_module(module, CHK_DONGLE))
{ void TIsam_date_converter::Dconvert_file(int logicnum)
dir.get(logicnum);
TFilename s(dir.name()); {
s.ext("dbf"); TDir dir;
if (!fexist(s)) // Crea il file solo se non esiste il .DBF TTrec r;
{ int err = NOERR;
TSystemisamfile f(logicnum);
f.build(10L); r.get(logicnum);
} RecDes *rd=r.rec();
} const int nflds = r.fields();
} const int nkeys = r.keys();
return err;
} dir.get(logicnum);
if (dir.len() == 0 || nflds < 1 || nkeys < 1) return;
void TIsam_date_converter::Dconvert_file(int logicnum) const TRecnotype nitems = dir.eod();
const char* file_name = dir.name();
{
TDir dir; TToken_string ts(128); // Build token_string with the names of date fields and logical fields
TTrec r; TToken_string tslog(128);
int err = NOERR; for (int j=0; j<r.fields(); j++)
if (rd->Fd[j].TypeF == _datefld)
r.get(logicnum); ts.add(rd->Fd[j].Name);
RecDes *rd=r.rec(); else
const int nflds = r.fields(); if (rd->Fd[j].TypeF == _boolfld)
tslog.add(rd->Fd[j].Name);
dir.get(logicnum);
if (dir.len() == 0) return; if (ts.items() > 0 || tslog.items() > 0)
const TRecnotype nitems = dir.eod(); {
const char* file_name = dir.name(); TString s(80);
s.format("Aggiornamento archivio %s", file_name);
TToken_string ts(128); // Build token_string with the names of date fields and logical fields TProgind p((long)(nitems ? nitems : 1), s, TRUE, TRUE, 70);
TToken_string tslog(128); TLocalisamfile ifile(logicnum);
for (int j=0; j<r.fields(); j++) ifile.readat(1);
if (rd->Fd[j].TypeF == _datefld) for (TRecnotype i = 1; ifile.good() && i <= ifile.items(); i++)
ts.add(rd->Fd[j].Name); {
else ts.restart();
if (rd->Fd[j].TypeF == _boolfld) tslog.restart();
tslog.add(rd->Fd[j].Name); for (int j=1; j <= ts.items(); j++)
{
if (ts.items() > 0 || tslog.items() > 0) const char* field_name=ts.get();
{ long wd;
TString s(80); CGetField(field_name,rd,ifile.curr().string(),&wd);
s.format("Aggiornamento archivio %s", file_name); TDate d(wd);
TProgind p((long)(nitems ? nitems : 1), s, TRUE, TRUE, 70); ifile.curr().put(field_name,d);
TLocalisamfile ifile(logicnum); }
ifile.readat(1); for (j=1; j<= tslog.items(); j++)
for (TRecnotype i = 1; ifile.good() && i <= ifile.items(); i++) {
{ const char* field_name=tslog.get();
ts.restart(); TString value;
tslog.restart(); value=ifile.curr().get_str(field_name);
for (int j=1; j <= ts.items(); j++) ifile.curr().put(field_name,value == "X");
{ }
const char* field_name=ts.get(); ifile.rewriteat(i);
long wd; if (i < ifile.items())
CGetField(field_name,rd,ifile.curr().string(),&wd); {
TDate d(wd); ifile.readat(i+1);
ifile.curr().put(field_name,d); if ((i %50) == 0) p.setstatus(i+1);
} }
for (j=1; j<= tslog.items(); j++) }
{ p.setstatus(nitems);
const char* field_name=tslog.get(); }
TString value; }
value=ifile.curr().get_str(field_name);
ifile.curr().put(field_name,value == "X"); int main(int argc, char** argv)
} {
ifile.rewriteat(i); TIsam_date_converter a;
if (i < ifile.items())
{ a.run(argc, argv, "Conversione a CodeBase");
ifile.readat(i+1); return 0;
if ((i %50) == 0) p.setstatus(i+1); }
}
}
p.setstatus(nitems);
}
}
int main(int argc, char** argv)
{
TIsam_date_converter a;
a.run(argc, argv, "Conversione a CodeBase");
return 0;
}

View File

@ -230,16 +230,16 @@ BEGIN
VALIDATE NOT_EMPTY_CHECK_FIELD VALIDATE NOT_EMPTY_CHECK_FIELD
END END
BUTTON F_PRINTER 32 2
BEGIN
PROMPT 1 17 "Configurazione stampante"
END
BOOLEAN F_CONFIG BOOLEAN F_CONFIG
BEGIN BEGIN
PROMPT 40 17 "Stampante configurata" PROMPT 1 17 "Stampante configurata"
END END
BUTTON F_PRINTER 30 2
BEGIN
PROMPT 40 17 "Configurazione ~stampante"
END
ENDPAGE ENDPAGE
PAGE "Registri pag.2" -1 -1 78 18 PAGE "Registri pag.2" -1 -1 78 18