Patch level : 2.0.369
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione P@rtners 2.0 patch 349 git-svn-id: svn://10.65.10.50/trunk@10709 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c8d2a302e3
commit
981678913a
@ -152,6 +152,7 @@ int VersionYear()
|
||||
{
|
||||
char ver[32];
|
||||
GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "./eurocampo/zip/install.ini");
|
||||
|
||||
ver[4] = '\0';
|
||||
return atoi(ver);
|
||||
}
|
||||
@ -173,6 +174,7 @@ bool DongleTest()
|
||||
|
||||
bool ok = FALSE;
|
||||
ifstream keys("./eurocampo/zip/dninst.zip", ios::in | ios::nocreate);
|
||||
|
||||
if (keys.good())
|
||||
{
|
||||
char line[256];
|
||||
@ -269,6 +271,7 @@ LRESULT CALLBACK MainWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
RECT rct;
|
||||
const char* s1 = "Installa EUROCAMPO in versione commerciale protetta. E' necessario disporre di una chiave di protezione hardware.";
|
||||
const char* s2 = "Installa EUROCAMPO in versione Demo. La versione Demo è priva di protezione hardware ma soggetta ad alcune limitazioni.";
|
||||
|
||||
const char* s4 = "Termina installazione";
|
||||
const char* s5 = "Scelta installazione";
|
||||
|
||||
@ -312,6 +315,7 @@ LRESULT CALLBACK MainWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (DongleTest())
|
||||
Run("eurocampo\\disk1\\setup.exe");
|
||||
|
||||
}
|
||||
else if (wParam == 1001)
|
||||
{
|
||||
@ -401,9 +405,11 @@ int PASCAL WinMain (HINSTANCE hInst, HINSTANCE hinstPrev, LPSTR pCmdLine, int nC
|
||||
CreateWindow("BUTTON","Installazione EUROCAMPO",
|
||||
WS_CHILD| WS_VISIBLE ,offx ,offy,256,32, hwndDlg ,(HMENU)1000,hInst,NULL );
|
||||
|
||||
|
||||
CreateWindow("BUTTON","Installazione EUROCAMPO Demo",
|
||||
WS_CHILD| WS_VISIBLE ,offx ,offy+80,256,32, hwndDlg ,(HMENU)1001,hInst,NULL );
|
||||
|
||||
|
||||
CreateWindow("BUTTON","Uscita",
|
||||
WS_CHILD| WS_VISIBLE,offx,offy+160,256,32, hwndDlg ,(HMENU)2,hInst,NULL );
|
||||
|
||||
@ -415,4 +421,3 @@ int PASCAL WinMain (HINSTANCE hInst, HINSTANCE hinstPrev, LPSTR pCmdLine, int nC
|
||||
|
||||
return (msg.wParam);
|
||||
}
|
||||
|
||||
|
||||
@ -570,7 +570,8 @@ void TSet_user_passwd::enable_aut()
|
||||
{
|
||||
const int module = _im->get_module_by_order(i+uns);
|
||||
TToken_string& riga = sf.row(i);
|
||||
if (module == BAAUT || module == SRAUT)
|
||||
if (module == BAAUT)
|
||||
|
||||
{
|
||||
sf.disable_cell(i,1);
|
||||
riga.add("X",1);
|
||||
@ -791,4 +792,4 @@ int ba1400(int argc, char** argv)
|
||||
a.run(argc, argv, TR("Configurazione utenti"));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
#include <applicat.h>
|
||||
#include <mask.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
@ -11,8 +12,8 @@
|
||||
// TSoci_sheet
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
const char* const PHYSICAL_HEAD = "Codice|Cognome@30|Nome@20";
|
||||
const char* const JURASSIC_HEAD = "Codice|Ragione sociale@50";
|
||||
const char* const PHYSICAL_HEAD = HR("Codice|Cognome@30|Nome@20");
|
||||
const char* const JURASSIC_HEAD = HR("Codice|Ragione sociale@50");
|
||||
|
||||
class TSoci_sheet : public TArray_sheet
|
||||
{
|
||||
@ -27,7 +28,7 @@ public:
|
||||
};
|
||||
|
||||
TSoci_sheet::TSoci_sheet(bool fis)
|
||||
: TArray_sheet(-1,-1, -4, -4, "Soci", fis ? PHYSICAL_HEAD : JURASSIC_HEAD),
|
||||
: TArray_sheet(-1,-1, -4, -4, TR("Soci"), fis ? PHYSICAL_HEAD : JURASSIC_HEAD),
|
||||
_physical(fis)
|
||||
{}
|
||||
|
||||
@ -166,12 +167,8 @@ bool TQuery_application::do_query()
|
||||
TQuery_socio query(_mask);
|
||||
TSoci_sheet s(query.tipo() == "F"); // Create sheet
|
||||
TRelation fsoci(LF_SOCI);
|
||||
TLocalisamfile fanag(LF_ANAG);
|
||||
TLocalisamfile fditte(LF_NDITTE);
|
||||
|
||||
TRectype& soci = fsoci.curr();
|
||||
TRectype& anag = fanag.curr();
|
||||
TRectype& ditte = fditte.curr();
|
||||
|
||||
soci.zero();
|
||||
_mask->autosave(fsoci);
|
||||
@ -179,19 +176,22 @@ bool TQuery_application::do_query()
|
||||
{
|
||||
if (query.test(soci) == 0)
|
||||
{
|
||||
TString cur_codice = soci.get("CODANAGRSO"), ragsoc(80);
|
||||
anag.zero();
|
||||
anag.put("TIPOA", query.tipo());
|
||||
anag.put("CODANAGR", cur_codice);
|
||||
if (fanag.read() != NOERR) ragsoc = "Anagrafica assente";
|
||||
else ragsoc = anag.get("RAGSOC");
|
||||
TString ragsoc(80);
|
||||
TString16 cur_codice = soci.get("CODANAGRSO");
|
||||
TString16 key; key << query.tipo() << "|" << cur_codice;
|
||||
|
||||
const TRectype & anag = cache().get(LF_ANAG, key);
|
||||
if (anag.empty())
|
||||
ragsoc = TR("Anagrafica assente");
|
||||
else
|
||||
ragsoc = anag.get("RAGSOC");
|
||||
s.add_socio(cur_codice, ragsoc);
|
||||
}
|
||||
}
|
||||
|
||||
if (s.items() == 0)
|
||||
{
|
||||
warning_box("Nessuna corrispondenza");
|
||||
warning_box(TR("Nessuna corrispondenza"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -201,13 +201,14 @@ bool TQuery_application::do_query()
|
||||
r.restart();
|
||||
TString codice(r.get());
|
||||
TString nome(r.get());
|
||||
TRectype ditte(LF_NDITTE);
|
||||
|
||||
TToken_string h(128);
|
||||
h.add("A/P ");
|
||||
h.add(head(ditte, "CODDITTA", "Codice"));
|
||||
h.add(head(ditte, "RAGSOC", "Ragione sociale"));
|
||||
h.add("Carica|Qualifica|740|750");
|
||||
h.add(head(soci, "PERCQUAZ", "% Quote"));
|
||||
h.add(head(ditte, "CODDITTA", TR("Codice")));
|
||||
h.add(head(ditte, "RAGSOC", TR("Ragione sociale")));
|
||||
h.add(HR("Carica|Qualifica|740|750"));
|
||||
h.add(head(soci, "PERCQUAZ", TR("% Quote")));
|
||||
TArray_sheet d(-1,-1, -4, -4, nome, h);
|
||||
|
||||
soci.zero();
|
||||
@ -221,11 +222,10 @@ bool TQuery_application::do_query()
|
||||
if (query.test(soci) != 0) continue;
|
||||
|
||||
row = soci.get("ATTPREC");
|
||||
ditte.zero();
|
||||
row.add(soci.get("CODDITTA"));
|
||||
ditte.put("CODDITTA", row.get(1));
|
||||
if (fditte.read() != NOERR)
|
||||
row.add("Ditta assente");
|
||||
ditte = cache().get(LF_NDITTE, row.get(1));
|
||||
if (ditte.empty())
|
||||
row.add(TR("Ditta assente"));
|
||||
else
|
||||
row.add(ditte.get("RAGSOC"));
|
||||
row.add(soci.get("CODCAR"));
|
||||
@ -246,6 +246,6 @@ bool TQuery_application::do_query()
|
||||
int ba5100(int argc,char* argv[])
|
||||
{
|
||||
TQuery_application qa;
|
||||
qa.run(argc, argv, "Ricerca Soci");
|
||||
qa.run(argc, argv, TR("Ricerca Soci"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ HIDDEN bool tiporeg_handler(TMask_field& f, KEY k)
|
||||
if ((k == K_TAB || k == K_ENTER) && app().exist_journal() &&
|
||||
(atoi(f.get()) == REG_JOURNAL)
|
||||
)
|
||||
return f.error_box("Non e' possibile avere due registri giornale nello stesso anno");
|
||||
return f.error_box(TR("Non e' possibile avere due registri giornale nello stesso anno"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ HIDDEN bool printer_handler(TMask_field& f, KEY k)
|
||||
p.read_configuration();
|
||||
}
|
||||
else
|
||||
return f.error_box("Nessun registro selezionato");
|
||||
return f.error_box(TR("Nessun registro selezionato"));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
@ -171,6 +171,6 @@ bool TRegister_app::codsp_handler(TMask_field& f, KEY k)
|
||||
int ba5200(int argc, char* argv[])
|
||||
{
|
||||
TRegister_app a ;
|
||||
a.run(argc, argv, "Gestione registri");
|
||||
a.run(argc, argv, TR("Gestione registri"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -250,7 +250,7 @@ void TRicezioneABICAB::ricevi(const char * path, bool abi, bool cab, bool cab_fu
|
||||
int ba5300(int argc, char* argv[])
|
||||
{
|
||||
TRicezioneABICAB app;
|
||||
app.run(argc,argv,"Ricezione ABI e CAB");
|
||||
app.run(argc,argv, TR("Ricezione ABI e CAB"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
// Stampa anagrafiche
|
||||
// Control code
|
||||
// ***********************************************************************
|
||||
#include <recarray.h>
|
||||
#include <progind.h>
|
||||
#include <mailbox.h>
|
||||
#include <execp.h>
|
||||
@ -13,17 +14,13 @@
|
||||
|
||||
const TRectype& TAnaprint_app::look_com(const char* cod, const char* sta)
|
||||
{
|
||||
TRectype& com = _comuni->curr();
|
||||
com.zero();
|
||||
if (cod && *cod)
|
||||
{
|
||||
com.put("COM",cod);
|
||||
if (sta && *sta)
|
||||
com.put("STATO",sta);
|
||||
if (_comuni->read() != NOERR)
|
||||
com.zero();
|
||||
}
|
||||
return com;
|
||||
TString16 key;
|
||||
if (sta && *sta)
|
||||
key << sta;
|
||||
key << "|";
|
||||
if (cod && *cod)
|
||||
key << cod;
|
||||
return cache().get(LF_COMUNI, key);
|
||||
}
|
||||
|
||||
const char* TAnaprint_app::look_tab(const char* tabname, const char* cod,
|
||||
@ -192,7 +189,7 @@ void TAnaprint_app::preprocess_etichette()
|
||||
{
|
||||
_surname = _name.mid(30); _surname.trim();
|
||||
_name = _name.cut(30); _name.trim();
|
||||
_sex = get_field(LF_ANAGFIS,"SESSO")[0] == 'M' ? "Sig." : "Sig.ra";
|
||||
_sex = get_field(LF_ANAGFIS,"SESSO")[0] == 'M' ? TR("Sig.") : TR("Sig.ra");
|
||||
}
|
||||
switch (_ind_what)
|
||||
{
|
||||
@ -299,8 +296,8 @@ bool TAnaprint_app::set_print(int)
|
||||
case BUT_BA6_ELENCO:
|
||||
_pr_type = elenco;
|
||||
// cio' che e' blu collega al modulo anagrafiche
|
||||
_ana_link = enable_link("Collegamento archivio anagrafiche: ", 'b');
|
||||
_dit_link = enable_link("Collegamento archivio ditte: ", 'v');
|
||||
_ana_link = enable_link(TR("Collegamento archivio anagrafiche: "), 'b');
|
||||
_dit_link = enable_link(TR("Collegamento archivio ditte: "), 'v');
|
||||
break;
|
||||
case BUT_BA6_SCHEDE:
|
||||
disable_links();
|
||||
@ -381,8 +378,8 @@ bool TAnaprint_app::set_print(int)
|
||||
}
|
||||
break;
|
||||
case BUT_BA6_RUBRICHE:
|
||||
_ana_link = enable_link("Collegamento archivio anagrafiche: ", 'b');
|
||||
_dit_link = enable_link("Collegamento archivio ditte: ", 'v');
|
||||
_ana_link = enable_link(TR("Collegamento archivio anagrafiche: "), 'b');
|
||||
_dit_link = enable_link(TR("Collegamento archivio ditte: "), 'v');
|
||||
_pr_type = rubriche;
|
||||
break;
|
||||
}
|
||||
@ -485,9 +482,10 @@ bool TAnaprint_app::user_create()
|
||||
_bk_ditta = _bk_ana = _bk_socio = _bk_attiv = _bk_registro = _bk_unloc = -1;
|
||||
|
||||
TToken_string rxp(40);
|
||||
TProgind p(5, "Preparazione archivi\rPrego attendere", FALSE, TRUE);
|
||||
TProgind p(5, TR("Preparazione archivi\rPrego attendere"), FALSE, TRUE);
|
||||
|
||||
// setup relation
|
||||
open_files(LF_COMUNI, LF_ANAG, LF_ANAGFIS, LF_ANAGGIU, LF_NDITTE, 0);
|
||||
_rel_fis = new TRelation(LF_ANAG);
|
||||
_rel_giu = new TRelation(LF_ANAG);
|
||||
_rel_dit = new TRelation(LF_NDITTE);
|
||||
@ -531,39 +529,37 @@ bool TAnaprint_app::user_create()
|
||||
|
||||
p.addstatus(1);
|
||||
|
||||
_comuni = new TLocalisamfile(LF_COMUNI);
|
||||
|
||||
// set translated field values
|
||||
set_translation(LF_ANAGFIS,"STATCIV","1","Celibe/Nubile");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","2","Coniugato/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","3","Vedovo/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","4","Separato/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","5","Divorziato/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","6","Deceduto/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","7","Tutelato/a");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","8","Figlio/a minore");
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "1" ,"Nessuno");
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "2" ,"Lic. Elem.");
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "3" ,"Lic. Media");
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "4" ,"Diploma");
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "5" ,"Laurea");
|
||||
set_translation(LF_ANAGFIS,"SESSO", "M", "Maschio");
|
||||
set_translation(LF_ANAGFIS,"SESSO", "F", "Femmina");
|
||||
set_translation(LF_NDITTE,"FREQVIVA","M","Mensile");
|
||||
set_translation(LF_NDITTE,"FREQVIVA","T","Trimestrale");
|
||||
set_translation(LF_NDITTE,"DATLAV","1","Si");
|
||||
set_translation(LF_NDITTE,"DATLAV","2","No");
|
||||
set_translation(LF_NDITTE,"DATLAV","3","Lavoro Agricolo");
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","1","Normale attivita'");
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","2","Liquidazione cessata attivita'");
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","3","Fallimento o Liquidazione coatta amm.");
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","4","Estinto");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","1","Inizio");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","2","Liquidazione");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","3","Termine liquidazione");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","4","Estinzione");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","5","Trasf. IRPEG");
|
||||
set_translation(LF_ANAGGIU,"SITSOC","6","Normale");
|
||||
set_translation(LF_ANAGFIS,"STATCIV","1",TR("Celibe/Nubile"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","2",TR("Coniugato/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","3",TR("Vedovo/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","4",TR("Separato/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","5",TR("Divorziato/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","6",TR("Deceduto/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","7",TR("Tutelato/a"));
|
||||
set_translation(LF_ANAGFIS,"STATCIV","8",TR("Figlio/a minore"));
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "1" ,TR("Nessuno"));
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "2" ,TR("Lic. Elem."));
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "3" ,TR("Lic. Media"));
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "4" ,TR("Diploma"));
|
||||
set_translation(LF_ANAGFIS,"TITSTU", "5" ,TR("Laurea"));
|
||||
set_translation(LF_ANAGFIS,"SESSO", "M", TR("Maschio"));
|
||||
set_translation(LF_ANAGFIS,"SESSO", "F", TR("Femmina"));
|
||||
set_translation(LF_NDITTE,"FREQVIVA","M",TR("Mensile"));
|
||||
set_translation(LF_NDITTE,"FREQVIVA","T",TR("Trimestrale"));
|
||||
set_translation(LF_NDITTE,"DATLAV","1",TR("Si"));
|
||||
set_translation(LF_NDITTE,"DATLAV","2",TR("No"));
|
||||
set_translation(LF_NDITTE,"DATLAV","3",TR("Lavoro Agricolo"));
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","1",TR("Normale attivita'"));
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","2",TR("Liquidazione cessata attivita'"));
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","3",TR("Fallimento o Liquidazione coatta amm."));
|
||||
set_translation(LF_ANAGGIU,"STATOSOC","4",TR("Estinto"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","1",TR("Inizio"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","2",TR("Liquidazione"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","3",TR("Termine liquidazione"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","4",TR("Estinzione"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","5",TR("Trasf. IRPEG"));
|
||||
set_translation(LF_ANAGGIU,"SITSOC","6",TR("Normale"));
|
||||
|
||||
set_fillchar('_');
|
||||
set_wait_threshold(0);
|
||||
@ -579,7 +575,6 @@ bool TAnaprint_app::user_destroy()
|
||||
if (_rel_dit) delete _rel_dit;
|
||||
if (_frpos) delete _frpos;
|
||||
|
||||
delete _comuni;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -587,6 +582,6 @@ bool TAnaprint_app::user_destroy()
|
||||
int ba6100(int argc, char* argv[])
|
||||
{
|
||||
TAnaprint_app app;
|
||||
app.run(argc, argv, "Stampa Anagrafiche");
|
||||
app.run(argc, argv, TR("Stampa Anagrafiche"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -33,7 +33,6 @@ class TAnaprint_app : public TPrintapp
|
||||
int _cfis2, _cgiu2, _cdit2;
|
||||
int _sort;
|
||||
bool _inclditte;
|
||||
TLocalisamfile* _comuni;
|
||||
// settings etichette
|
||||
in _ind_what;
|
||||
int _ind_row, _ind_col, _rows_et, _cols_et;
|
||||
|
||||
380
ba/ba6101.cpp
380
ba/ba6101.cpp
@ -13,20 +13,20 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
|
||||
int row = 1;
|
||||
|
||||
set_row(row++,"SCHEDA SOCIETA'");
|
||||
set_row(row++,TR("SCHEDA SOCIETA'"));
|
||||
set_row(row++,"");
|
||||
set_row(row++,"@bCodice@r@15g@u@pn@25g@r@bRag.Sociale @r@u@50s",
|
||||
set_row(row++,FR("@bCodice@r@15g@u@pn@25g@r@bRag.Sociale @r@u@50s"),
|
||||
FLD(LF_ANAG,"CODANAGR","@@@@@"),
|
||||
FLD(LF_ANAG,"RAGSOC"));
|
||||
set_row(row++,"@25g@bEvent. sigla@r@40g@u@20s",
|
||||
set_row(row++,FR("@25g@bEvent. sigla@r@40g@u@20s"),
|
||||
FLD(LF_ANAGGIU,"SIGLA"));
|
||||
set_row(row++,"Oggetto soc.@15g@60s",
|
||||
set_row(row++, FR("Oggetto soc.@15g@60s"),
|
||||
FLD(LF_ANAGGIU,"OGGSOC"));
|
||||
set_row(row++,"Codice Fiscale@20g@16s@46gPartita IVA @12s",
|
||||
set_row(row++, FR("Codice Fiscale@20g@16s@46gPartita IVA @12s"),
|
||||
FLD(LF_ANAG,"COFI"), FLD(LF_ANAG,"PAIV"));
|
||||
set_row(row++,"Riferimento@15g@20s", FLD(LF_ANAGGIU,"PERRIF"));
|
||||
set_row(row++,FR("Riferimento@15g@20s"), FLD(LF_ANAGGIU,"PERRIF"));
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Sede legale@20gIndirizzo @35s N. @s",
|
||||
set_row(row++, FR("Sede legale@20gIndirizzo @35s N. @s"),
|
||||
FLD(LF_ANAG,"INDRES"),
|
||||
FLD(LF_ANAG,"CIVRES"));
|
||||
|
||||
@ -37,17 +37,17 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
TString a = cc.get("DENCOM");
|
||||
TString b = cc.get("CAPCOM");
|
||||
TString c = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %2s@68gCAP %5s",
|
||||
set_row(row++,FR("@20gComune %s %-24s@58gProv. %2s@68gCAP %5s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
a = sta.empty() ? "Italia" : look_tab("%STA",sta);
|
||||
set_row(row++,"@20gStato %s",(const char*)a);
|
||||
a = sta.empty() ? TR("Italia") : look_tab("%STA",sta);
|
||||
set_row(row++, FR("@20gStato %s"),(const char*)a);
|
||||
|
||||
set_row(row++,"@20gTelefono @u@10s@r/@u@30s@r",
|
||||
set_row(row++, FR("@20gTelefono @u@10s@r/@u@30s@r"),
|
||||
FLD(LF_ANAG,"PTELRF"),
|
||||
FLD(LF_ANAG,"TELRF"));
|
||||
set_row(row++,"");
|
||||
|
||||
set_row(row++,"Domicilio fiscale@20gIndirizzo @35s N. @s",
|
||||
set_row(row++, FR("Domicilio fiscale@20gIndirizzo @35s N. @s"),
|
||||
FLD(LF_ANAG,"INDRF"),
|
||||
FLD(LF_ANAG,"CIVRF"));
|
||||
|
||||
@ -56,11 +56,11 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
a = cc.get("DENCOM");
|
||||
b = cc.get("CAPCOM");
|
||||
c = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %2s@68gCAP %5s",
|
||||
set_row(row++,FR("@20gComune %s %-24s@58gProv. %2s@68gCAP %5s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Corrispondenza@20gIndirizzo @35s N. @s @35s",
|
||||
set_row(row++, FR("Corrispondenza@20gIndirizzo @35s N. @s @35s"),
|
||||
FLD(LF_ANAG,"INDCORR"),
|
||||
FLD(LF_ANAG,"CIVCORR"),
|
||||
FLD(LF_ANAG,"LOCCORR"));
|
||||
@ -72,52 +72,52 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
b = cc.get("CAPCOM");
|
||||
c = cc.get("PROVCOM");
|
||||
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %2s@68gCAP %5s",
|
||||
set_row(row++, FR("@20gComune %s %-24s@58gProv. %2s@68gCAP %5s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
|
||||
a = sta.empty() ? "Italia" : look_tab("%STA",sta);
|
||||
set_row(row++,"@20gStato %s",(const char*)a);
|
||||
a = sta.empty() ? TR("Italia") : look_tab("%STA",sta);
|
||||
set_row(row++, FR("@20gStato %s"),(const char*)a);
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Telex@20g@u@10s@r/@u@30s@r",
|
||||
set_row(row++, FR("Telex@20g@u@10s@r/@u@30s@r"),
|
||||
FLD(LF_ANAG,"PTLEXRF"),
|
||||
FLD(LF_ANAG,"TLEXRFX"));
|
||||
set_row(row++,"Telefax@20g@u@10s@r/@u@30s@r",
|
||||
set_row(row++, FR("Telefax@20g@u@10s@r/@u@30s@r"),
|
||||
FLD(LF_ANAG,"PFAXRF"), FLD(LF_ANAG,"FAXRF"));
|
||||
set_row(row++,"Posta elettronica@20g@s", FLD(LF_ANAG,"MAIL"));
|
||||
set_row(row++, FR("Posta elettronica@20g@s"), FLD(LF_ANAG,"MAIL"));
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Ufficio imposte@20gNumero @pn",
|
||||
set_row(row++, FR("Ufficio imposte@20gNumero @pn"),
|
||||
FLD(LF_ANAG,"UFFIIDD","@@@"));
|
||||
com = look_tab("%UID",get_field(LF_ANAG, "UFFIIDD"),"S6"); // Comune imposte dirette
|
||||
c = look_tab("%UID",get_field(LF_ANAG, "UFFIIDD"),"S4"); // c.c. Esattoria
|
||||
look_com(com);
|
||||
a = cc.get("DENCOM");
|
||||
b = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %s",
|
||||
set_row(row++, FR("@20gComune %s %-24s@58gProv. %s"),
|
||||
(const char*)com, (const char*)a, (const char*)b);
|
||||
|
||||
set_row(row++,"Ufficio IVA@20gNumero @pn",
|
||||
set_row(row++,FR("Ufficio IVA@20gNumero @pn"),
|
||||
FLD(LF_ANAG,"UFFIVA","@@@"));
|
||||
com = look_tab("%UIV",get_field(LF_ANAG, "UFFIVA"),"S6");
|
||||
look_com(com);
|
||||
a = cc.get("DENCOM");
|
||||
b = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %s",
|
||||
set_row(row++, FR("@20gComune %s %-24s@58gProv. %s"),
|
||||
(const char*)com, (const char*)a, (const char*)b);
|
||||
|
||||
set_row(row++,"Esattoria@20gComunale @02s Provinciale @03s C.C. %s",
|
||||
set_row(row++,FR("Esattoria@20gComunale @02s Provinciale @03s C.C. %s"),
|
||||
FLD(LF_ANAG,"CODCONTR",0,2), FLD(LF_ANAG,"CODCONTR",2,5), (const char*)c);
|
||||
set_row(row++,"@20gCodice contribuente @8s @2s",
|
||||
set_row(row++, FR("@20gCodice contribuente @8s @2s"),
|
||||
FLD(LF_ANAG,"CODCONTR", 5, 13), FLD(LF_ANAG,"CODCONTR", 13, 15));
|
||||
|
||||
//Qui la stampa dei dati conto fiscale
|
||||
TString16 tipo_stampa;
|
||||
const int tipo = current_cursor()->curr(LF_ANAG).get_int("TIPOSTDEL");
|
||||
if (tipo == 0) tipo_stampa = "Delega";
|
||||
else if (tipo == 1) tipo_stampa = "Bollettino";
|
||||
else tipo_stampa = "Distinta";
|
||||
set_row(row++,"Dati conto fiscale @20gTitolare conto fiscale @54g@f @60gTipo stampa %s",
|
||||
if (tipo == 0) tipo_stampa = TR("Delega");
|
||||
else if (tipo == 1) tipo_stampa = TR("Bollettino");
|
||||
else tipo_stampa = TR("Distinta");
|
||||
set_row(row++,FR("Dati conto fiscale @20gTitolare conto fiscale @54g@f @60gTipo stampa %s"),
|
||||
FLD(LF_ANAG,"TITCF"), (const char*) tipo_stampa);
|
||||
|
||||
tipo_stampa = current_cursor()->curr(LF_ANAG).get("UFFCONC");
|
||||
@ -136,45 +136,43 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
tipo_stampa = cc.get("UFFCONC");
|
||||
}
|
||||
}
|
||||
set_row(row++,"@20gConto fiscale %s @s",
|
||||
set_row(row++,FR("@20gConto fiscale %s @s"),
|
||||
(const char*)tipo_stampa, FLD(LF_ANAG,"COFI"));
|
||||
|
||||
TString16 abicab = get_field(LF_ANAG, "CODABI");
|
||||
if (abicab.not_empty() && abicab != "00000")
|
||||
{
|
||||
set_row(row++,"@20gABI %s@30g%s", (const char*)abicab, look_tab("%BAN", abicab));
|
||||
set_row(row++,FR("@20gABI %s@30g%s"), (const char*)abicab, look_tab("%BAN", abicab));
|
||||
const TString16 cab = get_field(LF_ANAG, "CODCAB");
|
||||
if (cab.not_empty() && cab != "00000")
|
||||
{
|
||||
abicab << cab;
|
||||
set_row(row++,"@20gCAB %s@30g%s",
|
||||
set_row(row++, FR("@20gCAB %s@30g%s"),
|
||||
(const char*)cab, look_tab("%BAN", abicab));
|
||||
}
|
||||
}
|
||||
|
||||
set_row(row++,"");
|
||||
// dati atto costitutivo etc
|
||||
set_row(row++,"Dati atto costitutivo e statuto");
|
||||
set_row(row++,"Estremi@20g@60s", FLD(LF_ANAGGIU,"ESTROMOL"));
|
||||
set_row(row++,"Omologa@25g@ld@41gData iscrizione@70g@ld",
|
||||
set_row(row++, TR("Dati atto costitutivo e statuto"));
|
||||
set_row(row++, FR("Estremi@20g@60s"), FLD(LF_ANAGGIU,"ESTROMOL"));
|
||||
set_row(row++, FR("Omologa@25g@ld@41gData iscrizione@70g@ld"),
|
||||
FLD(LF_ANAGGIU,"DATAOMOL"),
|
||||
FLD(LF_ANAGGIU,"DATAISCRIZ"));
|
||||
set_row(row++,"Data costituzione@25g@ld@41gDurata sino@70g@ld",
|
||||
set_row(row++, FR("Data costituzione@25g@ld@41gDurata sino@70g@ld"),
|
||||
FLD(LF_ANAGGIU,"DATACOST"),
|
||||
FLD(LF_ANAGGIU,"DATASCAD"));
|
||||
|
||||
TString cod = get_field(LF_ANAGGIU,"COMCOST");
|
||||
look_com(cod);
|
||||
set_row(row++,"Luogo costituzione@20g%s %s", (const char*)cod, (const char*)cc.get("DENCOM"));
|
||||
set_row(row++, FR("Luogo costituzione@20g%s %s"), (const char*)cod, (const char*)cc.get("DENCOM"));
|
||||
|
||||
set_row(row++,"Termine appr. bilancio@25g@d@41gApprovazione bilancio@70g@d",
|
||||
set_row(row++, FR("Termine appr. bilancio@25g@d@41gApprovazione bilancio@70g@d"),
|
||||
FLD(LF_ANAGGIU,"DATATAPPBI"), FLD(LF_ANAGGIU,"DATAAPPBIL"));
|
||||
set_row(row++,"Scad.org.amministrativo@25g@d@41gScadenza collegio "
|
||||
"sindacale@70g@d",
|
||||
set_row(row++, FR("Scad.org.amministrativo@25g@d@41gScadenza collegio sindacale@70g@d"),
|
||||
FLD(LF_ANAGGIU,"DATASORAMM"), FLD(LF_ANAGGIU,"DATASCSIND"));
|
||||
set_row(row++,"");
|
||||
set_row(row++,"@5gCapit.sociale@24gCapit.versato@47g"
|
||||
"Fatturato@65gN.azioni@74gValore");
|
||||
set_row(row++, FR("@5gCapit.sociale@24gCapit.versato@47gFatturato@65gN.azioni@74gValore"));
|
||||
set_row(row++,"@pn @pn @pn @61g@n @pn",
|
||||
FLD(LF_ANAGGIU,"CAPSOC","###.###.###.###.###"),
|
||||
FLD(LF_ANAGGIU,"CAPVER","###.###.###.###.###"),
|
||||
@ -183,39 +181,39 @@ void TAnaprint_app::set_scheda_anagiu()
|
||||
FLD(LF_ANAGGIU,"VALNOM","###.###.###.###"));
|
||||
set_row(row++,"");
|
||||
|
||||
set_row(row++,"Dati Statistici@20gNon residente@61g@f",
|
||||
set_row(row++, FR("Dati Statistici@20gNon residente@61g@f"),
|
||||
FLD(LF_ANAG,"SOGGNRES"));
|
||||
set_row(row++,"@20gEventi naturali eccezionali@61g@s",
|
||||
set_row(row++, FR("@20gEventi naturali eccezionali@61g@s"),
|
||||
FLD(LF_ANAG,"EVECC"));
|
||||
set_row(row++,"@20gResidente in zone terremotate@61g@f",
|
||||
set_row(row++, FR("@20gResidente in zone terremotate@61g@f"),
|
||||
FLD(LF_ANAG,"RESZTERR"));
|
||||
// *TBI* traduzione natura giuridica
|
||||
set_row(row++,"@20gNatura giuridica@61g@s",
|
||||
set_row(row++, FR("@20gNatura giuridica@61g@s"),
|
||||
FLD(LF_ANAGGIU,"NATGIU"));
|
||||
set_row(row++,"@20gStato societa'@51g@20,rt",
|
||||
set_row(row++, FR("@20gStato societa'@51g@20,rt"),
|
||||
FLD(LF_ANAGGIU,"STATOSOC"));
|
||||
set_row(row++,"@20gSituazione societa'@51g@20,rt",
|
||||
set_row(row++, FR("@20gSituazione societa'@51g@20,rt"),
|
||||
FLD(LF_ANAGGIU,"SITSOC"));
|
||||
set_row(row++,"");
|
||||
a = look_tab("%STT",current_cursor()->curr(LF_ANAG).get("CODSTAT1"),"S0");
|
||||
set_row(row++,"@20gSigla stat.1 @7s %-50s",
|
||||
set_row(row++, FR("@20gSigla stat.1 @7s %-50s"),
|
||||
FLD(LF_ANAG,"CODSTAT1"), (const char*)a);
|
||||
a = look_tab("%STT",current_cursor()->curr(LF_ANAG).get("CODSTAT2"),"S0");
|
||||
set_row(row++,"@20gSigla stat.2 @7s %-50s",
|
||||
set_row(row++, FR("@20gSigla stat.2 @7s %-50s"),
|
||||
FLD(LF_ANAG,"CODSTAT2"), (const char*)a);
|
||||
a = look_tab("%STT",current_cursor()->curr(LF_ANAG).get("CODSTAT3"),"S0");
|
||||
set_row(row++,"@20gSigla stat.3 @7s %-50s",
|
||||
set_row(row++, FR("@20gSigla stat.3 @7s %-50s"),
|
||||
FLD(LF_ANAG,"CODSTAT3"), (const char*)a);
|
||||
|
||||
// NOTE
|
||||
set_row(row++,"Note");
|
||||
set_row(row++, TR("Note"));
|
||||
set_row(row++,"@6g@70s",FLD(LF_ANAGGIU,"NOTE1"));
|
||||
set_row(row++,"@6g@70s",FLD(LF_ANAGGIU,"NOTE2"));
|
||||
set_row(row++,"@6g@70s",FLD(LF_ANAGGIU,"NOTE3"));
|
||||
set_row(row++,"@6g@70s",FLD(LF_ANAGGIU,"NOTE4"));
|
||||
set_row(row++,"@6g@70s",FLD(LF_ANAGGIU,"NOTE5"));
|
||||
row++;
|
||||
set_row(row++,"Aggiornato il@20g@s", FLD(LF_ANAG, "DATAAGG"));
|
||||
set_row(row++, FR("Aggiornato il@20g@s"), FLD(LF_ANAG, "DATAAGG"));
|
||||
|
||||
const int l = printer().rows();
|
||||
for (int i = 64; i <= l; i++)
|
||||
@ -229,18 +227,18 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
_bk_ana = set_bookmark(zio);
|
||||
|
||||
int row = 1;
|
||||
set_row(row++,"SCHEDA PERSONA FISICA");
|
||||
set_row(row++, TR("SCHEDA PERSONA FISICA"));
|
||||
set_row(row++,"");
|
||||
set_row(row++,"@bCodice @r@u@pn@20g@r@bCognome @r@u@S",
|
||||
set_row(row++, FR("@bCodice @r@u@pn@20g@r@bCognome @r@u@S"),
|
||||
FLD(LF_ANAG,"CODANAGR","@@@@@"),
|
||||
FLD(LF_ANAG,"RAGSOC",0,29));
|
||||
set_row(row++,"@20g@bNome @r@u@s",
|
||||
set_row(row++, FR("@20g@bNome @r@u@s"),
|
||||
FLD(LF_ANAG,"RAGSOC",30,50));
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Codice Fiscale@20g@s@46gPartita IVA @s",
|
||||
set_row(row++, FR("Codice Fiscale@20g@s@46gPartita IVA @s"),
|
||||
FLD(LF_ANAG,"COFI"), FLD(LF_ANAG,"PAIV"));
|
||||
set_row(row++,"Cod. Fisc. estero@20g@s", FLD(LF_ANAG,"COFIEST"));
|
||||
set_row(row++,"Data di nascita@20g@ld@32g@t@46gNazionalita' @s",
|
||||
set_row(row++, FR("Cod. Fisc. estero@20g@s"), FLD(LF_ANAG,"COFIEST"));
|
||||
set_row(row++, FR("Data di nascita@20g@ld@32g@t@46gNazionalita' @s"),
|
||||
FLD(LF_ANAGFIS,"DATANASC"), FLD(LF_ANAGFIS,"SESSO"), FLD(LF_ANAGFIS,"NAZION"));
|
||||
|
||||
TString com = get_field(LF_ANAGFIS, "COMNASC");
|
||||
@ -248,11 +246,11 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
TString a = cc.get("DENCOM");
|
||||
TString b; // CAPCOM
|
||||
TString c = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %s@58gProv. %s",
|
||||
set_row(row++, FR("@20gComune %s %s@58gProv. %s"),
|
||||
(const char*)com, (const char*)a, (const char*)c);
|
||||
|
||||
row++;
|
||||
set_row(row++,"Residenza@20gIndirizzo @s N. @s",
|
||||
set_row(row++, FR("Residenza@20gIndirizzo @s N. @s"),
|
||||
FLD(LF_ANAG,"INDRES"), FLD(LF_ANAG,"CIVRES"));
|
||||
|
||||
com = get_field(LF_ANAG, "COMRES");
|
||||
@ -262,19 +260,19 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
b = cc.get("CAPCOM");
|
||||
c = cc.get("PROVCOM");
|
||||
|
||||
set_row(row++,"@20gComune %s %s@58gProv. %s@68gCAP %s",
|
||||
set_row(row++, FR("@20gComune %s %s@58gProv. %s@68gCAP %s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
a = sta.empty() ? "Italia" : look_tab("%STA",sta);
|
||||
set_row(row++,"@20gStato %s",(const char*)a);
|
||||
a = sta.empty() ? TR("Italia") : look_tab("%STA",sta);
|
||||
set_row(row++, FR("@20gStato %s"),(const char*)a);
|
||||
|
||||
set_row(row++,"@20gTelefono @u@s@r/@u@s@r",
|
||||
set_row(row++, FR("@20gTelefono @u@s@r/@u@s@r"),
|
||||
FLD(LF_ANAG,"PTELRF"), FLD(LF_ANAG,"TELRF"));
|
||||
|
||||
set_row(row++,"@20gVariata residenza @f@53gData variazione @s",
|
||||
set_row(row++, FR("@20gVariata residenza @f@53gData variazione @s"),
|
||||
FLD(LF_ANAG,"VARSLORES"), FLD(LF_ANAG,"DVARSLORES"));
|
||||
|
||||
row++;
|
||||
set_row(row++,"Domicilio fiscale@20gIndirizzo @s N. @s",
|
||||
set_row(row++, FR("Domicilio fiscale@20gIndirizzo @s N. @s"),
|
||||
FLD(LF_ANAG,"INDRF"), FLD(LF_ANAG,"CIVRF"));
|
||||
|
||||
com = get_field(LF_ANAG, "COMRF");
|
||||
@ -284,24 +282,24 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
b = cc.get("CAPCOM");
|
||||
c = cc.get("PROVCOM");
|
||||
|
||||
set_row(row++,"@20gComune %s %s@58gProv. %s@68gCAP %s",
|
||||
set_row(row++, FR("@20gComune %s %s@58gProv. %s@68gCAP %s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
|
||||
TString flag;
|
||||
const int partic = atoi(get_field(LF_ANAGFIS, "CPARTRF"));
|
||||
switch(partic)
|
||||
{
|
||||
case 2:flag = "Residente all'estero"; break;
|
||||
case 3:flag = "Provvedimenti amministrativi"; break;
|
||||
case 4:flag = "Variata da meno di 60 giorni"; break;
|
||||
default:flag = "Nessuno"; break;
|
||||
case 2:flag = TR("Residente all'estero"); break;
|
||||
case 3:flag = TR("Provvedimenti amministrativi"); break;
|
||||
case 4:flag = TR("Variata da meno di 60 giorni"); break;
|
||||
default:flag = TR("Nessuno"); break;
|
||||
};
|
||||
set_row(row++,"@20gCasi particolari: %s", (const char*)flag);
|
||||
set_row(row++,"@20gDomicilio fiscale diverso da sede legale @f",
|
||||
set_row(row++, FR("@20gCasi particolari: %s"), (const char*)flag);
|
||||
set_row(row++, FR("@20gDomicilio fiscale diverso da sede legale @f"),
|
||||
FLD(LF_ANAG,"RFDIVERSA"));
|
||||
|
||||
set_row(row++, "");
|
||||
set_row(row++,"Corrispondenza@20gIndirizzo @s N. @s @s",
|
||||
set_row(row++, FR("Corrispondenza@20gIndirizzo @s N. @s @s"),
|
||||
FLD(LF_ANAG,"INDCORR"), FLD(LF_ANAG,"CIVCORR"), FLD(LF_ANAG, "LOCCORR"));
|
||||
com = get_field(LF_ANAG, "COMCORR");
|
||||
sta = get_field(LF_ANAG, "STATOCORR");
|
||||
@ -310,42 +308,42 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
b = cc.get("CAPCOM");
|
||||
c = cc.get("PROVCOM");
|
||||
|
||||
set_row(row++,"@20gComune %s %s@58gProv. %s@68gCAP %s",
|
||||
set_row(row++, FR("@20gComune %s %s@58gProv. %s@68gCAP %s"),
|
||||
(const char*)com, (const char*)a, (const char*)c, (const char*)b);
|
||||
|
||||
a = sta.empty() ? "Italia" : look_tab("%STA",sta);
|
||||
set_row(row++,"@20gStato %s",(const char*)a);
|
||||
a = sta.empty() ? TR("Italia") : look_tab("%STA",sta);
|
||||
set_row(row++, FR("@20gStato %s"),(const char*)a);
|
||||
|
||||
row++;
|
||||
set_row(row++,"Telex@20g@u@s@r/@u@s@r",
|
||||
set_row(row++, FR("Telex@20g@u@s@r/@u@s@r"),
|
||||
FLD(LF_ANAG,"PTLEXRF"), FLD(LF_ANAG,"TLEXRFX"));
|
||||
set_row(row++,"Telefax@20g@u@s@r/@u@s@r",
|
||||
set_row(row++, FR("Telefax@20g@u@s@r/@u@s@r"),
|
||||
FLD(LF_ANAG,"PFAXRF"), FLD(LF_ANAG,"FAXRF"));
|
||||
set_row(row++,"Posta elettronica@20g@s",FLD(LF_ANAG,"MAIL"));
|
||||
set_row(row++, FR("Posta elettronica@20g@s"),FLD(LF_ANAG,"MAIL"));
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Ufficio imposte@20gNumero @pn",
|
||||
set_row(row++, FR("Ufficio imposte@20gNumero @pn"),
|
||||
FLD(LF_ANAG,"UFFIIDD","@@@"));
|
||||
com = look_tab("%UID",get_field(LF_ANAG, "UFFIIDD"),"S6"); // Comune imposte dirette
|
||||
c = look_tab("%UID",get_field(LF_ANAG, "UFFIIDD"),"S4"); // c.c. Esattoria
|
||||
look_com(com);
|
||||
a = cc.get("DENCOM");
|
||||
b = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %s",
|
||||
set_row(row++, FR("@20gComune %s %-24s@58gProv. %s"),
|
||||
(const char*)com, (const char*)a, (const char*)b);
|
||||
|
||||
set_row(row++,"Ufficio IVA@20gNumero @pn",
|
||||
set_row(row++, FR("Ufficio IVA@20gNumero @pn"),
|
||||
FLD(LF_ANAG,"UFFIVA","@@@"));
|
||||
com = look_tab("%UIV",get_field(LF_ANAG, "UFFIVA"),"S6");
|
||||
look_com(com);
|
||||
a = cc.get("DENCOM");
|
||||
b = cc.get("PROVCOM");
|
||||
set_row(row++,"@20gComune %s %-24s@58gProv. %s",
|
||||
set_row(row++, FR("@20gComune %s %-24s@58gProv. %s"),
|
||||
(const char*)com, (const char*)a, (const char*)b);
|
||||
|
||||
set_row(row++,"Esattoria@20gComunale @02s Provinciale @03s C.C. %s",
|
||||
set_row(row++, FR("Esattoria@20gComunale @02s Provinciale @03s C.C. %s"),
|
||||
FLD(LF_ANAG,"CODCONTR",0,2), FLD(LF_ANAG,"CODCONTR",2,5), (const char*)c);
|
||||
set_row(row++,"@20gCodice contribuente @8s @2s",
|
||||
set_row(row++, FR("@20gCodice contribuente @8s @2s"),
|
||||
FLD(LF_ANAG,"CODCONTR", 5, 13), FLD(LF_ANAG,"CODCONTR", 13, 15));
|
||||
set_row(row++,"");
|
||||
|
||||
@ -373,18 +371,18 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
else
|
||||
a = b = "";
|
||||
|
||||
set_row(row++,"Coniuge @pn@20gCognome %s",
|
||||
set_row(row++, FR("Coniuge @pn@20gCognome %s"),
|
||||
FLD(LF_ANAGFIS,"CODCONIUGE","@@@@@"),
|
||||
(const char*)a);
|
||||
set_row(row++,"@20gNome %s", (const char*)b);
|
||||
set_row(row++, FR("@20gNome %s"), (const char*)b);
|
||||
|
||||
set_row(row++,"");
|
||||
TString16 tipo_stampa;
|
||||
const int tipo = current_cursor()->curr(LF_ANAG).get_int("TIPOSTDEL");
|
||||
if (tipo == 0) tipo_stampa = "Delega";
|
||||
else if (tipo == 1) tipo_stampa = "Bollettino";
|
||||
else tipo_stampa = "Distinta";
|
||||
set_row(row++,"Dati conto fiscale @20gTitolare conto fiscale @54g@f @60gTipo stampa %s",
|
||||
if (tipo == 0) tipo_stampa = TR("Delega");
|
||||
else if (tipo == 1) tipo_stampa = TR("Bollettino");
|
||||
else tipo_stampa = TR("Distinta");
|
||||
set_row(row++,FR("Dati conto fiscale @20gTitolare conto fiscale @54g@f @60gTipo stampa %s"),
|
||||
FLD(LF_ANAG,"TITCF"), (const char*) tipo_stampa);
|
||||
tipo_stampa = current_cursor()->curr(LF_ANAG).get("UFFCONC");
|
||||
if (tipo_stampa.empty())
|
||||
@ -403,49 +401,49 @@ void TAnaprint_app::set_scheda_anafis()
|
||||
tipo_stampa = cc.get("UFFCONC");
|
||||
}
|
||||
}
|
||||
set_row(row++,"@20gConto fiscale %s @s",
|
||||
set_row(row++, FR("@20gConto fiscale %s @s"),
|
||||
(const char*)tipo_stampa, FLD(LF_ANAG,"COFI"));
|
||||
TString16 abicab = get_field(LF_ANAG, "CODABI");
|
||||
if (abicab.not_empty() && abicab != "00000")
|
||||
{
|
||||
set_row(row++,"@20gABI %s@30g%s", (const char*)abicab, look_tab("%BAN", abicab));
|
||||
set_row(row++, FR("@20gABI %s@30g%s"), (const char*)abicab, look_tab("%BAN", abicab));
|
||||
const TString16 cab = get_field(LF_ANAG, "CODCAB");
|
||||
if (cab.not_empty() && cab != "00000")
|
||||
{
|
||||
abicab << cab;
|
||||
set_row(row++,"@20gCAB %s@30g%s",
|
||||
set_row(row++, FR("@20gCAB %s@30g%s"),
|
||||
(const char*)cab, look_tab("%BAN", abicab));
|
||||
}
|
||||
}
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Dati Statistici@20gNon residente@53g@f",
|
||||
set_row(row++, FR("Dati Statistici@20gNon residente@53g@f"),
|
||||
FLD(LF_ANAG,"SOGGNRES"));
|
||||
set_row(row++,"@20gEventi naturali eccezionali@53g@s",
|
||||
set_row(row++, FR("@20gEventi naturali eccezionali@53g@s"),
|
||||
FLD(LF_ANAG,"EVECC"));
|
||||
set_row(row++,"@20gResidente in zone terremotate@53g@f",
|
||||
set_row(row++, FR("@20gResidente in zone terremotate@53g@f"),
|
||||
FLD(LF_ANAG,"RESZTERR"));
|
||||
set_row(row++,"@20gStato civile@53g@t",
|
||||
set_row(row++, FR("@20gStato civile@53g@t"),
|
||||
FLD(LF_ANAGFIS,"STATCIV"));
|
||||
set_row(row++,"@20gData variazione stato civile@53g@D",
|
||||
set_row(row++, FR("@20gData variazione stato civile@53g@D"),
|
||||
FLD(LF_ANAGFIS,"DVARSCIV"));
|
||||
set_row(row++,"@20gTitolo di studio@53g@t",
|
||||
set_row(row++, FR("@20gTitolo di studio@53g@t"),
|
||||
FLD(LF_ANAGFIS,"TITSTU"));
|
||||
|
||||
row ++;
|
||||
a = look_tab("%STT",
|
||||
current_cursor()->curr(LF_ANAG).get("CODSTAT1"),"S0");
|
||||
set_row(row++,"@20gSigla stat.1 @7s %s",
|
||||
set_row(row++,FR("@20gSigla stat.1 @7s %s"),
|
||||
FLD(LF_ANAG,"CODSTAT1"), (const char*)a);
|
||||
a = look_tab("%STT",current_cursor()->curr(LF_ANAG).get("CODSTAT2"),"S0");
|
||||
set_row(row++,"@20gSigla stat.2 @7s %s",
|
||||
set_row(row++, FR("@20gSigla stat.2 @7s %s"),
|
||||
FLD(LF_ANAG,"CODSTAT2"), (const char*)a);
|
||||
a = look_tab("%STT",current_cursor()->curr(LF_ANAG).get("CODSTAT3"),"S0");
|
||||
set_row(row++,"@20gSigla stat.3 @7s %s",
|
||||
set_row(row++, FR("@20gSigla stat.3 @7s %s"),
|
||||
FLD(LF_ANAG,"CODSTAT3"), (const char*)a);
|
||||
|
||||
set_row(row++,"");
|
||||
set_row(row++,"Aggiornato il@20g@s", FLD(LF_ANAG, "DATAAGG"));
|
||||
set_row(row++, FR("Aggiornato il@20g@s"), FLD(LF_ANAG, "DATAAGG"));
|
||||
|
||||
const int l = printer().rows();
|
||||
for (int i = 50; i <= l; i++)
|
||||
@ -458,33 +456,33 @@ void TAnaprint_app::set_scheda_ditta()
|
||||
TString zio = current_cursor()->curr(LF_NDITTE).get("RAGSOC");
|
||||
_bk_ditta = set_bookmark(zio, _pr_what == nditte ? -1 : _bk_ana);
|
||||
|
||||
set_row(1,"@bSCHEDA DITTA @r@u@pn@r@20g@bDenominaz. sociale @r@u@s",
|
||||
set_row(1, FR("@bSCHEDA DITTA @r@u@pn@r@20g@bDenominaz. sociale @r@u@s"),
|
||||
FLD(LF_NDITTE,"CODDITTA","@@@@@"),
|
||||
FLD(LF_NDITTE,"RAGSOC"));
|
||||
set_row(2,"Albo artigiani@20gIscrizione all'albo @f@55gnum. @s",
|
||||
set_row(2, FR("Albo artigiani@20gIscrizione all'albo @f@55gnum. @s"),
|
||||
FLD(LF_NDITTE,"ARTIG"),
|
||||
FLD(LF_NDITTE,"NISCRAA"));
|
||||
TString a =
|
||||
look_com(current_cursor()->curr(LF_NDITTE).get("COMAA")).get("DENCOM");
|
||||
set_row(3,"@20gLocalita' %s@55gData @D",
|
||||
set_row(3, FR("@20gLocalita' %s@55gData @D"),
|
||||
(const char*)a,
|
||||
FLD(LF_NDITTE,"DATAISCRAA"));
|
||||
set_row(4,"Attivita'");
|
||||
set_row(4, FR("Attivita'"));
|
||||
|
||||
a = look_tab("%AIS",current_cursor()->
|
||||
curr(LF_NDITTE).get("CODATTPREV")); // TBC
|
||||
|
||||
set_row(5,"prevalente@20gCod. @pn Desc. %s",
|
||||
set_row(5, FR("prevalente@20gCod. @pn Desc. %s"),
|
||||
FLD(LF_NDITTE,"CODATTPREV","@@@@@"),
|
||||
(const char*)a);
|
||||
// set_row(6,"@20gGestione piu' attivita'");
|
||||
set_row(6,"@20gFrequenza versamenti@54g@t",
|
||||
set_row(6, FR("@20gFrequenza versamenti@54g@t"),
|
||||
FLD(LF_NDITTE,"FREQVIVA"));
|
||||
set_row(7,"@20gTenuta contabilita' ordinaria@54g@f",
|
||||
set_row(7, FR("@20gTenuta contabilita' ordinaria@54g@f"),
|
||||
FLD(LF_NDITTE,"CONTORD"));
|
||||
set_row(8,"@20gDatore di lavoro@54g@t",
|
||||
set_row(8, FR("@20gDatore di lavoro@54g@t"),
|
||||
FLD(LF_NDITTE,"DATLAV"));
|
||||
set_row(9,"@20gData inizio attivita'@54g@D",
|
||||
set_row(9, FR("@20gData inizio attivita'@54g@D"),
|
||||
FLD(LF_NDITTE,"DINIZIOATT"));
|
||||
|
||||
long codice = current_cursor()->curr(LF_NDITTE).get_long("FIRMAT");
|
||||
@ -496,39 +494,39 @@ void TAnaprint_app::set_scheda_ditta()
|
||||
if (ana.read() == NOERR)
|
||||
firmat = ana.get("RAGSOC");
|
||||
firmat.strip_d_spaces();
|
||||
set_row(10,"Firmatario@20g@s @30g%s",FLD(LF_NDITTE,"FIRMAT"),(const char *)firmat);
|
||||
set_row(10, FR("Firmatario@20g@s @30g%s"),FLD(LF_NDITTE,"FIRMAT"),(const char *)firmat);
|
||||
codice = current_cursor()->curr(LF_NDITTE).get_long("RAPPR");
|
||||
ana.put("TIPOA", "F");
|
||||
ana.put("CODANAGR",codice);
|
||||
if (ana.read() == NOERR)
|
||||
rappr = ana.get("RAGSOC");
|
||||
rappr.strip_d_spaces();
|
||||
set_row(11,"Rappresentante@20g@s @30g%s",FLD(LF_NDITTE,"RAPPR"),(const char *)rappr);
|
||||
set_row(11, FR("Rappresentante@20g@s @30g%s"),FLD(LF_NDITTE,"RAPPR"),(const char *)rappr);
|
||||
|
||||
set_row(12,"Altri dati@20gRiferimento @u@s@r @54gTel. @u@4S@r/@u@S@r",
|
||||
set_row(12, FR("Altri dati@20gRiferimento @u@s@r @54gTel. @u@4S@r/@u@S@r"),
|
||||
FLD(LF_NDITTE,"PERRIF"),
|
||||
FLD(LF_NDITTE,"PTEL"),
|
||||
FLD(LF_NDITTE,"TEL"));
|
||||
set_row(13,"@20gGestione magazzino @f",
|
||||
set_row(13, FR("@20gGestione magazzino @f"),
|
||||
FLD(LF_NDITTE,"REGMAG"));
|
||||
set_row(14,"@20gNumero unita' locali @n@54gNum.enasarco @s",
|
||||
set_row(14, FR("@20gNumero unita' locali @n@54gNum.enasarco @s"),
|
||||
FLD(LF_NDITTE,"NULC"),
|
||||
FLD(LF_NDITTE,"NENASARCO"));
|
||||
set_row(15,"Banca di appoggio");
|
||||
set_row(15, TR("Banca di appoggio"));
|
||||
TString16 abicab = get_field(LF_NDITTE, "ABIBAN");
|
||||
if (abicab.not_empty() && abicab != "00000")
|
||||
{
|
||||
set_row(15,"@20gABI %s@40g%s", (const char*)abicab, look_tab("%BAN", abicab));
|
||||
set_row(15, FR("@20gABI %s@40g%s"), (const char*)abicab, look_tab("%BAN", abicab));
|
||||
const TString16 cab = get_field(LF_NDITTE, "CABBAN");
|
||||
if (cab.not_empty() && cab != "00000")
|
||||
{
|
||||
abicab << cab;
|
||||
set_row(16,"@20gCAB %s@40g%s",
|
||||
set_row(16, FR("@20gCAB %s@40g%s"),
|
||||
(const char*)cab, look_tab("%BAN", abicab));
|
||||
}
|
||||
}
|
||||
|
||||
set_row(17,"Stato@20g@t",FLD(LF_NDITTE,"STATOSOC"));
|
||||
set_row(17, FR("Stato@20g@t"),FLD(LF_NDITTE,"STATOSOC"));
|
||||
set_row(18,"");
|
||||
}
|
||||
|
||||
@ -537,24 +535,24 @@ void TAnaprint_app::set_scheda_attiv()
|
||||
const TString descr(current_cursor()->curr(LF_ATTIV).get("DESCR"));
|
||||
_bk_attiv = set_bookmark(descr, _bk_ditta);
|
||||
|
||||
set_row(1,"@bATTIVITA'@r @s@20g@bDescrizione:@r %s",
|
||||
set_row(1, FR("@bATTIVITA'@r @s@20g@bDescrizione:@r %s"),
|
||||
FLD(LF_ATTIV,"CODATT","@@@@@"), (const char*)descr);
|
||||
|
||||
set_row(2,"@20gRegime agricolo@67g@f",
|
||||
set_row(2, FR("@20gRegime agricolo@67g@f"),
|
||||
FLD(LF_ATTIV,"REGAGR"));
|
||||
set_row(3,"@20gRegime speciale agenzie di viaggio (art.74ter)@67g@f",
|
||||
set_row(3, FR("@20gRegime speciale agenzie di viaggio (art.74ter)@67g@f"),
|
||||
FLD(LF_ATTIV,"REG74TER"));
|
||||
set_row(4,"@20gAttivita' stagionale@67g@f",
|
||||
set_row(4, FR("@20gAttivita' stagionale@67g@f"),
|
||||
FLD(LF_ATTIV,"ATTSTAG"));
|
||||
set_row(5,"@20gAttivita' esercitata in piu' luoghi@67g@f",
|
||||
set_row(5, FR("@20gAttivita' esercitata in piu' luoghi@67g@f"),
|
||||
FLD(LF_ATTIV,"ESLUOGHID"));
|
||||
set_row(6,"@20gData inizio attivita'@60g@D",
|
||||
set_row(6, FR("@20gData inizio attivita'@60g@D"),
|
||||
FLD(LF_ATTIV,"DATAISCIVA"));
|
||||
set_row(7,"@20gData variazione attivita'@60g@D",
|
||||
set_row(7, FR("@20gData variazione attivita'@60g@D"),
|
||||
FLD(LF_ATTIV,"DATAVARIVA"));
|
||||
set_row(8,"@20gData cessazione attivita'@60g@D",
|
||||
set_row(8, FR("@20gData cessazione attivita'@60g@D"),
|
||||
FLD(LF_ATTIV,"DCESSATT"));
|
||||
set_row(9,"@20g@bCONSERVAZIONE SCRITTURE CONTABILI@r");
|
||||
set_row(9, FR("@20g@bCONSERVAZIONE SCRITTURE CONTABILI@r"));
|
||||
|
||||
// cerca depositario
|
||||
TString com = get_field(LF_ATTIV,"CODANGRDS");
|
||||
@ -585,25 +583,25 @@ void TAnaprint_app::set_scheda_attiv()
|
||||
af.readat(last);
|
||||
af.setkey(k);
|
||||
|
||||
set_row(10,"Depositario@20gCodice @pn (%s): %s",
|
||||
set_row(10,FR("Depositario@20gCodice @pn (%s): %s"),
|
||||
FLD(LF_ATTIV,"CODANGRDS"),
|
||||
c == 'F' ? "p.f." : "p.g.",
|
||||
(const char*)b);
|
||||
set_row(11,"@20gIndirizzo %s N. %s", (const char*)com, (const char*)z);
|
||||
set_row(11,FR("@20gIndirizzo %s N. %s"), (const char*)com, (const char*)z);
|
||||
a = exists ? cm.get("DENCOM") : ""; b = exists ? cm.get("PROVCOM") : ""; c = exists ? cm.get("CAPCOM") : "";
|
||||
set_row(12,"@20gComune %s@58gProv. %s@68gC.a.p. %s",
|
||||
(const char*)a, (const char*)b, (const char*)c);
|
||||
set_row(13,"@20gTenuta scritture parziali@68g@f",
|
||||
set_row(13, FR("@20gTenuta scritture parziali@68g@f"),
|
||||
FLD(LF_ATTIV,"TSCRPARZ"));
|
||||
set_row(14,"Luogo@20gIndirizzo @s N. @s",
|
||||
set_row(14, FR("Luogo@20gIndirizzo @s N. @s"),
|
||||
FLD(LF_ATTIV,"INDCS"),
|
||||
FLD(LF_ATTIV,"CIVCS"));
|
||||
look_com(get_field(LF_ATTIV,"COMCS"));
|
||||
a = cm.get("DENCOM"); b = cm.get("PROVCOM"); c = cm.get("CAPCOM");
|
||||
set_row(15,"@20gComune %s@58gProv. %s@68gC.a.p. %s",
|
||||
set_row(15, FR("@20gComune %s@58gProv. %s@68gC.a.p. %s"),
|
||||
(const char*)a, (const char*)b, (const char*)c);
|
||||
|
||||
set_row(16,"@20gTelefono @s/@s", FLD(LF_ATTIV,"PTELCS"), FLD(LF_ATTIV,"TELCS"));
|
||||
set_row(16, FR("@20gTelefono @s/@s"), FLD(LF_ATTIV,"PTELCS"), FLD(LF_ATTIV,"TELCS"));
|
||||
set_row(17,""); set_row(18,"");
|
||||
}
|
||||
|
||||
@ -619,39 +617,37 @@ void TAnaprint_app::set_scheda_unloc()
|
||||
zio.insert("U.L. ",0);
|
||||
_bk_unloc = set_bookmark(zio, _bk_attiv);
|
||||
|
||||
set_row(1,"@bUNITA' LOCALE@20gCodice @r@u@pn@r",
|
||||
set_row(1, FR("@bUNITA' LOCALE@20gCodice @r@u@pn@r"),
|
||||
FLD(LF_UNLOC,"CODULC","@@@"));
|
||||
set_row(2,"@20g@bIndirizzo@r@u @s@r@68g@bNumero @r@u@s",
|
||||
set_row(2, FR("@20g@bIndirizzo@r@u @s@r@68g@bNumero @r@u@s"),
|
||||
FLD(LF_UNLOC,"INDULC"),
|
||||
FLD(LF_UNLOC,"CIVULC"));
|
||||
const TRectype& cc = look_com(get_field(LF_UNLOC,"COMULC"));
|
||||
TString a = cc.get("DENCOM");
|
||||
TString b = cc.get("PROVCOM");
|
||||
TString c = cc.get("CAPCOM");
|
||||
set_row(3,"@20g@bComune@r@4j@u%s@r@58g@bProv.@r @u%s@r@68g@b"
|
||||
"C.a.p.@r @u%s", (const char*)a, (const char*)b, (const char*)c);
|
||||
set_row(3, FR("@20g@bComune@r@4j@u%s@r@58g@bProv.@r @u%s@r@68g@bC.a.p.@r @u%s"), (const char*)a, (const char*)b, (const char*)c);
|
||||
set_row(4,"");
|
||||
set_row(5,"C.C.I.A.A.@20gNumero@30g@pn",
|
||||
set_row(5, FR("C.C.I.A.A.@20gNumero@30g@pn"),
|
||||
FLD(LF_UNLOC,"NUMCCIAA","@@@@@@@"));
|
||||
look_com(get_field(LF_UNLOC,"COMCCIAA"));
|
||||
a = cc.get("DENCOM");
|
||||
set_row(6,"@20gComune@30g%s", (const char*)a);
|
||||
set_row(7,"@20gData iscrizione @D@48gData ultima variazione @D",
|
||||
set_row(6, FR("@20gComune@30g%s"), (const char*)a);
|
||||
set_row(7, FR("@20gData iscrizione @D@48gData ultima variazione @D"),
|
||||
FLD(LF_UNLOC,"DATAICCIAA"),
|
||||
FLD(LF_UNLOC,"DATAVCCIAA"));
|
||||
set_row(8,"");
|
||||
set_row(9,"Autorizzazioni@20gN. R.E.C. @30g@pn@41gComunale n. @pn "
|
||||
"PS n. @pn Altre @s",
|
||||
set_row(9, FR("Autorizzazioni@20gN. R.E.C. @30g@pn@41gComunale n. @pn PS n. @pn Altre @s"),
|
||||
FLD(LF_UNLOC,"NUMREC","@@@@@@@"),
|
||||
FLD(LF_UNLOC,"AUTCOM","@@@@@"),
|
||||
FLD(LF_UNLOC,"AUTPS","@@@@@@@"),
|
||||
FLD(LF_UNLOC,"ALTAUT"));
|
||||
set_row(10,"");
|
||||
set_row(11,"Posizioni@20gINPS n.@30g@s INAIL n. @s",
|
||||
set_row(11, FR("Posizioni@20gINPS n.@30g@s INAIL n. @s"),
|
||||
FLD(LF_UNLOC,"POSINPS"),
|
||||
FLD(LF_UNLOC,"POSINAIL"));
|
||||
set_row(12,"");
|
||||
set_row(13, "Numero Registro Imprese@30g@pn",
|
||||
set_row(13, FR("Numero Registro Imprese@30g@pn"),
|
||||
FLD(LF_UNLOC, "REGIMP", "@@ @@@ @@@@ @@@@@@@@@ @"));
|
||||
|
||||
zio = get_field(LF_UNLOC,"COMTRIB");
|
||||
@ -660,12 +656,12 @@ void TAnaprint_app::set_scheda_unloc()
|
||||
b = cc.get("PROVCOM");
|
||||
c = get_field(LF_UNLOC, "CAPTRIB");
|
||||
if (c.empty()) c = cc.get("CAPCOM");
|
||||
set_row(14,"Comune tribunale@20g%s %s@58gProv. %s@68gC.a.p. %s",
|
||||
set_row(14, FR("Comune tribunale@20g%s %s@58gProv. %s@68gC.a.p. %s"),
|
||||
(const char*)zio, (const char*)a, (const char*)b, (const char*)c);
|
||||
|
||||
set_row(15,"");
|
||||
set_row(16,"Locali destinati");
|
||||
set_row(17,"all'attivita'@20gMq.Locali @pn Di cui a magazzino @pn",
|
||||
set_row(16, TR("Locali destinati"));
|
||||
set_row(17, FR("all'attivita'@20gMq.Locali @pn Di cui a magazzino @pn"),
|
||||
FLD(LF_UNLOC,"MQULC","@@@@@"),
|
||||
FLD(LF_UNLOC,"MQULCMAG","@@@@@"));
|
||||
set_row(18,"");
|
||||
@ -693,7 +689,7 @@ void TAnaprint_app::set_scheda_socio()
|
||||
TString paiv(ana.get("PAIV"));
|
||||
const char pre_att = soc.get("ATTPREC")[0];
|
||||
|
||||
TString zio("Socio ");
|
||||
TString zio(TR("Socio "));
|
||||
zio << soc.get("CODANAGRSO");
|
||||
zio << "("; zio << soc.get("TIPOASOC") << "): ";
|
||||
zio << ragsoc;
|
||||
@ -726,30 +722,30 @@ void TAnaprint_app::set_scheda_socio()
|
||||
anaf->read();
|
||||
const TRectype& com = look_com(anaf->get("COMNASC"));
|
||||
|
||||
set_row(1,"@bSOCIO@r @s / @pn@20g@bCognome@r %s",
|
||||
set_row(1,FR("@bSOCIO@r @s / @pn@20g@bCognome@r %s"),
|
||||
FLD(LF_SOCI,"TIPOASOC"),
|
||||
FLD(LF_SOCI,"CODANAGRSO","@@@@@"),
|
||||
(const char*)ragsoc1);
|
||||
set_row(2,"@20g@bNome@r %s@53g@bCod.fisc.@r %s",
|
||||
set_row(2,FR("@20g@bNome@r %s@53g@bCod.fisc.@r %s"),
|
||||
(const char*)ragsoc2,
|
||||
(const char*)cofi);
|
||||
|
||||
set_row(3,"@20g@bSocio anno %s@r ", pre_att == 'P' ? "precedente" : "attuale");
|
||||
set_row(3, FR("@20g@bSocio anno %s@r "), pre_att == 'P' ? TR("precedente") : TR("attuale"));
|
||||
set_row(4,"");
|
||||
|
||||
b1 = anaf->get_date("DATANASC").string(full);
|
||||
b2 = anaf->get("SESSO");
|
||||
set_row(5,"Nascita@20gData@30g%S@42gSesso %S",
|
||||
set_row(5, FR("Nascita@20gData@30g%S@42gSesso %S"),
|
||||
(const char*)b1, (const char*)b2);
|
||||
|
||||
b1 = com.get("DENCOM");
|
||||
b2 = com.get("PROVCOM");
|
||||
|
||||
set_row(6,"@20gComune@30g%S@58gProv. %S",
|
||||
set_row(6, FR("@20gComune@30g%S@58gProv. %S"),
|
||||
(const char*)b1, (const char*)b2);
|
||||
rw = 7;
|
||||
|
||||
codconiuge = "Cod.coniuge ";
|
||||
codconiuge = TR("Cod.coniuge ");
|
||||
codconiuge << anaf->get("CODCONIUGE");
|
||||
|
||||
if (_pr_what == anafis)
|
||||
@ -758,14 +754,14 @@ void TAnaprint_app::set_scheda_socio()
|
||||
}
|
||||
else
|
||||
{
|
||||
set_row(1,"@bSOCIO@r @S / @pN@20gR.soc. %s",
|
||||
set_row(1, FR("@bSOCIO@r @S / @pN@20gR.soc. %s"),
|
||||
FLD(LF_SOCI,"TIPOASOC"),
|
||||
FLD(LF_SOCI,"CODANAGRSO","@@@@@"),
|
||||
(const char*)ragsoc);
|
||||
set_row(2,"@20gCod.fisc. %s P.IVA %s",
|
||||
set_row(2, FR("@20gCod.fisc. %s P.IVA %s"),
|
||||
(const char*)cofi,
|
||||
(const char*)paiv);
|
||||
set_row(3,"@20g@bSocio anno %s@r ", pre_att == 'P' ? "precedente" : "attuale");
|
||||
set_row(3, FR("@20g@bSocio anno %s@r "), pre_att == 'P' ? TR("precedente") : TR("attuale"));
|
||||
rw = 4;
|
||||
}
|
||||
set_row(rw,"");
|
||||
@ -778,8 +774,8 @@ void TAnaprint_app::set_scheda_socio()
|
||||
b2 = com.get("PROVCOM");
|
||||
b3 = com.get("CAPCOM");
|
||||
|
||||
set_row(rw+1,"Residenza@20gIndirizzo %S", (const char*)indres);
|
||||
set_row(rw+2,"@20gComune %S@58gProv. %S@68gC.a.p. %S",
|
||||
set_row(rw+1, FR("Residenza@20gIndirizzo %S"), (const char*)indres);
|
||||
set_row(rw+2, FR("@20gComune %S@58gProv. %S@68gC.a.p. %S"),
|
||||
(const char*)b1,
|
||||
(const char*)b2,
|
||||
(const char*)b3);
|
||||
@ -789,38 +785,36 @@ void TAnaprint_app::set_scheda_socio()
|
||||
TString car = look_tab("%CRS",soc.get("CODCAR"));
|
||||
TString dataagg(ana.get("DATAAGG"));
|
||||
|
||||
set_row(rw+4,"Carica@20gCod. @pN@30g%s@62gScadenza @lD",
|
||||
set_row(rw+4, FR("Carica@20gCod. @pN@30g%s@62gScadenza @lD"),
|
||||
FLD(LF_SOCI,"CODCAR","@@"),
|
||||
(const char*)car,
|
||||
FLD(LF_SOCI,"SCADCAR"));
|
||||
|
||||
set_row(rw+5,"Azioni@20gN.quote @N = @7.3N%% Redd. @7.3N%% Perd. @7.3N%%",
|
||||
set_row(rw+5, FR("Azioni@20gN.quote @N = @7.3N%% Redd. @7.3N%% Perd. @7.3N%%"),
|
||||
FLD(LF_SOCI,"NQUOTEAZ"),
|
||||
FLD(LF_SOCI,"PERCQUAZ"),
|
||||
FLD(LF_SOCI,"PERCAZREDD"),
|
||||
FLD(LF_SOCI,"PERCAZPERD"));
|
||||
set_row(rw+6,"@20gTitolo proprieta' @S Emolumento @pN",
|
||||
set_row(rw+6, FR("@20gTitolo proprieta' @S Emolumento @pN"),
|
||||
FLD(LF_SOCI,"TITPROP"),
|
||||
FLD(LF_SOCI,"EMOLUMENTO","###.###.###.###"));
|
||||
set_row(rw+7,"%% rit.su dividendi @7.3n%% Tipo azione @s "
|
||||
"Partecipaz. assemblea @f",
|
||||
set_row(rw+7, FR("%% rit.su dividendi @7.3n%% Tipo azione @s Partecipaz. assemblea @f"),
|
||||
FLD(LF_SOCI,"PERCRITDIV"),
|
||||
FLD(LF_SOCI,"TIPOAZ"),
|
||||
FLD(LF_SOCI,"PARTASS"));
|
||||
set_row(rw+8,"Modello 740 @s @57g%s",
|
||||
set_row(rw+8, FR("Modello 740 @s @57g%s"),
|
||||
FLD(LF_SOCI,"Q740"),
|
||||
(const char*)codconiuge);
|
||||
set_row(rw+9,"Attiv. prevalente @f@37gQuadro 750 @s @53g"
|
||||
"Mesi lavorati art.120 c1 @2n",
|
||||
set_row(rw+9, FR("Attiv. prevalente @f@37gQuadro 750 @s @53gMesi lavorati art.120 c1 @2n"),
|
||||
FLD(LF_SOCI,"ATTPREV"),
|
||||
FLD(LF_SOCI,"QUATTPREV"),
|
||||
FLD(LF_SOCI,"MLAV120C1"));
|
||||
|
||||
set_row(rw+10,"@20gRichiesta qualifica @s@53gMesi lavorati art.120 c2 @2n",
|
||||
set_row(rw+10, FR("@20gRichiesta qualifica @s@53gMesi lavorati art.120 c2 @2n"),
|
||||
FLD(LF_SOCI,"RICQUAL"),
|
||||
FLD(LF_SOCI,"MLAV120C2"));
|
||||
set_row(rw+11,"Note@20g@s", FLD(LF_SOCI,"NOTE"));
|
||||
set_row(rw+12,"Data ultimo agg. @20gAnagrafica %s @53gSocio @d",
|
||||
set_row(rw+11, FR("Note@20g@s"), FLD(LF_SOCI,"NOTE"));
|
||||
set_row(rw+12, FR("Data ultimo agg. @20gAnagrafica %s @53gSocio @d"),
|
||||
(const char*)dataagg,
|
||||
FLD(LF_SOCI,"DATAAGG"));
|
||||
set_row(rw+13,""); set_row(rw+14,"");
|
||||
@ -836,7 +830,7 @@ void TAnaprint_app::set_rubriche()
|
||||
// preprocess_page will fill the vars
|
||||
set_row(2,"@32g@35S", FLD(LF_ANAG,"INDRES"));
|
||||
set_row(3,"@32g#-24T CAP #5T PR #2T", &_com, &_cap, &_prov);
|
||||
set_row(4,"@32gTel. #-36T", &_phone);
|
||||
set_row(4, FR("@32gTel. #-36T"), &_phone);
|
||||
set_row(5,"");
|
||||
|
||||
if (_pr_what == nditte)
|
||||
@ -854,7 +848,7 @@ void TAnaprint_app::set_rubriche()
|
||||
{
|
||||
set_row(1,"@b$[b]@pN$[n]@r@3j@50S", FLD(LF_ANAG,"CODANAGR","@@@@@"),
|
||||
FLD(LF_ANAG,"RAGSOC"));
|
||||
set_row(4,"@56g Rif @12S", FLD(LF_ANAGGIU,"PERRIF"));
|
||||
set_row(4, "@56g Rif @12S", FLD(LF_ANAGGIU,"PERRIF"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -917,21 +911,17 @@ void TAnaprint_app::set_headers()
|
||||
case anafis:
|
||||
case anagiu:
|
||||
set_background("W1l{1 2 132 2}W4l{1 5 132 5}");
|
||||
set_header(1,"@bELENCO PERSONE %s@82gStudio@96gData"
|
||||
"@101g @> @112g Pag. @#", _pr_what == anafis ? "FISICHE" :
|
||||
"GIURIDICHE");
|
||||
set_header(3,"@iCodice@58gCodice");
|
||||
set_header(4,"@iAnagr. Ragione sociale/cognome e nome@58gDitta"
|
||||
"@66gDenominazione sociale");
|
||||
set_header(1, FR("@bELENCO PERSONE %s@82gStudio@96gData@101g @> @112g Pag. @#"), _pr_what == anafis ? TR("FISICHE") :
|
||||
TR("GIURIDICHE"));
|
||||
set_header(3, FR("@iCodice@58gCodice"));
|
||||
set_header(4, FR("@iAnagr. Ragione sociale/cognome e nome@58gDitta@66gDenominazione sociale"));
|
||||
set_header(6,"");
|
||||
break;
|
||||
case nditte:
|
||||
set_background("W1l{1 2 132 2}W4l{1 5 132 5}");
|
||||
set_header(1,"@bELENCO DITTE@82gStudio@96gData"
|
||||
"@101g @> @112g Pag. @#");
|
||||
set_header(3,"@iCodice@50gT");
|
||||
set_header(4,"@iAnagr. Denominazione sociale@50gP Codice"
|
||||
"@61gRagione sociale/Cognome e nome");
|
||||
set_header(1, FR("@bELENCO DITTE@82gStudio@96gData@101g @> @112g Pag. @#"));
|
||||
set_header(3, FR("@iCodice@50gT"));
|
||||
set_header(4, FR("@iAnagr. Denominazione sociale@50gP Codice@61gRagione sociale/Cognome e nome"));
|
||||
set_header(6,"");
|
||||
}
|
||||
printer().headerlen(6);
|
||||
@ -943,16 +933,16 @@ void TAnaprint_app::set_headers()
|
||||
case anafis:
|
||||
case anagiu:
|
||||
set_background("W1l{1 2 132 2}W4l{1 4 132 4}");
|
||||
set_header(1,"@bRUBRICA PERSONE %s@40gStudio@53gData @> pag. @#",
|
||||
_pr_what == anagiu ? "GIURIDICHE" : "FISICHE");
|
||||
set_header(3,"@iCodice Cognome e nome");
|
||||
set_header(1, FR("@bRUBRICA PERSONE %s@40gStudio@53gData @> pag. @#"),
|
||||
_pr_what == anagiu ? TR("GIURIDICHE") : TR("FISICHE"));
|
||||
set_header(3,FR("@iCodice Cognome e nome"));
|
||||
set_header(5,"");
|
||||
break;
|
||||
|
||||
case nditte:
|
||||
set_background("W1l{1 2 132 2}W4l{1 4 132 4}");
|
||||
set_header(1,"@bRUBRICA DITTE@40gStudio@53gData @> pag. @#");
|
||||
set_header(3,"@iCodice Cognome e nome");
|
||||
set_header(1, FR("@bRUBRICA DITTE@40gStudio@53gData @> pag. @#"));
|
||||
set_header(3, FR("@iCodice Cognome e nome"));
|
||||
set_header(5,"");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@ class BA6200_application : public TPrintapp
|
||||
{
|
||||
TRelation* _rel;
|
||||
TMask* _msk;
|
||||
TLocalisamfile* _comuni;
|
||||
TParagraph_string * _descr_comune;
|
||||
|
||||
int _cur1, _cur2;
|
||||
@ -215,11 +214,11 @@ void BA6200_application::crea_intestazione()
|
||||
sep.fill('-');
|
||||
set_header (1, (const char *) sep);
|
||||
sep = "";
|
||||
sep << "Pag. @#";
|
||||
sep << FR("Pag. @#");
|
||||
sep.right_just(132);
|
||||
set_header (2,(const char*) sep);
|
||||
|
||||
set_header (2,"@0gARCHIVIO COMUNI@91gSTUDIO@104gDATA");
|
||||
set_header (2, FR("@0gARCHIVIO COMUNI@91gSTUDIO@104gDATA"));
|
||||
data_stampa = _data_stampa.string();
|
||||
set_header (2,"@109g%10s", (const char*) data_stampa);
|
||||
|
||||
@ -227,24 +226,19 @@ void BA6200_application::crea_intestazione()
|
||||
sep.fill('-');
|
||||
set_header (3, (const char *) sep);
|
||||
|
||||
set_header(5,"@0gCodice@7gDenominazione@33gProv.@40gCap@45gCd.Istat@54gMont.@60gUff.@67gII.DD.@80gI.V.A.@92gRegi.@98gConc.@104gServ.@110gEsatt.");
|
||||
set_header (6,"@0g------@7g-------------------------@33g-----@39g-----");
|
||||
set_header (6,"@45g--------@54g-----@65g-----------");
|
||||
set_header (6,"@78g------------@92g-----@98g-----@104g-----@110g-------");
|
||||
set_header(5, FR("@0gCodice@7gDenominazione@33gProv.@40gCap@45gCd.Istat@54gMont.@60gUff.@67gII.DD.@80gI.V.A.@92gRegi.@98gConc.@104gServ.@110gEsatt."));
|
||||
set_header (6, FR("@0g------@7g-------------------------@33g-----@39g-----"));
|
||||
set_header (6, FR("@45g--------@54g-----@65g-----------"));
|
||||
set_header (6, FR("@78g------------@92g-----@98g-----@104g-----@110g-------"));
|
||||
}
|
||||
|
||||
bool BA6200_application::user_create()
|
||||
{
|
||||
open_files(LF_COMUNI, 0);
|
||||
_rel = new TRelation (LF_COMUNI);
|
||||
|
||||
_cur1 = add_cursor(new TCursor(_rel,"",1));
|
||||
|
||||
_cur2 = add_cursor(new TCursor(_rel,"",2));
|
||||
|
||||
_comuni = new TLocalisamfile (LF_COMUNI);
|
||||
|
||||
_descr_comune = new TParagraph_string ("",25);
|
||||
|
||||
_msk = new TMask("ba6200a");
|
||||
return TRUE;
|
||||
}
|
||||
@ -253,7 +247,6 @@ bool BA6200_application::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
delete _comuni;
|
||||
delete _descr_comune;
|
||||
return TRUE;
|
||||
}
|
||||
@ -261,7 +254,7 @@ bool BA6200_application::user_destroy()
|
||||
int ba6200(int argc, char* argv[])
|
||||
{
|
||||
BA6200_application a;
|
||||
a.run(argc, argv, "Stampa Comuni");
|
||||
a.run(argc, argv, TR("Stampa Comuni"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
#include "bainst38.h"
|
||||
|
||||
PAGE "Installazione SV" -1 -1 78 8
|
||||
// GROUP 1 = PRE-INSTALLATION
|
||||
// GROUP 2 = POST-INSTALLATION
|
||||
|
||||
BOOL F_DEFAULTSDATA
|
||||
BEGIN
|
||||
|
||||
@ -425,6 +425,7 @@ int TConversione_cespiti::conv_tab(const TFilename& ofname, const char* tab)
|
||||
TExternisamfile oldfile(ofname,(bool)FALSE,(bool)FALSE);
|
||||
|
||||
|
||||
|
||||
TTable* newfile = NULL;
|
||||
TConfig config("ce0900.ini", tab);
|
||||
TAssoc_array& fieldlist = config.list_variables();
|
||||
|
||||
@ -17,8 +17,6 @@ class TCausali_app : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
TLocalisamfile* _saldi;
|
||||
TLocalisamfile* _tabcom;
|
||||
bool _pcon_com;
|
||||
|
||||
bool user_create();
|
||||
@ -129,7 +127,6 @@ bool TCausali_app::protected_record(TRectype &rec)
|
||||
if (!_pcon_com )
|
||||
{
|
||||
TMask* m = get_mask(MODE_MOD);
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
const int gruppo = m->get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m->get_int(FLD_CM1_CONTO);
|
||||
const long sottoc = m->get_long(FLD_CM1_SOTTOCONTO);
|
||||
@ -137,22 +134,24 @@ bool TCausali_app::protected_record(TRectype &rec)
|
||||
// Se e' un sottoconto posso cancellarlo se non esistono saldi
|
||||
if ((gruppo != 0) && (conto != 0) && (sottoc != 0))
|
||||
{
|
||||
_saldi->zero();
|
||||
_saldi->put(PCN_GRUPPO, gruppo);
|
||||
_saldi->put(PCN_CONTO, conto);
|
||||
_saldi->put(PCN_SOTTOCONTO, sottoc);
|
||||
_saldi->read(_isgteq);
|
||||
return _saldi->good() &&
|
||||
gruppo ==_saldi->get_int(PCN_GRUPPO) &&
|
||||
conto ==_saldi->get_int(PCN_CONTO) &&
|
||||
sottoc ==_saldi->get_long(PCN_SOTTOCONTO) &&
|
||||
(_saldi->get_real(SLD_SALDO) != ZERO || _saldi->get_real(SLD_PDARE) != ZERO ||
|
||||
_saldi->get_real(SLD_PAVERE) != ZERO || _saldi->get_real(SLD_SALDOFIN) != ZERO ||
|
||||
_saldi->get_real(SLD_PDAREPRO) != ZERO || _saldi->get_real(SLD_PAVEREPRO) != ZERO);
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
|
||||
saldi.setkey(2);
|
||||
saldi.put(PCN_GRUPPO, gruppo);
|
||||
saldi.put(PCN_CONTO, conto);
|
||||
saldi.put(PCN_SOTTOCONTO, sottoc);
|
||||
saldi.read(_isgteq);
|
||||
return saldi.good() &&
|
||||
gruppo == saldi.get_int(PCN_GRUPPO) && conto == saldi.get_int(PCN_CONTO) && sottoc == saldi.get_long(PCN_SOTTOCONTO) &&
|
||||
(saldi.get_real(SLD_SALDO) != ZERO || saldi.get_real(SLD_PDARE) != ZERO ||
|
||||
saldi.get_real(SLD_PAVERE) != ZERO || saldi.get_real(SLD_SALDOFIN) != ZERO ||
|
||||
saldi.get_real(SLD_PDAREPRO) != ZERO || saldi.get_real(SLD_PAVEREPRO) != ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
get_relation()->save_status();
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
|
||||
get_relation()->save_status();
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
// Se e' un conto controllo se ha dei sottoconti
|
||||
@ -283,21 +282,7 @@ HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
|
||||
const int gruppo = m.get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m.get_int(FLD_CM1_CONTO);
|
||||
const long sottoc = m.get_long(FLD_CM1_SOTTOCONTO);
|
||||
/*
|
||||
if (key == K_TAB && gruppo != 0 && conto == 0 && sottoc == 0 &&
|
||||
f.focusdirty() && m.is_running())
|
||||
{
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.setkey(1) ;
|
||||
if (pconti.read() != NOERR)
|
||||
{
|
||||
m.notify_focus_field(FLD_CM1_DESC);
|
||||
m.stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
@ -308,7 +293,7 @@ HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return f.warning_box ("Il gruppo non esiste");
|
||||
return f.warning_box (TR("Il gruppo non esiste"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -321,22 +306,7 @@ HIDDEN bool conto_handler(TMask_field& f, KEY key)
|
||||
const int gruppo = m.get_int(FLD_CM1_GRUPPO);
|
||||
const int conto = m.get_int(FLD_CM1_CONTO);
|
||||
const long sottoc = m.get_long(FLD_CM1_SOTTOCONTO);
|
||||
/*
|
||||
if (key == K_TAB && gruppo != 0 && conto != 0 && sottoc == 0 &&
|
||||
f.focusdirty() && m.is_running())
|
||||
{
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
pconti.setkey(1) ;
|
||||
if (pconti.read() != NOERR)
|
||||
{
|
||||
m.notify_focus_field(FLD_CM1_DESC);
|
||||
m.stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
@ -349,11 +319,11 @@ HIDDEN bool conto_handler(TMask_field& f, KEY key)
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return m.field(FLD_CM1_CONTO).warning_box ("Il conto non esiste");
|
||||
return m.field(FLD_CM1_CONTO).warning_box (TR("Il conto non esiste"));
|
||||
else
|
||||
{
|
||||
if (pconti.get(PCN_TMCF).not_empty())
|
||||
return m.field(FLD_CM1_SOTTOCONTO).warning_box ("Non e' possibile inserire un sottoconto di un conto relativo ad un cliente/fornitore");
|
||||
return m.field(FLD_CM1_SOTTOCONTO).warning_box (TR("Non e' possibile inserire un sottoconto di un conto relativo ad un cliente/fornitore"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -375,32 +345,29 @@ HIDDEN bool sottoc_handler(TMask_field& f, KEY key)
|
||||
|
||||
bool TCausali_app::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_PCON);
|
||||
_saldi = new TLocalisamfile(LF_SALDI);
|
||||
_saldi->setkey(2);
|
||||
open_files(LF_PCON, LF_SALDI, LF_TABCOM, LF_ABPCON, 0);
|
||||
|
||||
_msk = new TMask("cg0100a") ;
|
||||
_msk->set_handler(FLD_CM1_GRUPPO, gruppo_handler);
|
||||
_msk->set_handler(FLD_CM1_CONTO, conto_handler);
|
||||
_msk->set_handler(FLD_CM1_SOTTOCONTO, sottoc_handler);
|
||||
_msk->set_handler(FLD_CM1_TMCF, tmcf_handler);
|
||||
set_search_field(FH_SOTTOCONTO);
|
||||
_rel = new TRelation(LF_PCON);
|
||||
set_search_field(FH_SOTTOCONTO);
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
bool TCausali_app::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
delete _saldi;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0100(int argc, char* argv[])
|
||||
{
|
||||
TCausali_app a ;
|
||||
a.run(argc, argv, "Piano dei conti");
|
||||
a.run(argc, argv, TR("Piano dei conti"));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
100
cg/cg0200.cpp
100
cg/cg0200.cpp
@ -27,11 +27,6 @@ class TClifo_application : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TClifoVI* _rel;
|
||||
TLocalisamfile* _mov;
|
||||
TLocalisamfile* _anag;
|
||||
TLocalisamfile* _fis;
|
||||
TLocalisamfile* _comuni;
|
||||
TLocalisamfile* _pcon;
|
||||
|
||||
bool _lbcn, _gesven, _gessal, _has_cg, _liscatven;
|
||||
bool _savenew;
|
||||
@ -95,12 +90,13 @@ bool TClifo_application::protected_record(TRectype &rec)
|
||||
TMask* m = get_mask(MODE_MOD);
|
||||
const TString16 tipocf(m->get(F_TIPOCF));
|
||||
const long codice = atol(m->get(F_CODCF));
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
|
||||
_mov->curr().zero();
|
||||
_mov->curr().put(MOV_TIPO, tipocf);
|
||||
_mov->curr().put(MOV_CODCF, codice);
|
||||
_mov->read();
|
||||
return tipocf == _mov->get(MOV_TIPO) && codice == atol(_mov->get(MOV_CODCF));
|
||||
mov.setkey(3);
|
||||
mov.curr().put(MOV_TIPO, tipocf);
|
||||
mov.curr().put(MOV_CODCF, codice);
|
||||
mov.read();
|
||||
return tipocf == mov.get(MOV_TIPO) && codice == atol(mov.get(MOV_CODCF));
|
||||
}
|
||||
|
||||
bool TClifo_application::get_next_key(TToken_string& key)
|
||||
@ -158,7 +154,7 @@ HIDDEN bool no_dup_fis(TMask_field& f, KEY key)
|
||||
|
||||
if (clifo.good() && (t1 != t || s1 != s))
|
||||
{
|
||||
f.message_box("Codice fiscale gia' utilizzato per il codice %c/%ld",
|
||||
f.message_box(FR("Codice fiscale gia' utilizzato per il codice %c/%ld"),
|
||||
t, s);
|
||||
}
|
||||
}
|
||||
@ -192,9 +188,10 @@ HIDDEN bool no_dup_iva(TMask_field& f, KEY key)
|
||||
|
||||
if (clifo.good() && (t1 != t || s1 != s))
|
||||
{
|
||||
ok = f.error_box("Partita iva gia' utilizzata per il codice %c/%ld"
|
||||
"\nsenza avere indicato il valore 4 nell'inserimento in allegato", t, s);
|
||||
ok = f.error_box(FR("Partita iva gia' utilizzata per il codice %c/%ld"
|
||||
"\nsenza avere indicato il valore 4 nell'inserimento in allegato"), t, s);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return ok;
|
||||
@ -263,11 +260,11 @@ bool TClifo_application::percip_handler(TMask_field& f, KEY key)
|
||||
|
||||
if ((c.not_empty() && c != anag.get(ANA_COFI)) ||
|
||||
(p.not_empty() && p != anag.get(ANA_PAIV)))
|
||||
return error_box("Percipiente non corretto: codice fiscale o partita IVA diversa");
|
||||
return error_box(TR("Percipiente non corretto: codice fiscale o partita IVA diversa"));
|
||||
|
||||
const TString r(anag.get(ANA_RAGSOC));
|
||||
if (key == K_TAB && m.get(F_RAGSOC).empty() &&
|
||||
yesno_box("Ragione sociale mancante: assumo %s", (const char*)r))
|
||||
yesno_box(FR("Ragione sociale mancante: assumo %s"), (const char*)r))
|
||||
{
|
||||
m.set(F_RAGSOC, r.left(30), TRUE);
|
||||
m.set(F_RAGSOCA, r.mid(30), TRUE);
|
||||
@ -288,11 +285,9 @@ bool TClifo_application::percip_handler(TMask_field& f, KEY key)
|
||||
m.show(-5, app()._lbcn);
|
||||
if (app()._lbcn)
|
||||
{
|
||||
TLocalisamfile fis(LF_ANAGFIS);
|
||||
const TRectype & fis = cache().get(LF_ANAGFIS, anag.get(ANA_CODANAGR));
|
||||
|
||||
fis.zero();
|
||||
fis.put(ANF_CODANAGR, anag.get(ANA_CODANAGR));
|
||||
if (fis.read() == NOERR)
|
||||
if (!fis.empty())
|
||||
{
|
||||
if (m.get(F_DATANASC).empty()) m.set(F_DATANASC, fis.get(ANF_DATANASC));
|
||||
if (m.get(F_COMNASC).empty())
|
||||
@ -307,29 +302,7 @@ bool TClifo_application::percip_handler(TMask_field& f, KEY key)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*bool TClifo_application::fax_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TFilename msg; msg.temp(NULL, "txt");
|
||||
ofstream msgf(msg); msgf.close();
|
||||
goto_url(msg);
|
||||
|
||||
if (ok)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const char* tipo = m.get(F_TIPOCF) == "C" ? "Clienti" : "Fornitori";
|
||||
const char* codice = m.get(F_CODCF);
|
||||
|
||||
TDDE dde;
|
||||
TString cmd(80);
|
||||
cmd << "[SetRecipient(" << tipo << ',' << codice << ")]";
|
||||
ok = dde.execute("EASYFAX", "FAX", cmd, "bafax");
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
} */
|
||||
|
||||
bool TClifo_application::email_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
@ -406,26 +379,24 @@ HIDDEN bool codalleg_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (cod == m.get(F_CODCF))
|
||||
return error_box("Il codice per allegato coincide con il codice anagrafico");
|
||||
return error_box(TR("Il codice per allegato coincide con il codice anagrafico"));
|
||||
|
||||
const char tipo = m.get(F_TIPOCF)[0];
|
||||
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
clifo.zero() ;
|
||||
clifo.put(CLI_TIPOCF, tipo);
|
||||
clifo.put(CLI_CODCF, cod);
|
||||
clifo.read() ;
|
||||
if (clifo.bad()) return FALSE;
|
||||
TString16 key; key.format("%c|%s", tipo, (const char *) cod);
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
if (clifo.empty())
|
||||
return FALSE;
|
||||
|
||||
if (clifo.get(CLI_CODALLEG).not_empty())
|
||||
return error_box("Codice non utilizzabile: contiene a sua volta un codice per allegato");
|
||||
return error_box(TR("Codice non utilizzabile: contiene a sua volta un codice per allegato"));
|
||||
|
||||
if (clifo.get(CLI_PAIV).empty())
|
||||
return error_box("Codice non utilizzabile: privo di partita IVA");
|
||||
return error_box(TR("Codice non utilizzabile: privo di partita IVA"));
|
||||
|
||||
const TString& tipoall = clifo.get(CLI_ALLEG);
|
||||
if (tipoall.not_empty() && tipoall != "1" && tipoall != "4")
|
||||
return error_box("Codice non utilizzabile: codice inserimento allegato non corretto");
|
||||
return error_box(TR("Codice non utilizzabile: codice inserimento allegato non corretto"));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
@ -668,7 +639,9 @@ TSheet_field& TClifo_application::indsp_sheet() const
|
||||
|
||||
void TClifo_application::reset_sheet()
|
||||
{
|
||||
const char* nulla = "|**Nessuno**";
|
||||
TToken_string nulla = "|**";
|
||||
nulla << TR("Nessuno") << "**";
|
||||
|
||||
|
||||
TClifo_application& a = app();
|
||||
a.field_sheet(F_CODINDDOC).destroy();
|
||||
@ -790,7 +763,7 @@ bool TClifo_application::indsp_notify(TSheet_field& indsp, int r, KEY key)
|
||||
// To avoid inserts in the middle of the sheet
|
||||
if (r != -1 && indsp.items() > (r+1))
|
||||
{
|
||||
error_box("Si possono aggiungere indirizzi solo alla fine");
|
||||
error_box(TR("Si possono aggiungere indirizzi solo alla fine"));
|
||||
return FALSE; //Refuse permission
|
||||
}
|
||||
break;
|
||||
@ -819,20 +792,11 @@ bool TClifo_application::effetti_notify(TSheet_field& pnae, int r, KEY key)
|
||||
|
||||
bool TClifo_application::user_create() // initvar e arrmask
|
||||
{
|
||||
open_files(LF_CLIFO, LF_CFVEN, LF_INDSP, LF_TAB, LF_TABCOM, LF_MOV, LF_ANAG,
|
||||
LF_ANAGFIS, LF_PCON, LF_COMUNI, 0);
|
||||
_has_cg = has_module(CGAUT, CHK_DONGLE);
|
||||
_rel = new TClifoVI;
|
||||
if (_has_cg)
|
||||
{
|
||||
_mov = new TLocalisamfile(LF_MOV);
|
||||
_mov->setkey(3);
|
||||
}
|
||||
else
|
||||
_mov = NULL;
|
||||
|
||||
_anag = new TLocalisamfile(LF_ANAG);
|
||||
_fis = new TLocalisamfile(LF_ANAGFIS);
|
||||
_pcon = new TLocalisamfile(LF_PCON);
|
||||
_comuni = new TLocalisamfile(LF_COMUNI);
|
||||
|
||||
_msk = new TMask("cg0200a") ;
|
||||
|
||||
@ -863,11 +827,6 @@ bool TClifo_application::user_destroy() // releasev e arrmask
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
if (_mov) delete _mov;
|
||||
delete _anag;
|
||||
delete _fis;
|
||||
delete _pcon;
|
||||
delete _comuni;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -875,10 +834,9 @@ int cg0200(int argc, char* argv[])
|
||||
{
|
||||
TClifo_application a;
|
||||
|
||||
a.run(argc, argv, "Clienti/Fornitori");
|
||||
a.run(argc, argv, TR("Clienti/Fornitori"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include <relapp.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0300.h"
|
||||
@ -7,9 +8,6 @@ class CG0300_application : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
TLocalisamfile* _ditte;
|
||||
TLocalisamfile* _attiv;
|
||||
TLocalisamfile* _clifo;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
@ -51,18 +49,16 @@ void CG0300_application::init_modify_mode(TMask& m)
|
||||
|
||||
bool CG0300_application::user_create()
|
||||
{
|
||||
open_files(LF_ALLEG, LF_NDITTE, LF_ATTIV, LF_CLIFO, 0);
|
||||
_msk = new TMask("cg0300a") ;
|
||||
_rel = new TRelation(LF_ALLEG);
|
||||
_ditte = new TLocalisamfile(LF_NDITTE);
|
||||
_attiv = new TLocalisamfile(LF_ATTIV);
|
||||
_clifo = new TLocalisamfile(LF_CLIFO);
|
||||
const long ditta = get_firm();
|
||||
_msk->set(F_CODDITTA, ditta);
|
||||
_ditte->zero();
|
||||
_ditte->put(N_CODDITTA, ditta);
|
||||
_ditte->read();
|
||||
if (_ditte->good())
|
||||
_msk->set(F_CODATT,_ditte->get(N_CODATTPREV));
|
||||
const long codditta = get_firm();
|
||||
|
||||
TString16 key ; key << codditta;
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, key);
|
||||
_msk->set(F_CODDITTA, codditta);
|
||||
if (!ditta.empty())
|
||||
_msk->set(F_CODATT, ditta.get(N_CODATTPREV));
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
@ -71,15 +67,12 @@ bool CG0300_application::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
delete _ditte;
|
||||
delete _attiv;
|
||||
delete _clifo;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0300(int argc, char* argv[])
|
||||
{
|
||||
CG0300_application a;
|
||||
a.run(argc, argv, "Immissione progressivi allegati");
|
||||
a.run(argc, argv, TR("Immissione progressivi allegati"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
224
cg/cg0400.cpp
224
cg/cg0400.cpp
@ -4,6 +4,7 @@
|
||||
#include <currency.h>
|
||||
#include <mask.h>
|
||||
#include <printapp.h>
|
||||
#include <recarray.h>
|
||||
#include <tabutil.h>
|
||||
#include <prefix.h>
|
||||
|
||||
@ -115,8 +116,6 @@ bool TIva_array::add_riga(const tiporec& tipo, const real& imponibile,
|
||||
|
||||
class TProgressivi_iva : public TPrintapp
|
||||
{
|
||||
TTable* _tablia;
|
||||
TLocalisamfile* _nditte, * _anag, * _com, * _attiv;
|
||||
TMask* _msk;
|
||||
TDate _data;
|
||||
int _sospmsk, _tipoprog, _livelloprog, _tipo_aliq, _tipo_attiv, _annoiva, _i;
|
||||
@ -132,8 +131,6 @@ class TProgressivi_iva : public TPrintapp
|
||||
Importi _mesi[14]; // Era 13: bestie! I mesi sono da 1 a 13
|
||||
liste _tipo_lista;
|
||||
|
||||
TString TMP; // Ex HIDDEN: bestie!
|
||||
|
||||
protected:
|
||||
static bool tipo_handler(TMask_field& f, KEY k);
|
||||
static bool selection_handler(TMask_field& f, KEY k);
|
||||
@ -194,14 +191,9 @@ bool TProgressivi_iva::is_month_plain(int x, int m, const char f)
|
||||
|
||||
const char* TProgressivi_iva::desc_attivita(const char* codatt)
|
||||
{
|
||||
TTable attiv ("%AIS");
|
||||
attiv.zero();
|
||||
attiv.put("CODTAB", codatt);
|
||||
if (attiv.read()==NOERR)
|
||||
TMP = attiv.get("S0");
|
||||
else
|
||||
TMP = "";
|
||||
return TMP;
|
||||
const TRectype & attiv = cache().get("%AIS", codatt);
|
||||
|
||||
return attiv.get("S0");
|
||||
}
|
||||
|
||||
void TProgressivi_iva::lordo2netto(const real& totale, real& imponibile, real& imposta, const real& aliquota)
|
||||
@ -228,50 +220,35 @@ void TProgressivi_iva::lordo2netto(const real& totale, real& imponibile, real& i
|
||||
|
||||
const char* TProgressivi_iva::desc_iva(const TString& cod)
|
||||
{
|
||||
|
||||
if (cod == "{AF")
|
||||
TMP = "Artt.17c3/74c1";
|
||||
return TR("Artt.17c3/74c1");
|
||||
|
||||
else if (cod == "{VA7")
|
||||
TMP = "Art.40c5/6/8 a.i.";
|
||||
return TR("Art.40c5/6/8 a.i.");
|
||||
|
||||
else
|
||||
{
|
||||
TTable tab_iva("%IVA");
|
||||
TString16 codtab; codtab.format("%-4s", (const char*)cod);
|
||||
const TRectype & iva = cache().get("%IVA", codtab);
|
||||
|
||||
tab_iva.zero();
|
||||
tab_iva.put("CODTAB", codtab);
|
||||
if (tab_iva.read()==NOERR)
|
||||
TMP = tab_iva.get("S0");
|
||||
else
|
||||
TMP = "";
|
||||
return iva.get("S0");
|
||||
}
|
||||
|
||||
return TMP;
|
||||
return "";
|
||||
}
|
||||
|
||||
char TProgressivi_iva::look_lia(long ditta)
|
||||
{
|
||||
if (ditta == 0l) ditta = get_firm();
|
||||
if (ditta <= 0L) ditta = get_firm();
|
||||
|
||||
TString16 y; y.format("%05ld%04d", ditta, _anno);
|
||||
|
||||
_tablia->zero();
|
||||
_tablia->put("CODTAB", y);
|
||||
|
||||
if (_tablia->read() != NOERR)
|
||||
_tablia->zero();
|
||||
TString16 key; key.format("%05ld%04d", ditta, _anno);
|
||||
const TRectype & lia = cache().get("%LIA", key);
|
||||
|
||||
return _tablia->get_char("S7");
|
||||
return lia.get_char("S7");
|
||||
}
|
||||
|
||||
bool TProgressivi_iva::user_create()
|
||||
{
|
||||
_tablia = new TTable("%LIA");
|
||||
_anag = new TLocalisamfile(LF_ANAG);
|
||||
_nditte = new TLocalisamfile(LF_NDITTE);
|
||||
_com = new TLocalisamfile(LF_COMUNI);
|
||||
_attiv = new TLocalisamfile(LF_ATTIV);
|
||||
|
||||
open_files(LF_TABCOM, LF_TAB, LF_ANAG, LF_NDITTE, LF_COMUNI, LF_ATTIV, 0);
|
||||
set_real_picture("###.###.###.###");
|
||||
set_magic_currency(TRUE);
|
||||
set_print_zero(FALSE);
|
||||
@ -282,12 +259,6 @@ bool TProgressivi_iva::user_create()
|
||||
|
||||
bool TProgressivi_iva::user_destroy()
|
||||
{
|
||||
delete _tablia;
|
||||
delete _anag;
|
||||
delete _nditte;
|
||||
delete _com;
|
||||
delete _attiv;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -825,10 +796,6 @@ bool TProgressivi_iva::set_print(int m)
|
||||
break;
|
||||
}
|
||||
|
||||
//set_real_picture("###.###.###.###");
|
||||
//set_print_zero(FALSE);
|
||||
//printer().footerlen(5);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -902,8 +869,9 @@ bool TProgressivi_iva::preprocess_page(int file, int counter)
|
||||
real tot_imposta = ZERO;
|
||||
calcola_totali(tot_impo, tot_imposta);
|
||||
TString dep = "";
|
||||
set_row(2,(const char*) dep);
|
||||
set_row(3,"@8gTotale");
|
||||
set_row(2,(const char*) dep);
|
||||
set_row(3,"@8g%s", TR("Totale"));
|
||||
|
||||
set_row(3,"@26g%r", &tot_impo);
|
||||
set_row(3,"@56g%r", &tot_imposta);
|
||||
}
|
||||
@ -922,8 +890,8 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
int r = 1;
|
||||
TString80 descr;
|
||||
|
||||
set_row(++r, "Cod.@40gVENDITE@77gACQUISTI@113gIMPORTAZIONI");
|
||||
set_row(++r, "IVA Descrizione@29gImponibile@48gImposta@67gImponibile@86gImposta@105gImponibile@124gImposta");
|
||||
set_row(++r, FR("Cod.@40gVENDITE@77gACQUISTI@113gIMPORTAZIONI"));
|
||||
set_row(++r, FR("IVA Descrizione@29gImponibile@48gImposta@67gImponibile@86gImposta@105gImponibile@124gImposta"));
|
||||
r+=2;
|
||||
|
||||
for (int k = 0; k < gen.items(); k++)
|
||||
@ -962,7 +930,7 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
gen.destroy();
|
||||
|
||||
r+=2;
|
||||
set_row(r++, "Totale@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
|
||||
set_row(r++, FR("Totale@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r"),
|
||||
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
|
||||
r++;
|
||||
real im, is, d, im1, is1, d1; //inizializzati in cerca_tipo()
|
||||
@ -972,7 +940,7 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
bool st_riga = FALSE;
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Totali acquisti indeducibili su ricavi esenti@62g%r@78g%r", &im, &is);
|
||||
set_row(r++, FR("Totali acquisti indeducibili su ricavi esenti@62g%r@78g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_ind_art_19,im,is,d);
|
||||
@ -983,7 +951,7 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
t_imposbd += is1;
|
||||
if (im != ZERO || is != ZERO || im1 != ZERO || is1 != ZERO)
|
||||
{
|
||||
set_row(r++, "Totali acquisti indeducibili per ART.19@62g%r@78g%r@100g%r@116g%r", &im, &is, &im1, &is1);
|
||||
set_row(r++, FR("Totali acquisti indeducibili per ART.19@62g%r@78g%r@100g%r@116g%r"), &im, &is, &im1, &is1);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_ind_pass_int,im,is,d);
|
||||
@ -991,12 +959,12 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
t_imposa += is;
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Totali acquisti indeducibili per passaggi interni@62g%r@78g%r", &im, &is);
|
||||
set_row(r++, FR("Totali acquisti indeducibili per passaggi interni@62g%r@78g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
r+=2;
|
||||
if (st_riga)
|
||||
set_row(r++, "Totale generale IVA@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r",
|
||||
set_row(r++, FR("Totale generale IVA@24g%r@40g%r@62g%r@78g%r@100g%r@116g%r"),
|
||||
&t_impov,&t_imposv,&t_impoa,&t_imposa,&t_impobd,&t_imposbd);
|
||||
r+=3;
|
||||
const int kk = r; // memorizza riga in cui scrivere "altri dati relativi alla dichiarazione"
|
||||
@ -1006,91 +974,70 @@ void TProgressivi_iva::prospetto_pagina(TGen_array& gen, TIva_array& iva)
|
||||
cerca_tipo(iva,acq_simp,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Acquisti in sospensione d'imposta@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Acquisti in sospensione d'imposta@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,vend_simp,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Vendite in sospensione d'imposta@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Vendite in sospensione d'imposta@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,cess_amm,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Cessione beni ammortizzabili@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Cessione beni ammortizzabili@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_beni_riv,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Acquisto beni destinati alla rivendita@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Acquisto beni destinati alla rivendita@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_beni_ammort,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Acquisto beni ammortizzabili iva detraibile@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Acquisto beni ammortizzabili iva detraibile@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_beni_ammort_nd,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Acquisto beni ammortizzabili iva non detraibile@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Acquisto beni ammortizzabili iva non detraibile@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_beni_leasing,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Altri beni strumentali acquisiti in leasing@49g%r@66g%r", &im, &is);
|
||||
set_row(r++, FR("Altri beni strumentali acquisiti in leasing@49g%r@66g%r"), &im, &is);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
cerca_tipo(iva,acq_amm_ultdetr,im,is,d);
|
||||
if (im != ZERO || is != ZERO)
|
||||
{
|
||||
set_row(r++, "Acquisto beni soggetti a detrazione (6%%)@49g%r@66g%r@86g%r", &im, &is, &d);
|
||||
set_row(r++, FR("Acquisto beni soggetti a detrazione (6%%)@49g%r@66g%r@86g%r"), &im, &is, &d);
|
||||
st_riga = TRUE;
|
||||
}
|
||||
if (st_riga)
|
||||
set_row(kk, "ALTRI DATI RELATIVI ALLA DICHIARAZIONE@54gImponibile@74gImposta@91gDetrazione");
|
||||
set_row(kk, FR("ALTRI DATI RELATIVI ALLA DICHIARAZIONE@54gImponibile@74gImposta@91gDetrazione"));
|
||||
|
||||
iva.destroy();
|
||||
}
|
||||
|
||||
TRectype& look_com (const char* cod, TLocalisamfile *comuni)
|
||||
{
|
||||
comuni->zero();
|
||||
comuni->put(COM_COM, cod);
|
||||
comuni->read();
|
||||
if (comuni->bad())
|
||||
comuni->zero();
|
||||
|
||||
return comuni->curr();
|
||||
}
|
||||
|
||||
void TProgressivi_iva::get_dati_ditta()
|
||||
{
|
||||
TLocalisamfile nditte(LF_NDITTE);
|
||||
TLocalisamfile anag(LF_ANAG);
|
||||
TString codanagr;
|
||||
TString tipoa;
|
||||
|
||||
nditte.zero();
|
||||
nditte.put(NDT_CODDITTA, _codditta);
|
||||
nditte.read();
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, _codditta);
|
||||
|
||||
if (nditte.bad()) nditte.zero();
|
||||
codanagr = ditta.get(NDT_CODANAGR);
|
||||
tipoa = ditta.get(NDT_TIPOA);
|
||||
_ragsoc = ditta.get(NDT_RAGSOC);
|
||||
|
||||
codanagr = nditte.get(NDT_CODANAGR);
|
||||
tipoa = nditte.get(NDT_TIPOA);
|
||||
_ragsoc = nditte.get(NDT_RAGSOC);
|
||||
|
||||
anag.setkey(1);
|
||||
anag.zero();
|
||||
anag.put (ANA_TIPOA, tipoa);
|
||||
anag.put (ANA_CODANAGR, codanagr);
|
||||
anag.read();
|
||||
if (anag.bad()) anag.zero();
|
||||
TString16 key; key.format("%s|%s", (const char *) tipoa, (const char *) codanagr);
|
||||
const TRectype & anag = cache().get(LF_ANAG, key);
|
||||
|
||||
_cofi = anag.get(ANA_COFI);
|
||||
_paiva = anag.get(ANA_PAIV);
|
||||
@ -1099,7 +1046,8 @@ void TProgressivi_iva::get_dati_ditta()
|
||||
if (_comunefis.empty())
|
||||
_comunefis = anag.get(ANA_COMRES);
|
||||
|
||||
TRectype dep = look_com (_comunefis, _com);
|
||||
key = "|"; key << _comunefis;
|
||||
const TRectype & dep = cache().get(LF_COMUNI, key);
|
||||
|
||||
_comunefis = dep.get(COM_DENCOM);
|
||||
_provfis = dep.get(COM_PROVCOM);
|
||||
@ -1125,15 +1073,15 @@ int TProgressivi_iva::stampa_intestazione_ditta()
|
||||
|
||||
get_dati_ditta();
|
||||
|
||||
set_header (r, "Ditta %ld %s %s %s %s %s", _codditta,
|
||||
set_header (r, FR("Ditta %ld %s %s %s %s %s"), _codditta,
|
||||
(const char*)_ragsoc, (const char*)_viafis,
|
||||
(const char*)_cap, (const char*)_comunefis,
|
||||
(const char*)_provfis);
|
||||
r++;
|
||||
riga = "Data @> Pag. @#";
|
||||
riga = FR("Data @> Pag. @#");
|
||||
riga.right_just(123);
|
||||
|
||||
TString80 dep; dep.format ("Partita iva %s Codice fiscale %s",
|
||||
TString80 dep; dep.format (FR("Partita iva %s Codice fiscale %s"),
|
||||
(const char*)_paiva, (const char*)_cofi);
|
||||
riga.overwrite(dep);
|
||||
set_header (r, riga);
|
||||
@ -1151,19 +1099,19 @@ void TProgressivi_iva::setta_intestazione()
|
||||
r = stampa_intestazione_ditta();
|
||||
|
||||
if (_livelloprog == 1)
|
||||
set_header(r++, "Gestione Iva@b@50gPROGRESSIVI IVA PER ALIQUOTA");
|
||||
else set_header(r++, "Gestione Iva@b@50gPROGRESSIVI IVA PER ATTIVITA'");
|
||||
set_header(r++, FR("Gestione Iva@b@50gPROGRESSIVI IVA PER ALIQUOTA"));
|
||||
else set_header(r++, FR("Gestione Iva@b@50gPROGRESSIVI IVA PER ATTIVITA'"));
|
||||
r++;
|
||||
set_header(r++, "Anno liquidazione %d", _annoiva);
|
||||
set_header(r++, FR("Anno liquidazione %d"), _annoiva);
|
||||
if (_tipoprog == 1) //vendite
|
||||
{
|
||||
if (_livelloprog == 1)
|
||||
{
|
||||
if (_sospmsk == 1)
|
||||
set_header(r, "Vendite in genere");
|
||||
else set_header(r, "Vendite in sospensione d'imposta");
|
||||
set_header(r, TR("Vendite in genere"));
|
||||
else set_header(r, TR("Vendite in sospensione d'imposta"));
|
||||
}
|
||||
else set_header(r, "Cessione beni da ammortizzare");
|
||||
else set_header(r, TR("Cessione beni da ammortizzare"));
|
||||
}
|
||||
else //acquisti
|
||||
{
|
||||
@ -1171,25 +1119,25 @@ void TProgressivi_iva::setta_intestazione()
|
||||
switch (_tipo_aliq)
|
||||
{
|
||||
case 1:
|
||||
set_header(r, "Acquisti in genere");
|
||||
set_header(r, TR("Acquisti in genere"));
|
||||
break;
|
||||
case 2:
|
||||
set_header(r, "Acquisti indetraibili su operazioni esenti");
|
||||
set_header(r, TR("Acquisti indetraibili su operazioni esenti"));
|
||||
break;
|
||||
case 3:
|
||||
set_header(r, "Acquisti indetraibili passaggi interni");
|
||||
set_header(r, TR("Acquisti indetraibili passaggi interni"));
|
||||
break;
|
||||
case 4:
|
||||
set_header(r, "Acquisti indetraibili art.19");
|
||||
set_header(r, TR("Acquisti indetraibili art.19"));
|
||||
break;
|
||||
case 5:
|
||||
set_header(r, "Acquisti base di calcolo per la ventilazione");
|
||||
set_header(r, TR("Acquisti base di calcolo per la ventilazione"));
|
||||
break;
|
||||
case 6:
|
||||
set_header(r, "Bolle doganali");
|
||||
set_header(r, TR("Bolle doganali"));
|
||||
break;
|
||||
case 7:
|
||||
set_header(r, "Acquisti in sospensione d'imposta");
|
||||
set_header(r, TR("Acquisti in sospensione d'imposta"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -1198,19 +1146,19 @@ void TProgressivi_iva::setta_intestazione()
|
||||
switch (_tipo_attiv)
|
||||
{
|
||||
case 1:
|
||||
set_header(r, "Acquisti beni per rivendita");
|
||||
set_header(r, TR("Acquisti beni per rivendita"));
|
||||
break;
|
||||
case 2:
|
||||
set_header(r, "Acquisti beni da ammortizzare detraibili");
|
||||
set_header(r, TR("Acquisti beni da ammortizzare detraibili"));
|
||||
break;
|
||||
case 3:
|
||||
set_header(r, "Acquisti beni da ammortizzare non detraibili");
|
||||
set_header(r, TR("Acquisti beni da ammortizzare non detraibili"));
|
||||
break;
|
||||
case 4:
|
||||
set_header(r, "Altri beni strumentali acquisiti in leasing");
|
||||
set_header(r, TR("Altri beni strumentali acquisiti in leasing"));
|
||||
break;
|
||||
case 5:
|
||||
set_header(r, "Acquisti beni da ammortizzare ult.detr. 6%");
|
||||
set_header(r, TR("Acquisti beni da ammortizzare ult.detr. 6%"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -1219,8 +1167,9 @@ void TProgressivi_iva::setta_intestazione()
|
||||
r++;
|
||||
if (_livelloprog == 1)
|
||||
set_header(r++, "IVA %s",(const char*) _codivamsk);
|
||||
else set_header(r++, "ATTIVITA' %s",(const char*)_codattmsk);
|
||||
set_header(++r, "@31gImponibile@64gImposta");
|
||||
else set_header(r++, FR("ATTIVITA' %s"),(const char*)_codattmsk);
|
||||
set_header(++r, FR("@31gImponibile@64gImposta"));
|
||||
|
||||
}
|
||||
|
||||
void TProgressivi_iva::preprocess_header()
|
||||
@ -1231,25 +1180,24 @@ void TProgressivi_iva::preprocess_header()
|
||||
TString sep(132);
|
||||
TString ragsoc(50);
|
||||
TString16 descf;
|
||||
TString16 key; key << _codditta;
|
||||
|
||||
TLocalisamfile nditte(LF_NDITTE);
|
||||
nditte.zero();
|
||||
nditte.put(NDT_CODDITTA, _codditta);
|
||||
if (nditte.read() == NOERR)
|
||||
ragsoc = nditte.get(NDT_RAGSOC);
|
||||
const TRectype & ditta = cache().get(LF_NDITTE, key);
|
||||
|
||||
ragsoc = ditta.get(NDT_RAGSOC);
|
||||
|
||||
TString80 descr = desc_attivita(_cod_att);
|
||||
TString80 descr = desc_attivita(_cod_att);
|
||||
|
||||
reset_header();
|
||||
|
||||
char f = look_lia(_codditta);
|
||||
if (f == 'T')
|
||||
descf = " TRIMESTRALE";
|
||||
descf = TR(" TRIMESTRALE");
|
||||
else if (f == 'M')
|
||||
descf = " MENSILE";
|
||||
descf = TR(" MENSILE");
|
||||
else descf = "";
|
||||
|
||||
sep << "Ditta " << _codditta;
|
||||
sep << TR("Ditta ") << _codditta;
|
||||
sep << " " << ragsoc;
|
||||
sep << " " << descf;
|
||||
|
||||
@ -1258,35 +1206,36 @@ void TProgressivi_iva::preprocess_header()
|
||||
set_header (soh++, (const char*) sep);
|
||||
|
||||
sep = "";
|
||||
sep << "Data " << _datast;
|
||||
sep << " Pag. @#";
|
||||
sep << TR("Data ") << _datast;
|
||||
sep << FR(" Pag. @#");
|
||||
|
||||
sep.right_just(127);
|
||||
|
||||
sep.overwrite ("RIEPILOGO PROGRESSIVI");
|
||||
sep.overwrite (TR("RIEPILOGO PROGRESSIVI"));
|
||||
set_header (soh++, (const char*)sep);
|
||||
sep.fill('-');
|
||||
set_header (soh++, (const char *) sep);
|
||||
|
||||
const char* pro_des = _tipo_prog_reg == 'L' ? "liquidazione IVA" : "Volume Affari";
|
||||
const char* pro_des = _tipo_prog_reg == 'L' ? TR("liquidazione IVA") : TR("Volume Affari");
|
||||
|
||||
TString periodo;
|
||||
|
||||
if (f == 'M')
|
||||
periodo = itom(_mese);
|
||||
else
|
||||
periodo.format("%d trimestre", ((_mese-1)/3) +1);
|
||||
periodo.format(FR("%d trimestre"), ((_mese-1)/3) +1);
|
||||
|
||||
if (_st_inizio_anno)
|
||||
{
|
||||
if (_mese == 13 || (_mese == 12 && !_prima_pagina))
|
||||
set_header(soh++, "Riepilogo progressivi %s annuale %d Cod. Att. %s %s", pro_des, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
set_header(soh++, FR("Riepilogo progressivi %s annuale %d Cod. Att. %s %s"), pro_des, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
else
|
||||
if (_prima_pagina)
|
||||
set_header(soh++, "Riepilogo progressivi %s del periodo %s %d Cod. Att. %s %s", pro_des, (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
else set_header(soh++, "Riepilogo progressivi %s al%s: %s %d Cod. Att. %s %s", pro_des, f == 'M' ? " Mese di" : "", (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
set_header(soh++, FR("Riepilogo progressivi %s del periodo %s %d Cod. Att. %s %s"), pro_des, (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
else set_header(soh++, FR("Riepilogo progressivi %s al%s: %s %d Cod. Att. %s %s"), pro_des, f == 'M' ? TR(" Mese di") : "", (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
|
||||
}
|
||||
else set_header (soh++, "Riepilogo progressivi %s del periodo %s %d Cod. Att. %s %s", pro_des, (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
else set_header (soh++, FR("Riepilogo progressivi %s del periodo %s %d Cod. Att. %s %s"), pro_des, (const char*) periodo, _anno, (const char*) _cod_att, (const char*) descr);
|
||||
set_header (soh, (const char *) sep);
|
||||
}
|
||||
}
|
||||
@ -1322,7 +1271,6 @@ return NEXT_PAGE;
|
||||
int cg0400(int argc,char* argv[])
|
||||
{
|
||||
TProgressivi_iva a;
|
||||
a.run(argc, argv, "Riepilogo progressivi IVA");
|
||||
a.run(argc, argv, TR("Riepilogo progressivi IVA"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
121
cg/cg0500.cpp
121
cg/cg0500.cpp
@ -21,7 +21,6 @@ typedef enum { no_descr, acquisto, vendita, incasso_pagamento,
|
||||
class TCaus_app : public TRelation_application
|
||||
{
|
||||
TRelation* _rel; // Relazione principale
|
||||
TLocalisamfile * _rcaus;
|
||||
TMask* _msk; // Maschera principale
|
||||
|
||||
|
||||
@ -195,15 +194,15 @@ void TCaus_app::causale_vendite()
|
||||
if (_tipo_des != vendita)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, "C Clienti");
|
||||
set_descr(i++, "C Di ricavo");
|
||||
set_descr(i++, "C Iva vendite");
|
||||
set_descr(i++, "C Iva non detraibile");
|
||||
set_descr(i++, "C Imp. esenti");
|
||||
set_descr(i++, "C Imp. non imponibili");
|
||||
set_descr(i++, "C Imp. non soggetti");
|
||||
set_descr(i++, "C Ritenute fiscali");
|
||||
set_descr(i++, "C Ritenute soc.");
|
||||
set_descr(i++, TR("C Clienti"));
|
||||
set_descr(i++, TR("C Di ricavo"));
|
||||
set_descr(i++, TR("C Iva vendite"));
|
||||
set_descr(i++, TR("C Iva non detraibile"));
|
||||
set_descr(i++, TR("C Imp. esenti"));
|
||||
set_descr(i++, TR("C Imp. non imponibili"));
|
||||
set_descr(i++, TR("C Imp. non soggetti"));
|
||||
set_descr(i++, TR("C Ritenute fiscali"));
|
||||
set_descr(i++, TR("C Ritenute soc."));
|
||||
_tipo_des = vendita;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
@ -215,15 +214,15 @@ void TCaus_app::causale_acquisti()
|
||||
if (_tipo_des != acquisto)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, "C Fornitori");
|
||||
set_descr(i++, "C Di costo");
|
||||
set_descr(i++, "C Iva acquisti");
|
||||
set_descr(i++, "C Iva non detraibile");
|
||||
set_descr(i++, "C Imp. esenti");
|
||||
set_descr(i++, "C Imp. non imponibili");
|
||||
set_descr(i++, "C Imp. non soggetti");
|
||||
set_descr(i++, "C Ritenute fiscali");
|
||||
set_descr(i++, "C Ritenute soc.");
|
||||
set_descr(i++, TR("C Fornitori"));
|
||||
set_descr(i++, TR("C Di costo"));
|
||||
set_descr(i++, TR("C Iva acquisti"));
|
||||
set_descr(i++, TR("C Iva non detraibile"));
|
||||
set_descr(i++, TR("C Imp. esenti"));
|
||||
set_descr(i++, TR("C Imp. non imponibili"));
|
||||
set_descr(i++, TR("C Imp. non soggetti"));
|
||||
set_descr(i++, TR("C Ritenute fiscali"));
|
||||
set_descr(i++, TR("C Ritenute soc."));
|
||||
_tipo_des = acquisto;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
@ -234,9 +233,9 @@ void TCaus_app::causale_ritenute()
|
||||
if (_tipo_des != ritenuta_occas)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr (i++, "Costo");
|
||||
set_descr (i++, "Cassa/banca");
|
||||
set_descr (i++, "Erario");
|
||||
set_descr (i++, TR("Costo"));
|
||||
set_descr (i++, TR("Cassa/banca"));
|
||||
set_descr (i++, TR("Erario"));
|
||||
_tipo_des = ritenuta_occas;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
@ -247,19 +246,19 @@ void TCaus_app::causale_inc_pag()
|
||||
if (_tipo_des != incasso_pagamento)
|
||||
{
|
||||
int i = 0;
|
||||
set_descr(i++, "C Clienti/Fornitori");
|
||||
set_descr(i++, "C Cassa o banca");
|
||||
set_descr(i++, "C Tratta");
|
||||
set_descr(i++, "C Ricevuta bancaria");
|
||||
set_descr(i++, "C Cessione");
|
||||
set_descr(i++, "C Paghero'");
|
||||
set_descr(i++, "C Lettera di credito");
|
||||
set_descr(i++, "C Tratta accettata");
|
||||
set_descr(i++, "C Abbuoni pass./sc.");
|
||||
set_descr(i++, "C Abbuoni att./sc.");
|
||||
set_descr(i++, "C Spese e rimborsi");
|
||||
set_descr(i++, "C Ritenute fiscali");
|
||||
set_descr(i++, "C Differenza cambio");
|
||||
set_descr(i++, TR("C Clienti/Fornitori"));
|
||||
set_descr(i++, TR("C Cassa o banca"));
|
||||
set_descr(i++, TR("C Tratta"));
|
||||
set_descr(i++, TR("C Ricevuta bancaria"));
|
||||
set_descr(i++, TR("C Cessione"));
|
||||
set_descr(i++, TR("C Paghero'"));
|
||||
set_descr(i++, TR("C Lettera di credito"));
|
||||
set_descr(i++, TR("C Tratta accettata"));
|
||||
set_descr(i++, TR("C Abbuoni pass./sc."));
|
||||
set_descr(i++, TR("C Abbuoni att./sc."));
|
||||
set_descr(i++, TR("C Spese e rimborsi"));
|
||||
set_descr(i++, TR("C Ritenute fiscali"));
|
||||
set_descr(i++, TR("C Differenza cambio"));
|
||||
_tipo_des = incasso_pagamento;
|
||||
carica_righe_libere(i);
|
||||
}
|
||||
@ -295,15 +294,14 @@ void TCaus_app::set_reg_filter(int f)
|
||||
|
||||
int TCaus_app::calc_filter(const TString& tpd)
|
||||
{
|
||||
TTable tabtpd("%TPD");
|
||||
tabtpd.put("CODTAB", tpd);
|
||||
const TRectype & tpd_rec = cache().get("%TPD", tpd);
|
||||
|
||||
int filtro = 0;
|
||||
|
||||
if (tabtpd.read() == NOERR)
|
||||
if (!tpd_rec.empty())
|
||||
{
|
||||
const TipoIVA i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
const bool corrisp = tabtpd.get_bool("B0");
|
||||
const TipoIVA i = (TipoIVA)tpd_rec.get_int("I0"); // IVA acquisti, vendite, generica
|
||||
const bool corrisp = tpd_rec.get_bool("B0");
|
||||
|
||||
if (i == iva_vendite) // vendite
|
||||
{
|
||||
@ -363,7 +361,7 @@ bool TCaus_app::tipodoc_hndl (TMask_field& f, KEY k)
|
||||
{
|
||||
TRegistro registro(codreg, app().anno_iva());
|
||||
if (registro.name().empty())
|
||||
return f.error_box("Non esiste il registro %s per l'anno %d",
|
||||
return f.error_box(FR("Non esiste il registro %s per l'anno %d"),
|
||||
(const char *)codreg, app().anno_iva());
|
||||
}
|
||||
|
||||
@ -465,7 +463,7 @@ bool TCaus_app::cod_reg_hndl (TMask_field& f, KEY k)
|
||||
const TRegistro grog(codreg, app().anno_iva());
|
||||
const TipoIVA ri = grog.iva();
|
||||
if (i != ri)
|
||||
return f.error_box("Tipo documento incompatibile con tipo registro");
|
||||
return f.error_box(TR("Tipo documento incompatibile con tipo registro"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -512,7 +510,7 @@ bool TCaus_app::sezione_hndl(TMask_field& f, KEY k)
|
||||
{
|
||||
const char sez = f.get()[0];
|
||||
if (sez != 'A' && sez != 'D')
|
||||
return f.error_box("E' necessario specificare la sezione D/A");
|
||||
return f.error_box(TR("E' necessario specificare la sezione D/A"));
|
||||
}
|
||||
// else
|
||||
// f.reset();
|
||||
@ -581,7 +579,8 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
||||
|
||||
if (!ok)
|
||||
return cfld.error_box(
|
||||
"%s non valido con registro %s", cf == 'C' ? "Cliente" : "Fornitore", iva2name(tpr));
|
||||
FR("%s non valido con registro %s"), cf == 'C' ? TR("Cliente") : TR("Fornitore"), iva2name(tpr));
|
||||
|
||||
}
|
||||
|
||||
if (sezione == ' ' && sezione_consigliata != ' ')
|
||||
@ -602,7 +601,7 @@ bool TCaus_app::sottoconto_hndl(TMask_field& f, KEY k)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const bool ok = m.get(SS_GRUPPO).not_empty() && m.get(SS_CONTO).not_empty();
|
||||
if (!ok) return f.error_box("Conto incompleto");
|
||||
if (!ok) return f.error_box(TR("Conto incompleto"));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -688,8 +687,6 @@ void TCaus_app::load_rcaus(TMask& m)
|
||||
{
|
||||
const TString16 cod(_rel->lfile().get(RCA_CODCAUS));
|
||||
TString d, da(50);
|
||||
|
||||
TTable dpn("%DPN");
|
||||
|
||||
const int last = _rcaus_rec->last_row();
|
||||
for (int i = 1; i <= last; i++)
|
||||
@ -704,9 +701,9 @@ void TCaus_app::load_rcaus(TMask& m)
|
||||
da.cut(0);
|
||||
if (d.not_empty())
|
||||
{
|
||||
dpn.put("CODTAB", d);
|
||||
if (dpn.read() == NOERR)
|
||||
da = dpn.get("S0");
|
||||
const TRectype & dpn = cache().get("%DPN", d);
|
||||
|
||||
da = dpn.get("S0");
|
||||
}
|
||||
|
||||
TBill tc(g,c,s,cf);
|
||||
@ -719,17 +716,16 @@ bool TCaus_app::fill_sheet(TMask& m)
|
||||
{
|
||||
const TString8 codreg = m.get(F_COD_REG);
|
||||
const TString8 tpd = m.get(F_TIPO_DOC);
|
||||
const int tpm = m.get_int(F_TIPO_MOV);
|
||||
const int m770 = m.get_int(F_M_770);
|
||||
const int tpm = m.get_int(F_TIPO_MOV);
|
||||
const int m770 = m.get_int(F_M_770);
|
||||
int tpr = m.get_int(F_TIPO_REG);
|
||||
|
||||
if (!m.is_running())
|
||||
{
|
||||
TString16 chiave; chiave << anno_iva() << codreg;
|
||||
TTable reg("REG");
|
||||
reg.put("CODTAB", chiave);
|
||||
if (reg.read() == NOERR)
|
||||
tpr = reg.get_int("I0");
|
||||
const TRectype & reg = cache().get("REG", chiave);
|
||||
|
||||
tpr = reg.get_int("I0");
|
||||
}
|
||||
|
||||
// carico le descrizioni fisse nell'array Righe_rcaus
|
||||
@ -893,11 +889,10 @@ void TCaus_app::on_config_change()
|
||||
|
||||
bool TCaus_app::user_create()
|
||||
{
|
||||
_rel = new TRelation (LF_CAUSALI);
|
||||
_rcaus = new TLocalisamfile(LF_RCAUSALI);
|
||||
|
||||
open_files(LF_CAUSALI, LF_RCAUSALI, LF_TABCOM, LF_TAB, 0);
|
||||
|
||||
_rel = new TRelation (LF_CAUSALI);
|
||||
_rcaus_rec = new TRecord_array(LF_RCAUSALI, RCA_NRIGA);
|
||||
|
||||
_msk = new TMask("cg0500a");
|
||||
_sheet = &(TSheet_field&)_msk->field(F_SHEET_GCS);
|
||||
|
||||
@ -922,13 +917,13 @@ bool TCaus_app::user_destroy()
|
||||
delete _rcaus_rec;
|
||||
delete _rcaus;
|
||||
delete _rel;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0500(int argc, char* argv[])
|
||||
{
|
||||
TCaus_app a;
|
||||
a.run(argc, argv, "Tabella causali");
|
||||
a.run(argc, argv, TR("Tabella causali"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@ -138,18 +138,18 @@ bool CGTTable_application::check_esercizio(TString& cod, TDate s1, TDate f1)
|
||||
{
|
||||
ret = FALSE;
|
||||
TString errstr(120);
|
||||
errstr << "Date esercizio errate: \n";
|
||||
errstr << TR("Date esercizio errate: \n");
|
||||
// build error string
|
||||
if (err & 0x01)
|
||||
errstr << "\n - l'esercizio si sovrappone ad altro gia' esistente";
|
||||
errstr << TR("\n - l'esercizio si sovrappone ad altro gia' esistente");
|
||||
if (err & 0x02)
|
||||
errstr << "\n - l'esercizio non e' contiguo ad esercizi successivi";
|
||||
errstr << TR("\n - l'esercizio non e' contiguo ad esercizi successivi");
|
||||
if (err & 0x04)
|
||||
errstr << "\n - l'esercizio non e' contiguo ad esercizi precedenti";
|
||||
errstr << TR("\n - l'esercizio non e' contiguo ad esercizi precedenti");
|
||||
|
||||
if (!(err & 0x01))
|
||||
{
|
||||
errstr << "\nSi desidera registrare ugualmente?";
|
||||
errstr << TR("\nSi desidera registrare ugualmente?");
|
||||
ret = yesno_box(errstr);
|
||||
}
|
||||
else error_box(errstr);
|
||||
@ -169,8 +169,9 @@ void CGTTable_application::check_sheet()
|
||||
|
||||
escarr.sort();
|
||||
|
||||
TArray_sheet as(-1,-1,70,20,"Esercizi contabili",
|
||||
"Codice|Inizio@10|Fine@10|Scarico@10|Chiusura@10|Note@20",
|
||||
TArray_sheet as(-1,-1,70,20,TR("Esercizi contabili"),
|
||||
FR("Codice|Inizio@10|Fine@10|Scarico@10|Chiusura@10|Note@20"),
|
||||
|
||||
|
||||
0x10);
|
||||
|
||||
@ -189,7 +190,11 @@ void CGTTable_application::check_sheet()
|
||||
tt->add(e.chiusura().string());
|
||||
|
||||
if (i > 0 && e.inizio() != ++s1)
|
||||
tt->add("*** non contiguo ***");
|
||||
{
|
||||
TString nc; nc << "***" << TR("non contiguo") << "***";
|
||||
tt->add(nc);
|
||||
}
|
||||
|
||||
else tt->add("");
|
||||
|
||||
s1 = e.fine();
|
||||
@ -213,9 +218,8 @@ int cg0600(int argc, char* argv[])
|
||||
{
|
||||
CGTTable_application a;
|
||||
|
||||
a.run(argc, argv, "Gestione tabelle contabili");
|
||||
a.run(argc, argv, TR("Gestione tabelle contabili"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
119
cg/cg1100.cpp
119
cg/cg1100.cpp
@ -203,7 +203,6 @@ void CG1100_application::postclose_print()
|
||||
{
|
||||
if (_tipo_stampa == senza_ana_bil)
|
||||
{
|
||||
delete _tpcon;
|
||||
delete _relt;
|
||||
}
|
||||
}
|
||||
@ -330,7 +329,7 @@ void CG1100_application::do_sort()
|
||||
|
||||
long last = cursor->items();
|
||||
|
||||
TProgind prg (last, "Elaborazione Piano dei Conti... Prego attendere", FALSE, TRUE, 30);
|
||||
TProgind prg (last, TR("Elaborazione Piano dei Conti... Prego attendere"), FALSE, TRUE, 30);
|
||||
|
||||
for ( *cursor = 0; cursor->pos() < last; ++(*cursor) )
|
||||
{
|
||||
@ -410,7 +409,7 @@ void CG1100_application::do_sort()
|
||||
|
||||
long last = cursor->items();
|
||||
|
||||
TProgind prg (last, "Elaborazione Piano dei Conti... Prego attendere", FALSE, TRUE, 30);
|
||||
TProgind prg (last, TR("Elaborazione Piano dei Conti... Prego attendere"), FALSE, TRUE, 30);
|
||||
|
||||
TString c1(12);
|
||||
|
||||
@ -481,7 +480,7 @@ void CG1100_application::prepara_pcon_temp()
|
||||
|
||||
long items = pcon.items();
|
||||
|
||||
TProgind prog (items,"Elaborazione Piano dei Conti... Prego attendere", FALSE, TRUE, 30);
|
||||
TProgind prog (items,TR("Elaborazione Piano dei Conti... Prego attendere"), FALSE, TRUE, 30);
|
||||
|
||||
for (pcon.first(); !pcon.eof(); pcon.next())
|
||||
{
|
||||
@ -649,7 +648,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row (_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTI D' ORDINE ATTIVI");
|
||||
set_row (_i++,FR("@0gCONTI D' ORDINE ATTIVI"));
|
||||
set_row (_i++,"@0g%c", app);
|
||||
stampa_classe = FALSE;
|
||||
}
|
||||
@ -658,7 +657,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row (_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gATTIVO");
|
||||
set_row (_i++,FR("@0gATTIVO"));
|
||||
set_row (_i++,"@0g%c", app);
|
||||
}
|
||||
|
||||
@ -666,7 +665,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row(_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTI D' ORDINE PASSIVI");
|
||||
set_row (_i++,FR("@0gCONTI D' ORDINE PASSIVI"));
|
||||
set_row(_i++,"@0g%c", app);
|
||||
stampa_classe = FALSE;
|
||||
}
|
||||
@ -675,7 +674,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row(_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gPASSIVO");
|
||||
set_row (_i++,FR("@0gPASSIVO"));
|
||||
set_row(_i++,"@0g%c", app);
|
||||
}
|
||||
|
||||
@ -683,7 +682,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row(_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTI D' ORDINE");
|
||||
set_row (_i++,FR("@0gCONTI D' ORDINE"));
|
||||
set_row(_i++,"@0g%c", app);
|
||||
stampa_classe = FALSE;
|
||||
}
|
||||
@ -692,7 +691,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row(_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTO ECONOMICO");
|
||||
set_row (_i++,FR("@0gCONTO ECONOMICO"));
|
||||
set_row(_i++,"@0g%c", app);
|
||||
}
|
||||
}
|
||||
@ -703,7 +702,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row (_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTI D' ORDINE ATTIVI");
|
||||
set_row (_i++,FR("@0gCONTI D' ORDINE ATTIVI"));
|
||||
set_row (_i++,"@0g%c", app);
|
||||
stampa_classe = FALSE;
|
||||
}
|
||||
@ -711,7 +710,7 @@ void CG1100_application::set_con_IV()
|
||||
{
|
||||
char app = ' ';
|
||||
set_row(_i++,"@0g%c", app);
|
||||
set_row (_i++,"@0gCONTI D' ORDINE PASSIVI");
|
||||
set_row (_i++,FR("@0gCONTI D' ORDINE PASSIVI"));
|
||||
set_row(_i++,"@0g%c", app);
|
||||
stampa_classe = FALSE;
|
||||
}
|
||||
@ -761,18 +760,6 @@ void CG1100_application::set_con_IV()
|
||||
_i++;
|
||||
}
|
||||
|
||||
/*void CG1100_application::setta_righe_descr(TParagraph_string* str)
|
||||
{
|
||||
const char* r;
|
||||
|
||||
while ((r = str->get()) != NULL)
|
||||
{
|
||||
set_row (_i,"@14g%s",r);
|
||||
_i++;
|
||||
}
|
||||
_i--;
|
||||
} */
|
||||
|
||||
void CG1100_application::set_senza_IV_ana()
|
||||
{
|
||||
int i;
|
||||
@ -853,9 +840,9 @@ void CG1100_application::set_con_ana()
|
||||
long sottoc = rec.get_long(PCN_SOTTOCONTO);
|
||||
bool stsobi = rec.get_bool(PCN_STSOTTAB);
|
||||
if (stsobi)
|
||||
val = "Si";
|
||||
val = TR("Si");
|
||||
else
|
||||
val = "No";
|
||||
val = TR("No");
|
||||
|
||||
descrizione = descrizione_codcbl(codcbl);
|
||||
descr = rec.get(PCN_DESCR);
|
||||
@ -891,30 +878,6 @@ void CG1100_application::set_con_ana()
|
||||
_i++;
|
||||
}
|
||||
|
||||
/*********
|
||||
void CG1100_application::set_senza_ana()
|
||||
{
|
||||
reset_row (1);
|
||||
|
||||
set_row (1, "$[b]@pn$[n] $[b]@pn$[n] $[b]@pn$[n]",
|
||||
FLD(LF_PCON, PCN_GRUPPO, "###"), FLD(LF_PCON,PCN_CONTO, "###"),
|
||||
FLD(LF_PCON, PCN_SOTTOCONTO, "######"));
|
||||
|
||||
set_row (1, "@16g@50s", FLD(LF_PCON,PCN_DESCR) );
|
||||
|
||||
set_row (1, "@69g@1s", FLD(LF_PCON, PCN_SEZIVD) );
|
||||
set_row (1, "@71g@1s", FLD(LF_PCON, PCN_LETTIVD) );
|
||||
set_row (1, "@73g#-8t", &_clivd);
|
||||
set_row (1, "@82g@pn", FLD(LF_PCON, PCN_NUMIVD, "@@") );
|
||||
|
||||
set_row (1, "@87g@pn", FLD(LF_PCON, PCN_INDBIL, "#") );
|
||||
set_row (1, "@92g@1s", FLD(LF_PCON, PCN_TMCF) );
|
||||
set_row (1, "@99g@f", FLD(LF_PCON, PCN_STSOTTBIL) );
|
||||
set_row (1, "@107g@f", FLD(LF_PCON, PCN_COMPENS) );
|
||||
set_row (1, "@120g@1s", FLD(LF_PCON, PCN_SEZSALDI) );
|
||||
}
|
||||
*********/
|
||||
|
||||
void CG1100_application::set_completa()
|
||||
{
|
||||
TRectype& rec = current_cursor()->curr();
|
||||
@ -1228,7 +1191,7 @@ bool CG1100_application::set_print(int)
|
||||
_data_stampa = _msk->get(F_DATA_STAMPA);
|
||||
|
||||
// scegli_cur();
|
||||
enable_link("Collegamento Piano dei conti: ", 'b');
|
||||
enable_link(TR("Collegamento Piano dei conti: "), 'b');
|
||||
set_multiple_link(TRUE);
|
||||
|
||||
_sez_stamp = ' ';
|
||||
@ -1241,7 +1204,7 @@ bool CG1100_application::set_print(int)
|
||||
|
||||
reset_footer();
|
||||
if (_tipo_stampa == con_ana_bil)
|
||||
set_footer(2,"* Conti collegati ma non trasferibili");
|
||||
set_footer(2,TR("* Conti collegati ma non trasferibili"));
|
||||
else
|
||||
set_footer(2,"");
|
||||
|
||||
@ -1307,60 +1270,60 @@ void CG1100_application::intesta (stampe tipo)
|
||||
s = ditte.get(NDT_RAGSOC);
|
||||
TString data = _data_stampa.string();
|
||||
|
||||
set_header (soh++, "Ditta : %ld %s@110gData@115g%s Pag. @#", firm, (const char *) s, (const char*) data);
|
||||
set_header (soh++, FR("Ditta : %ld %s@110gData@115g%s Pag. @#"), firm, (const char *) s, (const char*) data);
|
||||
|
||||
|
||||
set_header (soh,"@0gPIANO DEI CONTI");
|
||||
set_header (soh,FR("@0gPIANO DEI CONTI"));
|
||||
|
||||
switch (tipo)
|
||||
{
|
||||
case completa:
|
||||
set_header (soh++, "@20gStampa completa per IV direttiva");
|
||||
set_header (soh++, FR("@20gStampa completa per IV direttiva"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "Conto @59gSez. Classe@75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil.");
|
||||
set_header (soh++, "Sottoconto @16gDescrizione@61gIV dir.@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov.");
|
||||
set_header (soh++, FR("Conto @59gSez. Classe@75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil."));
|
||||
set_header (soh++, FR("Sottoconto @16gDescrizione@61gIV dir.@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov."));
|
||||
break;
|
||||
|
||||
case con_IV_direttiva:
|
||||
set_header (soh++, "@20gStampa conti riclassificati per IV direttiva");
|
||||
set_header (soh++, FR("@20gStampa conti riclassificati per IV direttiva"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "@58gCodici Piano@116gSez. e Classe");
|
||||
set_header (soh++, "Classe@14gDescrizione@58gdei Conti @73gDescrizione@116gdi segno opposto");
|
||||
set_header (soh++, FR("@58gCodici Piano@116gSez. e Classe"));
|
||||
set_header (soh++, FR("Classe@14gDescrizione@58gdei Conti @73gDescrizione@116gdi segno opposto"));
|
||||
|
||||
break;
|
||||
|
||||
case senza_IV_direttiva:
|
||||
set_header (soh++, "@20gStampa conti non collegati per IV direttiva");
|
||||
set_header (soh++, FR("@20gStampa conti non collegati per IV direttiva"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "Conto @75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil.");
|
||||
set_header (soh++, "Sottoconto @16gDescrizione@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov.");
|
||||
set_header (soh++, FR("Conto @75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil."));
|
||||
set_header (soh++, FR("Sottoconto @16gDescrizione@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov."));
|
||||
break;
|
||||
|
||||
case completa_bil:
|
||||
set_header (soh++, "@20gStampa completa per analisi di bilancio");
|
||||
set_header (soh++, FR("@20gStampa completa per analisi di bilancio"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "Conto@60gCod.tabella@75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil.");
|
||||
set_header (soh++, "Sottoconto @16gDescrizione@60gAnalis.bil.@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov.");
|
||||
set_header (soh++, FR("Conto@60gCod.tabella@75gTipo@86gNo Dettaglio@104gT@107gSpesa@118gDet.alleg.bil."));
|
||||
set_header (soh++, FR("Sottoconto @16gDescrizione@60gAnalis.bil.@75gConto@81gC/F@86gBilancio@97gComp.@104gA@107gRicavo@114gSez@118gSot.con * Mov."));
|
||||
break;
|
||||
|
||||
case con_ana_bil:
|
||||
set_header (soh++, "@20gStampa conti riclassificati per analisi di bilancio");
|
||||
set_header (soh++, FR("@20gStampa conti riclassificati per analisi di bilancio"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "Codice @62gCodici Piano@118gDet.alleg.bil.");
|
||||
set_header (soh++, "Tabella@11gDescrizione@62gdei Conti @78gDescrizione@118gSot.con * Mov.");
|
||||
set_header (soh++, FR("Codice @62gCodici Piano@118gDet.alleg.bil."));
|
||||
set_header (soh++, FR("Tabella@11gDescrizione@62gdei Conti @78gDescrizione@118gSot.con * Mov."));
|
||||
break;
|
||||
|
||||
case senza_ana_bil:
|
||||
set_header (soh++, "@20gStampa conti non collegati per analisi di bilancio");
|
||||
set_header (soh++, FR("@20gStampa conti non collegati per analisi di bilancio"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, "Conto@74gTipo@86gNo Dettaglio@107gSpesa@114gT@116gDett.alleg.bil.");
|
||||
set_header (soh++, "Sottoconto@16gDescrizione@74gConto@81gC/F@86gBilancio@96gCompensaz.@107gRicavo@114gA@116gSot.con * Movim.");
|
||||
set_header (soh++, FR("Conto@74gTipo@86gNo Dettaglio@107gSpesa@114gT@116gDett.alleg.bil."));
|
||||
set_header (soh++, FR("Sottoconto@16gDescrizione@74gConto@81gC/F@86gBilancio@96gCompensaz.@107gRicavo@114gA@116gSot.con * Movim."));
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1431,13 +1394,7 @@ bool CG1100_application::user_create()
|
||||
TCursor *cursor = new TCursor (_rel);
|
||||
|
||||
_cur_c1 = add_cursor (cursor);
|
||||
|
||||
// _tpcon = new TIsamtempfile (LF_PCON, "ab", TRUE);
|
||||
// _relt = new TRelation (_tpcon);
|
||||
// TCursor *tcursor = new TCursor (_relt);
|
||||
|
||||
// _cur_c3 = add_cursor (tcursor);
|
||||
|
||||
|
||||
_rec = new TRectype (cursor->curr());
|
||||
|
||||
_pcont_reclen = _rec->len();
|
||||
@ -1447,8 +1404,6 @@ bool CG1100_application::user_create()
|
||||
|
||||
add_file(LF_PCON);
|
||||
|
||||
//set_print_zero();
|
||||
|
||||
_tipo_stampa = completa;
|
||||
_salto_pag = FALSE;
|
||||
_bil = new bil_ivd;
|
||||
@ -1473,6 +1428,6 @@ bool CG1100_application::user_destroy()
|
||||
int cg1100(int argc, char* argv[])
|
||||
{
|
||||
CG1100_application a;
|
||||
a.run(argc, argv, "Stampa Piano dei Conti");
|
||||
a.run(argc, argv, TR("Stampa Piano dei Conti"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -46,12 +46,12 @@ BEGIN
|
||||
HELP "Indicare se si desidera un salto pagina ogni volta che cambia il gruppo"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
144
cg/cg1200.cpp
144
cg/cg1200.cpp
@ -482,66 +482,52 @@ void TPrintclifo_app::header_elenco()
|
||||
if (ditte.bad()) ditte.zero();
|
||||
TString s(ditte.get(NDT_RAGSOC));
|
||||
|
||||
set_header(j, "Ditta %ld %s@125gPag @#", firm, (const char*) s);
|
||||
set_header(j++, "@102gData %s", (const char*) _data_stampa);
|
||||
/*
|
||||
if (_pr_what == both)
|
||||
{
|
||||
current_cursor()->save_status();
|
||||
++(*current_cursor());
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
--(*current_cursor());
|
||||
current_cursor()->restore_status();
|
||||
}
|
||||
else
|
||||
*/
|
||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
|
||||
if (tipocf == 'C')
|
||||
var = "Clienti";
|
||||
var = TR("Clienti");
|
||||
else
|
||||
if (tipocf == 'F')
|
||||
var = "Fornitori";
|
||||
var = TR("Fornitori");
|
||||
|
||||
set_header(j, "Elenco %s",(const char*) var);
|
||||
set_header(j, FR("Elenco %s"),(const char*) var);
|
||||
|
||||
if (_sort == 1)
|
||||
var = "Ordine di codice";
|
||||
var = TR("Ordine di codice");
|
||||
else
|
||||
var = "Ordine alfabetico";
|
||||
var = TR("Ordine alfabetico");
|
||||
|
||||
set_header(j, "@30g%s", (const char*) var);
|
||||
|
||||
if (_mov_only)
|
||||
set_header(j, "@55gSolo i movimentati");
|
||||
set_header(j, FR("@55gSolo i movimentati"));
|
||||
|
||||
ultimo_codice(_tipocf);
|
||||
|
||||
set_header(j++, "@102gUltimo cod.utilizzato %ld" , _codice);
|
||||
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
|
||||
|
||||
if (_pr_what != both)
|
||||
{
|
||||
if (_cod_from.not_empty() || _cod_to.not_empty())
|
||||
{
|
||||
set_header(j, "Estremi selezione");
|
||||
set_header(j, TR("Estremi selezione"));
|
||||
if (_cod_from.not_empty())
|
||||
set_header(j, " da %s", (const char*) _cod_from);
|
||||
set_header(j, FR(" da %s"), (const char*) _cod_from);
|
||||
if (_cod_to.not_empty())
|
||||
if (_sort == 1)
|
||||
set_header(j, " a %s", (const char*) _cod_to);
|
||||
else
|
||||
set_header(j, " a %s", (const char*) _cod_to);
|
||||
set_header(j, FR(" a %s"), (const char*) _cod_to);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
set_header(j++, " Codice Ragione sociale");
|
||||
set_header(j++, "@9gIndirizzo@56gC.A.P.@63gLocalita'");
|
||||
set_header(j++, "@9gTelefoni@90gFAX @115gTelex");
|
||||
set_header(j++, "@9gIndirizzo posta elettronica");
|
||||
set_header(j++, "@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale");
|
||||
set_header(j++, "@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770");
|
||||
set_header(j++, TR(" Codice Ragione sociale"));
|
||||
set_header(j++, FR("@9gIndirizzo@56gC.A.P.@63gLocalita'"));
|
||||
set_header(j++, FR("@9gTelefoni@90gFAX @115gTelex"));
|
||||
set_header(j++, FR("@9gIndirizzo posta elettronica"));
|
||||
set_header(j++, FR("@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale"));
|
||||
set_header(j++, FR("@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770"));
|
||||
set_header(j, (const char *)(TString(132).fill('-')));
|
||||
}
|
||||
|
||||
@ -559,85 +545,51 @@ void TPrintclifo_app::header_rubriche()
|
||||
ditte.read();
|
||||
if (ditte.bad()) ditte.zero();
|
||||
TString s(ditte.get(NDT_RAGSOC));
|
||||
set_header(j, "Ditta %ld %s@125gPag @#", firm, (const char*) s);
|
||||
set_header(j++, "@102gData %s", (const char*) _data_stampa);
|
||||
/*
|
||||
if (_pr_what == both)
|
||||
{
|
||||
current_cursor()->save_status();
|
||||
++(*current_cursor());
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
--(*current_cursor());
|
||||
current_cursor()->restore_status();
|
||||
}
|
||||
else
|
||||
*/
|
||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||
|
||||
if (tipocf == 'C')
|
||||
var = "Clienti";
|
||||
var = TR("Clienti");
|
||||
else
|
||||
if (tipocf == 'F')
|
||||
var = "Fornitori";
|
||||
var = TR("Fornitori");
|
||||
|
||||
set_header(j, "Rubrica %s",(const char*) var);
|
||||
set_header(j, FR("Rubrica %s"),(const char*) var);
|
||||
|
||||
if (_sort == 1)
|
||||
var = "Ordine di codice";
|
||||
var = TR("Ordine di codice");
|
||||
else
|
||||
var = "Ordine alfabetico";
|
||||
var = TR("Ordine alfabetico");
|
||||
|
||||
set_header(j, "@30g%s", (const char*) var);
|
||||
|
||||
if (_mov_only)
|
||||
set_header(j, "@55gSolo i movimentati");
|
||||
set_header(j, FR("@55gSolo i movimentati"));
|
||||
|
||||
ultimo_codice(_tipocf);
|
||||
|
||||
set_header(j++, "@102gUltimo cod.utilizzato %ld" , _codice);
|
||||
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
|
||||
|
||||
if (_pr_what != both)
|
||||
{
|
||||
if (_cod_from.not_empty() || _cod_to.not_empty())
|
||||
{
|
||||
set_header(j, "Estremi selezione");
|
||||
set_header(j, TR("Estremi selezione"));
|
||||
if (_cod_from.not_empty())
|
||||
set_header(j, " da %s", (const char*) _cod_from);
|
||||
set_header(j, FR(" da %s"), (const char*) _cod_from);
|
||||
if (_cod_to.not_empty())
|
||||
if (_sort == 1)
|
||||
set_header(j, " a %s", (const char*) _cod_to);
|
||||
else
|
||||
set_header(j, " a %s", (const char*) _cod_to);
|
||||
set_header(j, FR(" a %s"), (const char*) _cod_to);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
set_header(j++, " Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv.");
|
||||
set_header(j++, "@9gPartita iva@25gTelefoni");
|
||||
set_header(j++, FR(" Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv."));
|
||||
set_header(j++, FR("@9gPartita iva@25gTelefoni"));
|
||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||
}
|
||||
|
||||
/*
|
||||
void TPrintclifo_app::set_elenco()
|
||||
{
|
||||
// body
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
|
||||
set_row(2,"@9g#t@56g@s@63g#t @s @s", &_indir, FLD(LF_CLIFO, CLI_CAPCF),
|
||||
&_localita, FLD(-COMRF_ALIAS,COM_DENCOM), FLD(-COMRF_ALIAS,COM_PROVCOM));
|
||||
set_row(3,"@9g#t@90g#t@115g#t", &_telefono, &_fax, &_telex);
|
||||
set_row(4,"@9g@s @s@45g#t@56g#t@69g#t",FLD(-COMNASC_ALIAS, COM_DENCOM),
|
||||
FLD(-COMNASC_ALIAS, COM_PROVCOM), &_datanas, &_piva,&_cofi);
|
||||
set_row(5,"@9g@3n @3n @6n #t@56g@n #t@90g#t",FLD(LF_CLIFO,CLI_GRUPPORIC),
|
||||
FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC),&_d_c_ric,
|
||||
FLD(LF_CLIFO, CLI_CODALLEG), &_d_alleg, &_cpercip);
|
||||
|
||||
for(int i = 0; i < _interline; i++)
|
||||
set_row(i+5,"");
|
||||
}
|
||||
*/
|
||||
//modifica del 27/04/1995
|
||||
void TPrintclifo_app::set_elenco()
|
||||
{
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||
@ -729,17 +681,17 @@ void TPrintclifo_app::set_vendite(int f, int c)
|
||||
/////////////////////////////////
|
||||
// Prints CFVEN information //
|
||||
/////////////////////////////////
|
||||
set_header(1, "Ditta %ld %s @102gData @<@125gPag @#", firm, (const char*) s);
|
||||
set_header(2, "Dati Clienti/Fornitori per Vendite");
|
||||
set_header(1, FR("Ditta %ld %s @102gData @<@125gPag @#"), firm, (const char*) s);
|
||||
set_header(2, FR("Dati Clienti/Fornitori per Vendite"));
|
||||
set_header(3, (const char *)(TString(132).fill('-')));
|
||||
set_header(4," Codice Ragione sociale");
|
||||
set_header(5,"@9gNote Cli/For @25gLegale per contenz. @46gCat.Finanziaria @63gCat.Vendita @76gAss.Fiscale @93gZona @101gAgente @112gProvvigione");
|
||||
set_header(6,"@9gCod.Listino @25gCod. Magazzino @46gSpese da Addeb. @63gBolli @76gSpese incasso" );
|
||||
set_header(7,"@9gCli/For ass. @25gCod. Meccanografico @46gGest. Contratto @63gRid. Iva @76gUltimo sollecito @93gUltimo estr. conto @112gTitolo onorifico");
|
||||
set_header(8,"@9gSconto @46gSconto Cliente@63gFatt. Sosp. @76gVs. Lettera Esenzione @112gNs. Lettera Esenz.");
|
||||
set_header(9,"@9gCod. ABI p.e. @25gCod. CAB p.e. @46gInd. Effetti @63gEmiss. Eff. @76gImporto Minimo @93gEffetti non acc. @112gScadenza effetti");
|
||||
set_header(10,"@9gInd.Documento @25gInd. Spedizione @46gNote Documento @63gCod.Mezzo @76gPorto @93gVettori");
|
||||
set_header(11,"@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione");
|
||||
set_header(4,FR(" Codice Ragione sociale"));
|
||||
set_header(5,FR("@9gNote Cli/For @25gLegale per contenz. @46gCat.Finanziaria @63gCat.Vendita @76gAss.Fiscale @93gZona @101gAgente @112gProvvigione"));
|
||||
set_header(6,FR("@9gCod.Listino @25gCod. Magazzino @46gSpese da Addeb. @63gBolli @76gSpese incasso") );
|
||||
set_header(7,FR("@9gCli/For ass. @25gCod. Meccanografico @46gGest. Contratto @63gRid. Iva @76gUltimo sollecito @93gUltimo estr. conto @112gTitolo onorifico"));
|
||||
set_header(8,FR("@9gSconto @46gSconto Cliente@63gFatt. Sosp. @76gVs. Lettera Esenzione @112gNs. Lettera Esenz."));
|
||||
set_header(9,FR("@9gCod. ABI p.e. @25gCod. CAB p.e. @46gInd. Effetti @63gEmiss. Eff. @76gImporto Minimo @93gEffetti non acc. @112gScadenza effetti"));
|
||||
set_header(10,FR("@9gInd.Documento @25gInd. Spedizione @46gNote Documento @63gCod.Mezzo @76gPorto @93gVettori"));
|
||||
set_header(11,FR("@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"));
|
||||
set_header(12, (const char *)(TString(132).fill('-')));
|
||||
|
||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||
@ -794,11 +746,11 @@ void TPrintclifo_app::set_vendite(int f, int c)
|
||||
{ // Test whether there are any Addresses. If so, prints
|
||||
// the header.
|
||||
set_row(9,"");
|
||||
set_row(10,"@9gIndirizzi di Spedizione");
|
||||
set_row(10,FR("@9gIndirizzi di Spedizione"));
|
||||
set_row(11,"@9g%t",rigs);
|
||||
set_row(12,"@9gCodice @17gRagione Sociale");
|
||||
set_row(13,"@17gIndirizzo @65gC.A.P. @72gLocalita");
|
||||
set_row(14,"@17gTelefono @60gFax @102gRiduzione IVA");
|
||||
set_row(12,FR("@9gCodice @17gRagione Sociale"));
|
||||
set_row(13,FR("@17gIndirizzo @65gC.A.P. @72gLocalita"));
|
||||
set_row(14,FR("@17gTelefono @60gFax @102gRiduzione IVA"));
|
||||
set_row(15,"@9g%t",rigs);
|
||||
} else
|
||||
for (int i=0;i<_interline;i++)
|
||||
@ -899,7 +851,7 @@ bool TPrintclifo_app::set_print(int)
|
||||
if (_pr_type != etichette)
|
||||
{
|
||||
set_multiple_link(TRUE);
|
||||
enable_link("Collegamento clienti e fornitori : ", 'b');
|
||||
enable_link(TR("Collegamento clienti e fornitori : "), 'b');
|
||||
}
|
||||
|
||||
_sort = mask.get_int(RDB_CG12_SORT);
|
||||
@ -1026,6 +978,6 @@ bool TPrintclifo_app::user_destroy()
|
||||
int cg1200(int argc, char* argv[])
|
||||
{
|
||||
TPrintclifo_app app;
|
||||
app.run(argc, argv, "Stampa Clienti/Fornitori");
|
||||
app.run(argc, argv, TR("Stampa Clienti/Fornitori"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ void TAgg_attiv::main_loop()
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
elabora_mov();
|
||||
message_box("Aggiornamento completato");
|
||||
message_box(TR("Aggiornamento completato"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ void TAgg_attiv::elabora_mov()
|
||||
cursor = 0L;
|
||||
const long nitems = cursor.items();
|
||||
|
||||
TProgind p(nitems ? nitems : 1, "Aggiornamento in corso..." , TRUE, TRUE, 70);
|
||||
TProgind p(nitems ? nitems : 1, TR("Aggiornamento in corso...") , TRUE, TRUE, 70);
|
||||
|
||||
for (; cursor.pos() < cursor.items(); ++cursor)
|
||||
{
|
||||
@ -116,43 +116,43 @@ int cg1300(int argc, char* argv[])
|
||||
case 'A':
|
||||
{
|
||||
TAgg_attiv a;
|
||||
a.run(argc, argv, "Aggiornamento tipo attivita' su movimenti iva");
|
||||
a.run(argc, argv, TR("Aggiornamento tipo attivita' su movimenti iva"));
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
{
|
||||
TAgg_codatt a;
|
||||
a.run(argc, argv,"Aggiornamento codice attivita'");
|
||||
a.run(argc, argv,TR("Aggiornamento codice attivita'"));
|
||||
}
|
||||
break;
|
||||
case 'D':
|
||||
{
|
||||
TAgg_datacomp a;
|
||||
a.run(argc, argv,"Aggiornamento data competenza");
|
||||
a.run(argc, argv,TR("Aggiornamento data competenza"));
|
||||
}
|
||||
break;
|
||||
case 'E':
|
||||
{
|
||||
TAgg_codes a;
|
||||
a.run(argc, argv,"Aggiornamento codice esercizio");
|
||||
a.run(argc, argv,TR("Aggiornamento codice esercizio"));
|
||||
}
|
||||
break;
|
||||
case 'I':
|
||||
{
|
||||
TAgg_opintra a;
|
||||
a.run(argc, argv, "Aggiornamento flag op. intracomunitarie");
|
||||
a.run(argc, argv, TR("Aggiornamento flag op. intracomunitarie"));
|
||||
}
|
||||
break;
|
||||
case 'P':
|
||||
{
|
||||
TAgg_nprot a;
|
||||
a.run(argc, argv,"Rinumerazione numero di protocollo");
|
||||
a.run(argc, argv,TR("Rinumerazione numero di protocollo"));
|
||||
}
|
||||
break;
|
||||
case 'T':
|
||||
{
|
||||
TAgg_tconto a;
|
||||
a.run(argc, argv, "Aggiornamento tipo conto"); // cg1302
|
||||
a.run(argc, argv, TR("Aggiornamento tipo conto")); // cg1302
|
||||
}
|
||||
break;
|
||||
case 'Z':
|
||||
|
||||
@ -30,7 +30,7 @@ bool TAgg_opintra::menu(MENU_TAG m)
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
look_mov();
|
||||
message_box("Aggiornamento completato");
|
||||
message_box(TR("Aggiornamento completato"));
|
||||
//return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@ -51,7 +51,7 @@ void TAgg_opintra::look_mov()
|
||||
cursor = 0L;
|
||||
const long nitems = cursor.items();
|
||||
|
||||
TProgind p(nitems ? nitems : 1, "Aggiornamento in corso..." , TRUE, TRUE, 70);
|
||||
TProgind p(nitems ? nitems : 1, TR("Aggiornamento in corso...") , TRUE, TRUE, 70);
|
||||
|
||||
for (; cursor.pos() < cursor.items(); ++cursor)
|
||||
{
|
||||
@ -60,7 +60,6 @@ void TAgg_opintra::look_mov()
|
||||
if (reg.empty()) continue;
|
||||
|
||||
const TDate& datareg = mov.get_date(MOV_DATAREG);
|
||||
// if (datareg < "01-01-93") continue;
|
||||
if (datareg.year() < 1993) continue; // Meglio cosi'
|
||||
|
||||
const TString16 codcaus(mov.get(MOV_CODCAUS));
|
||||
|
||||
@ -14,21 +14,6 @@
|
||||
|
||||
const int TAgg_tconto::look_reg (const char* cod, int anno)
|
||||
{
|
||||
/*
|
||||
TTable tab_reg("REG");
|
||||
TString codtab;
|
||||
codtab.format("%4d%-3s", anno, cod);
|
||||
int tipo_reg;
|
||||
|
||||
tab_reg.zero();
|
||||
tab_reg.put("CODTAB", codtab);
|
||||
if (tab_reg.read() == NOERR)
|
||||
tipo_reg = tab_reg.get_int("I0");
|
||||
else
|
||||
tipo_reg = 0;
|
||||
|
||||
return tipo_reg;
|
||||
*/
|
||||
TString16 codtab;
|
||||
codtab.format("%4d%-3s", anno, cod);
|
||||
int tipo_reg = cache().get("REG", codtab).get_int("I0");
|
||||
@ -78,7 +63,7 @@ bool TAgg_tconto::set_print(int)
|
||||
|
||||
void TAgg_tconto::postclose_print()
|
||||
{
|
||||
message_box("Aggiornamento tipo conto completato:\nE' necessario ricalcolare la liquidazione.");
|
||||
message_box(TR("Aggiornamento tipo conto completato:\nE' necessario ricalcolare la liquidazione."));
|
||||
}
|
||||
|
||||
bool TAgg_tconto::preprocess_page(int file,int counter)
|
||||
@ -112,7 +97,7 @@ bool TAgg_tconto::preprocess_page(int file,int counter)
|
||||
{
|
||||
if (tc.sospeso())
|
||||
{
|
||||
set_row(1, "@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto sospeso **",
|
||||
set_row(1, FR("@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto sospeso **"),
|
||||
numreg, nrigimp, gruppo, conto, sottoconto);
|
||||
return TRUE;
|
||||
}
|
||||
@ -129,7 +114,7 @@ bool TAgg_tconto::preprocess_page(int file,int counter)
|
||||
}
|
||||
else
|
||||
{
|
||||
set_row(1, "@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto inesistente **",
|
||||
set_row(1, FR("@4g%7ld@23g%3d@31g%3d@37g%3d@45g%6ld ** Conto inesistente **"),
|
||||
numreg, nrigimp, gruppo, conto, sottoconto);
|
||||
return TRUE;
|
||||
}
|
||||
@ -152,7 +137,7 @@ void TAgg_tconto::setta_intestazione()
|
||||
|
||||
reset_header();
|
||||
|
||||
sep << "Ditta " << get_firm();
|
||||
sep << TR("Ditta ") << get_firm();
|
||||
sep << " " << ragsoc;
|
||||
|
||||
sep.left_just(132);
|
||||
@ -160,14 +145,14 @@ void TAgg_tconto::setta_intestazione()
|
||||
set_header (soh++, (const char*) sep);
|
||||
|
||||
sep = "";
|
||||
sep << "Data @> Pag. @#";
|
||||
sep << FR("Data @> Pag. @#");
|
||||
sep.right_just(127);
|
||||
|
||||
sep.overwrite ("AGGIORNAMENTO TIPO CONTO SU MOVIMENTI IVA - Lista errori");
|
||||
sep.overwrite (TR("AGGIORNAMENTO TIPO CONTO SU MOVIMENTI IVA - Lista errori"));
|
||||
set_header (soh++, (const char*)sep);
|
||||
sep.fill('-');
|
||||
set_header (soh++, (const char *) sep);
|
||||
set_header (soh++, "Numero Registrazione Riga Gruppo Conto Sottoconto");
|
||||
set_header (soh++, TR("Numero Registrazione Riga Gruppo Conto Sottoconto"));
|
||||
set_header (soh++, (const char *) sep);
|
||||
set_header (soh, "");
|
||||
}
|
||||
|
||||
@ -28,12 +28,6 @@ void TAgg_nprot::main_loop()
|
||||
{
|
||||
TMask msk("cg1300b");
|
||||
|
||||
/*
|
||||
TConfig conf(CONFIG_DITTA);
|
||||
int annoiva = conf.get_int("AnLiIv");
|
||||
msk.set(F_ANNO, annoiva);
|
||||
*/
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
_anno = msk.get_int(F_ANNO);
|
||||
@ -51,7 +45,7 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
TString16 s; s.format("%04d%s", _anno, (const char*)_reg);
|
||||
reg.put("CODTAB", s);
|
||||
if (reg.read() != NOERR)
|
||||
return error_box("Impossibile leggere il registro %s del %d",
|
||||
return error_box(FR("Impossibile leggere il registro %s del %d"),
|
||||
(const char*)_reg, _anno);
|
||||
|
||||
TRelation rel (LF_MOV);
|
||||
@ -65,7 +59,7 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
|
||||
const long nitems = cursor.items();
|
||||
if (nitems == 0)
|
||||
return warning_box("Non ci sono movimenti da rinumerare");
|
||||
return warning_box(TR("Non ci sono movimenti da rinumerare"));
|
||||
|
||||
TConfig cnf(CONFIG_DITTA,"cg");
|
||||
const bool sc_enabled = cnf.get_bool("GesSal");
|
||||
@ -73,7 +67,7 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
cursor.freeze();
|
||||
cursor = 0L;
|
||||
|
||||
TProgind p(nitems, "Elaborazione in corso..." , FALSE, TRUE);
|
||||
TProgind p(nitems, TR("Elaborazione in corso...") , FALSE, TRUE);
|
||||
|
||||
long protiva, uprotiva;
|
||||
|
||||
@ -111,7 +105,7 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
if (last_prot > 0 && mode == 'N')
|
||||
{
|
||||
if (protiva != last_prot && uprotiva != last_prot) //sono alla fine del file
|
||||
return error_box("Non esiste la registrazione con protocollo %ld:\nrinumerazione non avvenuta", last_prot);
|
||||
return error_box(TR("Non esiste la registrazione con protocollo %ld:\nrinumerazione non avvenuta"), last_prot);
|
||||
++cursor;
|
||||
}
|
||||
}
|
||||
@ -149,6 +143,6 @@ bool TAgg_nprot::rinumera_prot(char mode, long last_prot)
|
||||
reg.put("I5", nprot + dprot);
|
||||
reg.rewrite();
|
||||
|
||||
return message_box("Rinumerazione numero protocollo completata");
|
||||
return message_box(TR("Rinumerazione numero protocollo completata"));
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ bool TAgg_codatt::menu(MENU_TAG m)
|
||||
|
||||
while (msk.run() == K_ENTER)
|
||||
{
|
||||
pri = new TProgind(2,"Aggiornamento in corso...",FALSE,TRUE,50);
|
||||
pri = new TProgind(2,TR("Aggiornamento in corso..."),FALSE,TRUE,50);
|
||||
_pass = msk.get_bool(F_PASS);
|
||||
if (_pass)
|
||||
{
|
||||
@ -62,7 +62,7 @@ bool TAgg_codatt::menu(MENU_TAG m)
|
||||
//msk.reset(F_DA);
|
||||
//msk.reset(F_A);
|
||||
delete pri;
|
||||
message_box("Aggiornamento codice attivita' completato");
|
||||
message_box(TR("Aggiornamento codice attivita' completato"));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@ -128,11 +128,6 @@ void TAgg_codatt::cancella_rec()
|
||||
continue;
|
||||
pla.remove();
|
||||
}
|
||||
/***
|
||||
TTable rmb("RMB");
|
||||
for (rmb.first(); !rmb.eof(); rmb.next())
|
||||
rmb.remove();
|
||||
***/
|
||||
}
|
||||
|
||||
void TAgg_codatt::aggiorna_att(const char* nome)
|
||||
|
||||
@ -47,7 +47,7 @@ void TAgg_codes::calcola_codes()
|
||||
|
||||
long nrecs = (long) mov.eod();
|
||||
int err = NOERR;
|
||||
TProgind p(nrecs, "Aggiornamento in corso...", TRUE, TRUE, 100);
|
||||
TProgind p(nrecs, TR("Aggiornamento in corso..."), TRUE, TRUE, 100);
|
||||
TRecord_array righe(LF_RMOV,RMV_NUMRIG);
|
||||
TRecord_array righeiva(LF_RMOVIVA,RMI_NUMRIG);
|
||||
TRectype riga(LF_RMOV);
|
||||
@ -83,8 +83,7 @@ void TAgg_codes::calcola_codes()
|
||||
}
|
||||
}
|
||||
if (err != NOERR)
|
||||
warning_box("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura",err);
|
||||
warning_box(FR("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura"),err);
|
||||
else
|
||||
message_box("Aggiornamento codice esercizio completata. Modificati %ld movimenti.\n"
|
||||
"E' necessario procedere col ricalcolo saldi", modified_recs);
|
||||
message_box(FR("Aggiornamento codice esercizio completata. Modificati %ld movimenti.\nE' necessario procedere col ricalcolo saldi"), modified_recs);
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ void TAgg_datacomp::aggiorna_datacomp()
|
||||
TDate datacomp;
|
||||
TDate datareg;
|
||||
int err = NOERR;
|
||||
TProgind p(nrecs, "Aggiornamento in corso...", TRUE, TRUE, 100);
|
||||
TProgind p(nrecs, TR("Aggiornamento in corso..."), TRUE, TRUE, 100);
|
||||
|
||||
for (mov.first(); !mov.eof() && err == NOERR; mov.next())
|
||||
{
|
||||
@ -50,7 +50,7 @@ void TAgg_datacomp::aggiorna_datacomp()
|
||||
}
|
||||
|
||||
if (err != NOERR)
|
||||
warning_box("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura",err);
|
||||
warning_box(FR("Aggiornamento codice esercizio interrotta. Rilevato errore %d in riscrittura"),err);
|
||||
else
|
||||
message_box("Aggiornamento data competenza completata. Modificati %ld movimenti.",modified_recs);
|
||||
message_box(FR("Aggiornamento data competenza completata. Modificati %ld movimenti."),modified_recs);
|
||||
}
|
||||
|
||||
@ -24,7 +24,7 @@ for (int _e##isamfile = isamfile.first(); \
|
||||
|
||||
#endif
|
||||
|
||||
const char* const APPNAME = "Righe prima nota errate";
|
||||
const char* const APPNAME = TR("Righe prima nota errate");
|
||||
|
||||
class TElimina_zoppi : public TSkeleton_application
|
||||
{
|
||||
@ -44,8 +44,6 @@ protected:
|
||||
static bool select_handler(TMask_field& f, KEY k);
|
||||
|
||||
protected:
|
||||
void open_files(int logicnum, ...);
|
||||
TLocalisamfile& file(int num);
|
||||
const char* decode(int num, const char* key, const char* field);
|
||||
virtual void main_loop();
|
||||
};
|
||||
@ -57,10 +55,10 @@ bool TElimina_zoppi::firm_handler(TMask_field& f, KEY k)
|
||||
bool ok = TRUE;
|
||||
if (k == K_F9)
|
||||
{
|
||||
TArray_sheet sheet(-1, -1, 70, 20, "Scelta ditta", "Codice|Ragione Sociale@50");
|
||||
TArray_sheet sheet(-1, -1, 70, 20, TR("Scelta ditta"), HR("Codice|Ragione Sociale@50"));
|
||||
TToken_string row;
|
||||
|
||||
TLocalisamfile& ditte = app().file(LF_NDITTE);
|
||||
TLocalisamfile ditte(LF_NDITTE);
|
||||
|
||||
FOR_EACH_FILE_RECORD(ditte)
|
||||
{
|
||||
const long cod = ditte.get_long(NDT_CODDITTA);
|
||||
@ -88,35 +86,12 @@ bool TElimina_zoppi::firm_handler(TMask_field& f, KEY k)
|
||||
if (ok)
|
||||
prefix().set_codditta(cod);
|
||||
else
|
||||
f.error_box("La ditta %05ld non e' attivata per la contabilita'", cod);
|
||||
f.error_box(FR("La ditta %05ld non e' attivata per la contabilita'"), cod);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TElimina_zoppi::open_files(int logicnum, ...)
|
||||
{
|
||||
va_list marker;
|
||||
va_start(marker, logicnum);
|
||||
while (logicnum > 0)
|
||||
{
|
||||
CHECKD(_files.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
|
||||
_files.add(new TLocalisamfile(logicnum), logicnum);
|
||||
logicnum = va_arg(marker, int);
|
||||
}
|
||||
}
|
||||
|
||||
TLocalisamfile& TElimina_zoppi::file(int num)
|
||||
{
|
||||
TLocalisamfile* isam = (TLocalisamfile*)_files.objptr(num);
|
||||
if (isam == NULL)
|
||||
{
|
||||
open_files(num, 0);
|
||||
isam = (TLocalisamfile*)_files.objptr(num);
|
||||
}
|
||||
return *isam;
|
||||
}
|
||||
|
||||
const char* TElimina_zoppi::decode(int num, const char* key, const char* field)
|
||||
{
|
||||
TDecoder* dec = (TDecoder*)_decoders.objptr(num);
|
||||
@ -131,16 +106,16 @@ const char* TElimina_zoppi::decode(int num, const char* key, const char* field)
|
||||
bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
TLocalisamfile& mov = app().file(LF_MOV);
|
||||
TLocalisamfile& row = app().file(lf_rmov);
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
TLocalisamfile row(lf_rmov);
|
||||
|
||||
TString msg;
|
||||
msg << "Controllo righe ";
|
||||
msg << TR("Controllo righe ");
|
||||
switch (lf_rmov)
|
||||
{
|
||||
case LF_RMOV : msg << "contabili"; break;
|
||||
case LF_RMOVIVA: msg << "iva"; break;
|
||||
case LF_PARTITE: msg << "saldaconto"; break;
|
||||
case LF_RMOV : msg << TR("contabili"); break;
|
||||
case LF_RMOVIVA: msg << TR("iva"); break;
|
||||
case LF_PARTITE: msg << TR("saldaconto"); break;
|
||||
default: CHECKD(0, "Invalid row file %d", lf_rmov); break;
|
||||
}
|
||||
msg << ": 0";
|
||||
@ -258,15 +233,15 @@ bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
|
||||
bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
TLocalisamfile& pagsca = app().file(lf_pagsca);
|
||||
TLocalisamfile pagsca(lf_pagsca);
|
||||
long found = 0;
|
||||
|
||||
TString msg;
|
||||
msg << "Controllo righe ";
|
||||
msg << TR("Controllo righe ");
|
||||
switch (lf_pagsca)
|
||||
{
|
||||
case LF_SCADENZE: msg << "scadenze"; break;
|
||||
case LF_PAGSCA : msg << "pagamento"; break;
|
||||
case LF_SCADENZE: msg << TR("scadenze"); break;
|
||||
case LF_PAGSCA : msg << TR("pagamento"); break;
|
||||
default: CHECKD(0, "Invalid row file %d", lf_pagsca); break;
|
||||
}
|
||||
msg << ": 0";
|
||||
@ -307,14 +282,14 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
||||
riga << lf_pagsca;
|
||||
|
||||
riga.add(pagsca.get(SCAD_ANNO));
|
||||
riga.add("Partita "); riga << pagsca.get(SCAD_NUMPART);
|
||||
riga.add(TR("Partita ")); riga << pagsca.get(SCAD_NUMPART);
|
||||
riga.add(pagsca.get(SCAD_GRUPPO));
|
||||
riga.add(pagsca.get(SCAD_CONTO));
|
||||
riga.add(pagsca.get(SCAD_SOTTOCONTO));
|
||||
if (lf_pagsca == LF_SCADENZE)
|
||||
riga.add("Riga scadenze inconsistente");
|
||||
riga.add(TR("Riga scadenze inconsistente"));
|
||||
else
|
||||
riga.add("Riga pagamenti inconsistente");
|
||||
riga.add(TR("Riga pagamenti inconsistente"));
|
||||
arr.add(riga);
|
||||
}
|
||||
}
|
||||
@ -325,12 +300,12 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
||||
bool TElimina_zoppi::test_head_file(TString_array& arr)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
TLocalisamfile& mov = app().file(LF_MOV);
|
||||
TLocalisamfile& rmov = app().file(LF_RMOV);
|
||||
TLocalisamfile& rmoviva = app().file(LF_RMOVIVA);
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
TLocalisamfile rmov(LF_RMOV);
|
||||
TLocalisamfile rmoviva(LF_RMOVIVA);
|
||||
|
||||
TString msg;
|
||||
msg << "Controllo testate di prima nota: 0";
|
||||
msg << TR("Controllo testate di prima nota: 0");
|
||||
msg.center_just(50);
|
||||
|
||||
TProgind pi(mov.items(), msg, TRUE, TRUE, 50);
|
||||
@ -451,7 +426,7 @@ int TElimina_zoppi::kill_game(long numreg, int numrig)
|
||||
int TElimina_zoppi::kill_pagsca(long recno, int lfile)
|
||||
{
|
||||
CHECK(lfile == LF_SCADENZE || lfile == LF_PAGSCA, "Invalid file");
|
||||
TLocalisamfile& pagsca = app().file(lfile);
|
||||
TLocalisamfile pagsca(lfile);
|
||||
int err = pagsca.readat(recno);
|
||||
if (err == NOERR)
|
||||
err = pagsca.remove();
|
||||
@ -472,7 +447,7 @@ int TElimina_zoppi::kill_row(long numreg, char tipor, int numrig)
|
||||
default : break;
|
||||
}
|
||||
|
||||
TLocalisamfile& rmov= app().file(lf);
|
||||
TLocalisamfile rmov(lf);
|
||||
rmov.put(RMV_NUMREG, numreg);
|
||||
if (lf != LF_MOV)
|
||||
rmov.put(RMV_NUMRIG, numrig);
|
||||
@ -487,7 +462,7 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
||||
bool ok = TRUE;
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TArray_sheet sheet(-1, -1, 76, 20, APPNAME, "@1|Codice@6|Riga@5|Anno@R|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50");
|
||||
TArray_sheet sheet(-1, -1, 76, 20, APPNAME, HR("@1|Codice@6|Riga@5|Anno@R|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50"));
|
||||
TString_array& arr = sheet.rows_array();
|
||||
ok = test_row_file(LF_RMOV, arr);
|
||||
if (ok)
|
||||
@ -506,9 +481,9 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
const long total = sheet.checked();
|
||||
if (total > 0 &&
|
||||
yesno_box("Confermare l'eliminazione di %ld righe.", total))
|
||||
yesno_box(FR("Confermare l'eliminazione di %ld righe."), total))
|
||||
{
|
||||
TProgind pi(total, "Eliminazione righe...", TRUE, TRUE);
|
||||
TProgind pi(total, TR("Eliminazione righe..."), TRUE, TRUE);
|
||||
FOR_EACH_ARRAY_ROW(arr, i, riga)
|
||||
{
|
||||
if (sheet.checked(i))
|
||||
@ -523,8 +498,7 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
||||
kill_row(riga->get_long(1), tipor, numrig);
|
||||
}
|
||||
}
|
||||
message_box("Si consiglia di eseguire il ricalcolo\n"
|
||||
"dei saldi dal menu di prima nota.");
|
||||
message_box(TR("Si consiglia di eseguire il ricalcolo\ndei saldi dal menu di prima nota."));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -533,12 +507,10 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
||||
|
||||
void TElimina_zoppi::main_loop()
|
||||
{
|
||||
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, 0);
|
||||
open_files(LF_MOV, LF_RMOV, LF_RMOVIVA, 0);
|
||||
open_files(LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, LF_MOV, LF_RMOV, LF_RMOVIVA, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
|
||||
TMask m(APPNAME, 1, 30, 5);
|
||||
m.add_number(DLG_USER, 0, "Codice ditta ", 1, 1, 5, "BUF");
|
||||
m.add_number(DLG_USER, 0, TR("Codice ditta "), 1, 1, 5, "BUF");
|
||||
m.add_button(DLG_SELECT, 0, "", -12, -1, 10, 2);
|
||||
m.add_button(DLG_QUIT, 0, "", -22, -1, 10, 2);
|
||||
m.set_handler(DLG_USER, firm_handler);
|
||||
|
||||
@ -28,7 +28,7 @@ bool TImposta_meseliq::prot_handler(TMask_field& f, KEY k)
|
||||
const long da = m.get_long(F_DA);
|
||||
const long a = m.get_long(F_A);
|
||||
if (a < da)
|
||||
return f.error_box("L'intervallo dei numeri protocollo specificati non e' valido.");
|
||||
return f.error_box(TR("L'intervallo dei numeri protocollo specificati non e' valido."));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -61,7 +61,7 @@ void TImposta_meseliq::main_loop()
|
||||
if (items == 0)
|
||||
continue;
|
||||
|
||||
TProgind* pi = new TProgind(c.items(), "Aggiornamento mese liquidazione in corso...", FALSE, TRUE, 50);
|
||||
TProgind* pi = new TProgind(c.items(), TR("Aggiornamento mese liquidazione in corso..."), FALSE, TRUE, 50);
|
||||
for (c = 0L; c.pos() < items; c+=1L) //scorre i movimenti e li aggiorna
|
||||
{
|
||||
if (c.pos() & 0x7F)
|
||||
@ -70,13 +70,13 @@ void TImposta_meseliq::main_loop()
|
||||
fl.rewrite();
|
||||
}
|
||||
delete pi;
|
||||
warning_box("Aggiornati %ld records.",c.items());
|
||||
warning_box(FR("Aggiornati %ld records."),c.items());
|
||||
}
|
||||
}
|
||||
|
||||
int setta_meseliq(int argc, char* argv[])
|
||||
{
|
||||
TImposta_meseliq a;
|
||||
a.run(argc, argv, "Impostazione mese liq.");
|
||||
a.run(argc, argv, TR("Impostazione mese liq."));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -53,8 +53,8 @@ bool TStampa_deleghe_IVA::create()
|
||||
|
||||
_banche = new TTable("%BAN");
|
||||
|
||||
_ditte = new TArray_sheet(3, 3, -3, -3, "Selezione Deleghe da stampare",
|
||||
"@1|Cod.@5|Ragione Sociale@30|Importo@15R|Interessi@15R|ABI@5|CAB@5|Concessione|Tit. Conto Fis.");
|
||||
_ditte = new TArray_sheet(3, 3, -3, -3, TR("Selezione Deleghe da stampare"),
|
||||
HR("@1|Cod.@5|Ragione Sociale@30|Importo@15R|Interessi@15R|ABI@5|CAB@5|Concessione|Tit. Conto Fis."));
|
||||
|
||||
_azienda = "" ;
|
||||
_dipendenza = "" ;
|
||||
@ -165,7 +165,7 @@ int TStampa_deleghe_IVA::select()
|
||||
}
|
||||
else
|
||||
{
|
||||
warning_box("Nessuna ditta ha deleghe del tipo specificato");
|
||||
warning_box(TR("Nessuna ditta ha deleghe del tipo specificato"));
|
||||
res = 2;
|
||||
}
|
||||
|
||||
@ -183,15 +183,13 @@ bool TStampa_deleghe_IVA::menu(MENU_TAG)
|
||||
|
||||
void TStampa_deleghe_IVA::print()
|
||||
{
|
||||
bool ok = yesno_box("Inserire il modulo prefincato nella stampante "
|
||||
"e confermare la stampa delle deleghe");
|
||||
bool ok = yesno_box(TR("Inserire il modulo prefincato nella stampante e confermare la stampa delle deleghe"));
|
||||
if (ok)
|
||||
{
|
||||
print_deleghe();
|
||||
if (_stampa_distinte)
|
||||
{
|
||||
ok = yesno_box("Inserire il modulo in carta bianca nella stampante "
|
||||
"e confermare la stampa della distinta");
|
||||
ok = yesno_box(TR("Inserire il modulo in carta bianca nella stampante e confermare la stampa della distinta"));
|
||||
if (ok) print_distinta();
|
||||
}
|
||||
}
|
||||
@ -218,30 +216,30 @@ void TStampa_deleghe_IVA::print_distinta()
|
||||
const bool contofis = _profilo.right(2) == "CF";
|
||||
if (atol(_azienda))
|
||||
row.put(_banche->get("S0"), 0);
|
||||
TString hdr("@bDISTINTA DELEGHE DI VERSAMENTO");
|
||||
if (contofis) hdr << " - CONTO FISCALE";
|
||||
TString hdr(FR("@bDISTINTA DELEGHE DI VERSAMENTO"));
|
||||
if (contofis) hdr << TR(" - CONTO FISCALE");
|
||||
row.put(hdr, contofis ? TAB_SEDE - 8: TAB_SEDE);
|
||||
row.put("Data @>", 106);
|
||||
row.put("Pag. @#", 124);
|
||||
row.put(FR("Data @>"), 106);
|
||||
row.put(FR("Pag. @#"), 124);
|
||||
printer().setheaderline(0, row);
|
||||
|
||||
row.reset();
|
||||
if (atol(_dipendenza))
|
||||
row.put(_banche->get("S1"), 0);
|
||||
|
||||
TString256 t("Dichiarazione ");
|
||||
TString256 t(TR("Dichiarazione "));
|
||||
switch (_tipo)
|
||||
{
|
||||
case 2:
|
||||
t << "annuale :"; break;
|
||||
t << TR("annuale :"); break;
|
||||
case 3:
|
||||
t << "articolo 74 : " << itom(_mese); break;
|
||||
t << TR("articolo 74 : ") << itom(_mese); break;
|
||||
case 4:
|
||||
t << "cessazione attivita' : " << itom(_mese); break;
|
||||
t << TR("cessazione attivita' : ") << itom(_mese); break;
|
||||
case 5:
|
||||
t << "integrativa : " << itom(_mese); break;
|
||||
t << TR("integrativa : ") << itom(_mese); break;
|
||||
default:
|
||||
t = "Periodo: " ; t << itom(_mese); break;
|
||||
t = TR("Periodo: ") ; t << itom(_mese); break;
|
||||
}
|
||||
t << ' ' << _anno;
|
||||
row.put(t, TAB_SEDE);
|
||||
@ -254,12 +252,12 @@ void TStampa_deleghe_IVA::print_distinta()
|
||||
printer().setheaderline(4, row);
|
||||
|
||||
row.reset();
|
||||
row.put("Ditta", TAB_DITTA);
|
||||
row.put("Sede" , TAB_SEDE);
|
||||
row.put("Importo", TAB_IMPORTO+8);
|
||||
row.put(TR("Ditta"), TAB_DITTA);
|
||||
row.put(TR("Sede") , TAB_SEDE);
|
||||
row.put(TR("Importo"), TAB_IMPORTO+8);
|
||||
if (contofis)
|
||||
row.put("Conto fiscale", TAB_NOTE); // Colonna per il conto fiscale, alla posizione delle note
|
||||
row.put("Note", contofis ? TAB_NOTE + 22 : TAB_NOTE);
|
||||
row.put(TR("Conto fiscale"), TAB_NOTE); // Colonna per il conto fiscale, alla posizione delle note
|
||||
row.put(TR("Note"), contofis ? TAB_NOTE + 22 : TAB_NOTE);
|
||||
printer().setheaderline(3, row);
|
||||
|
||||
real totale;
|
||||
@ -305,7 +303,7 @@ void TStampa_deleghe_IVA::print_distinta()
|
||||
|
||||
row.reset();
|
||||
printer().print(row);
|
||||
row.put("@bTotale versamenti :", TAB_SEDE);
|
||||
row.put(FR("@bTotale versamenti :"), TAB_SEDE);
|
||||
row.put(totale.string("###.###.###.###"), TAB_IMPORTO);
|
||||
printer().print(row);
|
||||
|
||||
@ -448,6 +446,6 @@ bool TStampa_deleghe_IVA::print_deleghe()
|
||||
int cg1400(int argc, char* argv[])
|
||||
{
|
||||
TStampa_deleghe_IVA a;
|
||||
a.run(argc, argv, "Stampa Versamenti");
|
||||
a.run(argc, argv, TR("Stampa Versamenti"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1915,6 +1915,7 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key)
|
||||
const TRectype& mov = cache().get(LF_MOV, f.get());
|
||||
if (!mov.empty())
|
||||
|
||||
|
||||
{
|
||||
bool ok = TRUE;
|
||||
|
||||
@ -3006,4 +3007,3 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -84,7 +84,6 @@ void CG4100_App::main_loop()
|
||||
|
||||
_msk = new TMask(_optype == 'S' ? "cg4100b" : "cg4100a");
|
||||
|
||||
|
||||
if (_optype == 'S')
|
||||
sort_sal();
|
||||
else
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
// Esercizi contabili e registri IVA
|
||||
|
||||
#include <currency.h>
|
||||
#include <diction.h>
|
||||
#include <mask.h>
|
||||
#include <prefix.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
#include <diction.h>
|
||||
|
||||
#include <pconti.h>
|
||||
#include <rmov.h>
|
||||
@ -169,15 +171,15 @@ const char* iva2name(TipoIVA iva)
|
||||
switch(iva)
|
||||
{
|
||||
case nessuna_iva:
|
||||
i = "Nessuna IVA"; break;
|
||||
i = TR("Nessuna IVA"); break;
|
||||
case iva_acquisti:
|
||||
i = "IVA Acquisti"; break;
|
||||
i = TR("IVA Acquisti"); break;
|
||||
case iva_vendite:
|
||||
i = "IVA Vendite"; break;
|
||||
i = TR("IVA Vendite"); break;
|
||||
case iva_generica:
|
||||
i = "IVA Generica"; break;
|
||||
i = TR("IVA Generica"); break;
|
||||
default:
|
||||
i = "IVA ERRATA!"; break;
|
||||
i = TR("IVA ERRATA!"); break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
@ -202,21 +204,6 @@ bool TRegistro::read(const char* cod, int year)
|
||||
if (cod == NULL)
|
||||
cod = "";
|
||||
|
||||
/* int err = ~NOERR;
|
||||
|
||||
TTable reg("REG");
|
||||
reg.setkey(1);
|
||||
if (cod && *cod > ' ')
|
||||
{
|
||||
TString16 chiave; chiave.format("%04d%s", year, cod);
|
||||
reg.put("CODTAB", chiave);
|
||||
err = reg.read();
|
||||
}
|
||||
_rec = reg.curr();
|
||||
|
||||
if (err != NOERR)
|
||||
_rec.zero();
|
||||
*/
|
||||
TString16 chiave; chiave.format("%04d%s", year, cod);
|
||||
_rec = cache().get("REG", chiave);
|
||||
read_att();
|
||||
@ -285,7 +272,7 @@ TipoIVA TRegistro::iva() const
|
||||
i = nessuna_iva;
|
||||
break;
|
||||
default:
|
||||
error_box("Il registro '%s' non e' un registro IVA o contabile: tipo %d",
|
||||
error_box(FR("Il registro '%s' non e' un registro IVA o contabile: tipo %d"),
|
||||
(const char*)name(), i);
|
||||
i = nessuna_iva;
|
||||
break;
|
||||
@ -297,17 +284,8 @@ bool TRegistro::read_att()
|
||||
{
|
||||
if (!_att.empty())
|
||||
return TRUE;
|
||||
|
||||
|
||||
/*
|
||||
TLocalisamfile attiv(LF_ATTIV);
|
||||
attiv.setkey(1);
|
||||
attiv.put("CODDITTA", prefix().get_codditta());
|
||||
attiv.put("CODATT", attivita());
|
||||
const int err = attiv.read();
|
||||
_att = attiv.curr();
|
||||
if (err != NOERR)
|
||||
_att.zero();
|
||||
*/
|
||||
TString16 chiave;
|
||||
chiave << prefix().get_codditta() << '|' << attivita();
|
||||
|
||||
@ -319,12 +297,6 @@ bool TRegistro::read_att()
|
||||
|
||||
_prorata.destroy();
|
||||
|
||||
/*
|
||||
TTable pla("%PLA");
|
||||
pla.put("CODTAB", chiave);
|
||||
if (pla.read() == NOERR)
|
||||
{
|
||||
*/
|
||||
const TRectype & pla = cache().get("%PLA", chiave);
|
||||
|
||||
if (!pla.empty())
|
||||
@ -380,17 +352,11 @@ real TRegistro::prorata(int annodoc)
|
||||
{
|
||||
pr = read_prorata(annopro);
|
||||
if (pr == NULL && annopro != annoiva)
|
||||
{
|
||||
// warning_box("Non esistono i dati relativi al prorata per il %d:\n"
|
||||
// "verra' considerato l'anno %d", annopro, annoiva);
|
||||
pr = read_prorata(annoiva);
|
||||
}
|
||||
|
||||
if (pr == NULL)
|
||||
{
|
||||
// warning_box("Non esistono i dati relativi al prorata per il %d:\n"
|
||||
// "verra' considerato allo 0%%", annoiva);
|
||||
pr = new real(ZERO);
|
||||
}
|
||||
|
||||
_prorata.add(chiave, pr, TRUE);
|
||||
}
|
||||
|
||||
@ -573,42 +539,8 @@ real TCodiceIVA::lordo(const real & imponibile, int ndec, const char * codval) c
|
||||
}
|
||||
|
||||
bool handler_data_cambio(TMask_field& f, KEY k)
|
||||
{
|
||||
/*
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
{
|
||||
CHECK(f.is_edit(), "Campo non editabile come data cambio");
|
||||
TEdit_field& e = (TEdit_field&)f;
|
||||
TBrowse& b = *e.browse();
|
||||
const TRectype& rec = b.cursor()->curr();
|
||||
const TString16 codval = rec.get("CODTAB").left(3);
|
||||
const TString& firmval = TCurrency::get_firm_val();
|
||||
real cambio = rec.get("S4");
|
||||
if (cambio.is_zero())
|
||||
cambio = rec.get_real("R10");
|
||||
if (codval.not_empty() && codval != firmval && cambio > ZERO)
|
||||
{
|
||||
const TRectype& val = cache().get("%VAL", firmval);
|
||||
real base = val.get("S4");
|
||||
if (base.is_zero())
|
||||
base = val.get_real("R10");
|
||||
if (base > ZERO && base != 1.0)
|
||||
{
|
||||
TToken_string out_fields = b.get_output_fields();
|
||||
for (short dlg = short(out_fields.get_int(0)); dlg; dlg = short(out_fields.get_int()))
|
||||
{
|
||||
TMask_field& of = f.mask().field(dlg);
|
||||
if (of.class_id() == CLASS_REAL_FIELD)
|
||||
{
|
||||
cambio /= base;
|
||||
of.set(cambio.string());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -646,7 +578,7 @@ const TBill& TBill::get(TToken_string& s, int from, int mode)
|
||||
#ifdef DBG
|
||||
if (strchr(" CF", _tipo) == NULL)
|
||||
{
|
||||
error_box("Tipo conto errato: '%c'", _tipo);
|
||||
error_box(FR("Tipo conto errato: '%c'"), _tipo);
|
||||
_tipo = ' ';
|
||||
}
|
||||
#endif
|
||||
@ -930,7 +862,7 @@ const TString& TBill::descrizione() const
|
||||
if ((_descrizione == NULL || _descrizione->blank()) && gruppo() != 0)
|
||||
{
|
||||
if (!myself.find())
|
||||
myself.set_description("Sconosciuto");
|
||||
myself.set_description(TR("Sconosciuto"));
|
||||
}
|
||||
|
||||
return _descrizione ? *_descrizione : (const TString&) EMPTY_STRING;
|
||||
@ -1004,4 +936,3 @@ bool TBill::default_cdc(TString& cdc, TString& fas) const
|
||||
}
|
||||
return ok && cdc.not_empty();
|
||||
}
|
||||
|
||||
|
||||
@ -4,12 +4,13 @@
|
||||
// Aggiornamento saldi
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <relation.h>
|
||||
#include <diction.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
#include <xvtility.h>
|
||||
#include <diction.h>
|
||||
|
||||
#include "cglib01.h"
|
||||
#include "cglib02.h"
|
||||
@ -798,7 +799,7 @@ void TSaldo_agg::registra()
|
||||
|
||||
const int err = saldi.rewrite();
|
||||
if (err != NOERR)
|
||||
yesnofatal_box("Errore %d nell'aggiornamento del saldo %d %d %ld",
|
||||
yesnofatal_box(FR("Errore %d nell'aggiornamento del saldo %d %d %ld"),
|
||||
err, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
|
||||
}
|
||||
|
||||
@ -840,4 +841,3 @@ void TSaldo_agg::registra()
|
||||
tcon.saldo_finale() = sf;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ HIDDEN TString TEMP;
|
||||
//ritorna falso se la causale non e' significativa
|
||||
/*
|
||||
|
||||
|
||||
bool look_causale (const char* codcaus)
|
||||
{
|
||||
const TFixed_string caus(codcaus);
|
||||
@ -5342,4 +5343,4 @@ int date2esc(const TDate& d, int* prevesc)
|
||||
if (prevesc)
|
||||
*prevesc = esc.pred(anno);
|
||||
return anno;
|
||||
}
|
||||
}
|
||||
@ -253,7 +253,7 @@ void TMask::add_default_tag_buttons()
|
||||
TToken_string tags(_pages * 6);
|
||||
for (int p = 1; p <= _pages; p++)
|
||||
{
|
||||
tags.add("Pag.");
|
||||
tags.add(TR("Pag."));
|
||||
tags << p;
|
||||
}
|
||||
add_tag_buttons(tags);
|
||||
@ -392,7 +392,7 @@ bool TMask::can_be_closed() const
|
||||
{
|
||||
bool ok = TRUE;
|
||||
if ((edit_mode() || insert_mode()) && dirty() && id2pos(DLG_QUIT) < 0)
|
||||
ok = yesno_box("Annullare i dati inseriti?");
|
||||
ok = yesno_box(TR("Annullare i dati inseriti?"));
|
||||
if (ok)
|
||||
((TMask*)this)->stop_run(K_FORCE_CLOSE);
|
||||
return FALSE;
|
||||
@ -2220,8 +2220,8 @@ TTimed_box::~TTimed_box()
|
||||
TTimed_breakbox::TTimed_breakbox(const char * message,int seconds,int x,int y)
|
||||
: TTimed_box("Richiesta di interruzione",message,seconds,DLG_OK,x,y)
|
||||
{
|
||||
add_button(DLG_CANCEL, 0, "Interrompi", -22, -1, 12, 2,"",0);
|
||||
add_button(DLG_OK, 0, "Riprova", -12, -1, 12, 2,"",0);
|
||||
add_button(DLG_CANCEL, 0, TR("Interrompi"), -22, -1, 12, 2,"",0);
|
||||
add_button(DLG_OK, 0, TR("Riprova"), -12, -1, 12, 2,"",0);
|
||||
}
|
||||
|
||||
TTimed_breakbox::~TTimed_breakbox()
|
||||
@ -2238,10 +2238,10 @@ TYesnoallnone_box::TYesnoallnone_box(const char * message, int default_key)
|
||||
add_memo(FIRST_FIELD, 0, "", 1, 0,-1,-3);
|
||||
set(FIRST_FIELD, message);
|
||||
disable(FIRST_FIELD);
|
||||
add_button(DLG_OK, 0, "Tutti", -14, -1, 8, 2,"",0);
|
||||
add_button(FIRST_FIELD+1, 0, "Si", -24, -1, 8, 2,"",0).set_exit_key(K_YES);
|
||||
add_button(FIRST_FIELD+2, 0, "No", -34, -1, 8, 2,"",0).set_exit_key(K_NO);
|
||||
add_button(DLG_CANCEL, 0, "Nessuno", -44, -1, 8, 2,"",0);
|
||||
add_button(DLG_OK, 0, TR("Tutti"), -14, -1, 8, 2,"",0);
|
||||
add_button(FIRST_FIELD+1, 0, TR("Si"), -24, -1, 8, 2,"",0).set_exit_key(K_YES);
|
||||
add_button(FIRST_FIELD+2, 0, TR("No"), -34, -1, 8, 2,"",0).set_exit_key(K_NO);
|
||||
add_button(DLG_CANCEL, 0, TR("Nessuno"), -44, -1, 8, 2,"",0);
|
||||
switch (default_key)
|
||||
{
|
||||
case K_ENTER:
|
||||
|
||||
@ -484,50 +484,54 @@ public:
|
||||
|
||||
bool TSocket_connection::Execute(const char* cmd)
|
||||
{
|
||||
bool ok = GetSocket() != NULL;
|
||||
skstream* calza = GetSocket();
|
||||
bool ok = calza != NULL;
|
||||
if (ok)
|
||||
{
|
||||
const size_t buflen = strlen(cmd)+1;
|
||||
_socket->sync();
|
||||
_socket->write(cmd, buflen);
|
||||
_socket->flush();
|
||||
ok = _socket->good() != 0;
|
||||
calza->sync();
|
||||
calza->write(cmd, buflen);
|
||||
calza->flush();
|
||||
ok = calza->good() != 0;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TSocket_connection::WriteLine(const char* cmd)
|
||||
{
|
||||
bool ok = GetSocket() != NULL;
|
||||
skstream* calza = GetSocket();
|
||||
bool ok = calza != NULL;
|
||||
if (ok)
|
||||
{
|
||||
const size_t buflen = strlen(cmd); // Unica differenza da Execute
|
||||
_socket->sync();
|
||||
_socket->write(cmd, buflen);
|
||||
_socket->flush();
|
||||
ok = _socket->good() != 0;
|
||||
calza->sync();
|
||||
calza->write(cmd, buflen);
|
||||
calza->flush();
|
||||
ok = calza->good() != 0;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TSocket_connection::ReadLine(TString& str)
|
||||
{
|
||||
bool ok = GetSocket() != NULL;
|
||||
skstream* calza = GetSocket();
|
||||
bool ok = calza != NULL;
|
||||
if (ok)
|
||||
{
|
||||
char *buf = str.get_buffer(4096);
|
||||
_socket->getline(buf, str.size(), '\n');
|
||||
calza->getline(buf, str.size(), '\n');
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TSocket_connection::Read(byte* buf, size_t size)
|
||||
{
|
||||
bool ok = GetSocket() != NULL;
|
||||
skstream* calza = GetSocket();
|
||||
bool ok = calza != NULL;
|
||||
if (ok)
|
||||
{
|
||||
_socket->read(buf, size);
|
||||
ok = _socket->good() != 0;
|
||||
calza->read(buf, size);
|
||||
ok = calza->good() != 0;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -179,7 +179,7 @@ bool TLanClient::RequestBool(CONNID id, const char* cmd, bool& ok)
|
||||
{
|
||||
size_t dwSize;
|
||||
byte* pData = GetBuffer(dwSize);
|
||||
ok = *(size_t*)pData != 0;
|
||||
ok = *pData != 0;
|
||||
ReleaseBuffer();
|
||||
}
|
||||
return valid;
|
||||
|
||||
@ -480,8 +480,6 @@ __int64 mcd(__int64 a, __int64 b)
|
||||
while (b > 0)
|
||||
{
|
||||
r = a % b;
|
||||
// if (r == 0)
|
||||
// break;
|
||||
a = b;
|
||||
b = r;
|
||||
}
|
||||
|
||||
@ -2,6 +2,11 @@
|
||||
|
||||
#include "Dongle.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TUserInfo
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -124,6 +129,7 @@ protected:
|
||||
wxString DescribeModule(int m) const;
|
||||
|
||||
void InitModules();
|
||||
wxString GetModulesFilename() const;
|
||||
wxString Garble(unsigned short n, const wxDateTime& date) const;
|
||||
|
||||
public:
|
||||
@ -214,9 +220,18 @@ bool TAuthorizationServer::IsMagicName(wxString& strFilename) const
|
||||
return false;
|
||||
}
|
||||
|
||||
wxString TAuthorizationServer::GetModulesFilename() const
|
||||
{
|
||||
wxString strAut = "../campo.aut";
|
||||
if (!wxFileExists(strAut))
|
||||
strAut = "../prassi.aut";
|
||||
return strAut;
|
||||
}
|
||||
|
||||
wxString TAuthorizationServer::DescribeModule(int m) const
|
||||
{
|
||||
wxFileInputStream aut("../campo.aut");
|
||||
const wxString strAut = GetModulesFilename();
|
||||
wxFileInputStream aut(strAut);
|
||||
wxString line;
|
||||
for (int nModule = 0; !aut.Eof(); nModule++)
|
||||
{
|
||||
@ -243,10 +258,14 @@ void TAuthorizationServer::GenerateIndex(wxString& strFilename)
|
||||
TXmlItem& title = body.AddChild("h1").AddChild("center");
|
||||
if (m_Dongle.Ok())
|
||||
{
|
||||
TXmlItem& tr = title.AddChild("table").SetAttr("width", "40%").AddChild("tr");
|
||||
|
||||
TXmlItem& td = tr.AddChild("td").SetAttr("width", "30%");
|
||||
const bool hard = m_Dongle.hardware() == _dongle_hardlock;
|
||||
TXmlItem& img = title.AddChild("img");
|
||||
TXmlItem& img = td.AddChild("img");
|
||||
img.SetAttr("src", hard ? "hardlock.gif" : "eutron.gif");
|
||||
title << (hard ? "Hardlock EYE" : "Eutron Smartkey");
|
||||
|
||||
tr.AddChild("td").SetAttr("align", "center").AddChild("h1") << (hard ? "Hardlock EYE" : "Eutron Smartkey");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -264,22 +283,22 @@ void TAuthorizationServer::GenerateIndex(wxString& strFilename)
|
||||
|
||||
TXmlItem& tr1 = body.AddChild("tr");
|
||||
TXmlItem& ay = tr1.AddChild("td").AddChild("a");
|
||||
ay.SetAttr("href", "year") << "Assistance Year";
|
||||
ay.SetAttr("href", "year.htm") << "Assistance Year";
|
||||
AddNumber(tr1, m_Dongle.YearAssist());
|
||||
|
||||
TXmlItem& tr2 = body.AddChild("tr");
|
||||
TXmlItem& mu = tr2.AddChild("td").AddChild("a");
|
||||
mu.SetAttr("href", "maxusers") << "Maximum Users";
|
||||
mu.SetAttr("href", "maxusers.htm") << "Maximum Users";
|
||||
AddNumber(tr2, m_Dongle.MaxUsers());
|
||||
|
||||
TXmlItem& tr3 = body.AddChild("tr");
|
||||
TXmlItem& au = tr3.AddChild("td").AddChild("a");
|
||||
au.SetAttr("href", "Users"); au << "Active Users";
|
||||
au.SetAttr("href", "Users.htm"); au << "Active Users";
|
||||
AddNumber(tr3, m_Users.GetCount());
|
||||
|
||||
TXmlItem& tr4 = body.AddChild("tr");
|
||||
TXmlItem& am = tr4.AddChild("td").AddChild("a");
|
||||
am.SetAttr("href", "Modules"); am << "Active Modules";
|
||||
am.SetAttr("href", "Modules.htm"); am << "Active Modules";
|
||||
AddNumber(tr4, m_nModules);
|
||||
|
||||
TXmlItem& tr5 = body.AddChild("tr");
|
||||
@ -307,7 +326,8 @@ void TAuthorizationServer::GenerateModules(wxString& strFilename)
|
||||
th.AddChild("th").SetAttr("width", "70%") << "Description";
|
||||
th.AddChild("th").SetAttr("width", "15%") << "De/Activate";
|
||||
|
||||
wxFileInputStream aut("../campo.aut");
|
||||
const wxString strAut = GetModulesFilename();
|
||||
wxFileInputStream aut(strAut);
|
||||
wxString line;
|
||||
for (int nModule = 0; !aut.Eof(); nModule++)
|
||||
{
|
||||
@ -664,7 +684,7 @@ unsigned int TAuthorizationServer::DecodePassword(const wxChar* strPassword)
|
||||
if (*c >= '0' && *c <= '9')
|
||||
{
|
||||
num += *c - '0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*c >= 'A' && *c <= 'Z')
|
||||
@ -672,16 +692,14 @@ unsigned int TAuthorizationServer::DecodePassword(const wxChar* strPassword)
|
||||
num += *c - 'A' + 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*c >= 'a' && *c <= 'z')
|
||||
num += *c - 'a' + 10;
|
||||
}
|
||||
break; // Carattere non valido
|
||||
}
|
||||
len++;
|
||||
}
|
||||
// Per essereva valido deve essere divisibile per 883
|
||||
if (len >= 5 && (num%883) == 0 && m_strLastPassword != strPassword)
|
||||
{
|
||||
// Creo la risposta: metà di num reso divisibile per 883
|
||||
num /= 2;
|
||||
while (num % 883 != 0)
|
||||
num++;
|
||||
@ -697,13 +715,14 @@ void TAuthorizationServer::ProcessUserLogin(wxString cmd, wxSocketBase& sock)
|
||||
wxChar strUser[16];
|
||||
wxChar strPassword[16];
|
||||
wxChar strProgram[16];
|
||||
wxString strHost;
|
||||
|
||||
cmd.Replace(",", " "); cmd.Replace(")", " ");
|
||||
sscanf(cmd, "UserLogin(%s %s %s)", strUser, strPassword, strProgram);
|
||||
|
||||
unsigned long num = 0;
|
||||
unsigned int num = 0;
|
||||
if (m_Dongle.Connected())
|
||||
{
|
||||
// Preliminary GUEST login
|
||||
if (stricmp(strUser,"******")==0 && stricmp(strProgram, "ba0100")==0)
|
||||
{
|
||||
num = 1;
|
||||
@ -714,14 +733,12 @@ void TAuthorizationServer::ProcessUserLogin(wxString cmd, wxSocketBase& sock)
|
||||
num = 0;
|
||||
else
|
||||
{
|
||||
if (strcmp(strPassword, "******") == 0)
|
||||
if (strcmp(strPassword, "******") == 0) // Older 16 bit version
|
||||
num = 1;
|
||||
else
|
||||
{
|
||||
num = DecodePassword(strPassword);
|
||||
if (num > 0)
|
||||
m_Users.AddConnection(sock, strUser);
|
||||
}
|
||||
if (num > 0)
|
||||
m_Users.AddConnection(sock, strUser);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -797,8 +814,15 @@ void TAuthorizationServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
|
||||
}
|
||||
}
|
||||
|
||||
#define ATOMIC_SEMAPHORE "DONGLE_SERVER_ATOM"
|
||||
|
||||
bool TAuthorizationServer::Initialization()
|
||||
{
|
||||
#ifdef WIN32
|
||||
// Add global atom if not already present
|
||||
if (::GlobalFindAtom(ATOMIC_SEMAPHORE) == NULL)
|
||||
::GlobalAddAtom(ATOMIC_SEMAPHORE); // Same as old Frontend.exe
|
||||
#endif
|
||||
m_Dongle.Login();
|
||||
InitModules();
|
||||
|
||||
@ -808,6 +832,12 @@ bool TAuthorizationServer::Initialization()
|
||||
bool TAuthorizationServer::Deinitialization()
|
||||
{
|
||||
m_Dongle.Logout();
|
||||
#ifdef WIN32
|
||||
// Definitely kill global atom
|
||||
for (ATOM a = ::GlobalFindAtom(ATOMIC_SEMAPHORE);
|
||||
a != NULL;
|
||||
a = ::GlobalDeleteAtom(a));
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -99,7 +99,8 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm- /GX /ZI /Od /I "\wx233\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
@ -109,7 +110,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib \wx233\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"../exe/servers/Authoriz.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Authoriz - Win32 Release DLL"
|
||||
|
||||
@ -187,6 +188,10 @@ SOURCE=.\html.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mutex.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\skeylink.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@ -196,33 +201,6 @@ SOURCE=.\xml.h
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\server.rc
|
||||
|
||||
!IF "$(CFG)" == "Authoriz - Win32 Release"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Authoriz - Win32 Debug"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x410 /i "c:\wx229\wx" /i /wx229/include" "
|
||||
|
||||
!ELSEIF "$(CFG)" == "Authoriz - Win32 Debug DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Authoriz - Win32 Release DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i /wx229/include" "
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\Lib\skeylink.obj
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@ -42,6 +42,25 @@ wxDateTime String2Date(const wxString& str)
|
||||
return date;
|
||||
}
|
||||
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, const wxChar* str)
|
||||
{
|
||||
if (str && *str)
|
||||
outf.Write(str, wxStrlen(str));
|
||||
return outf;
|
||||
}
|
||||
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, wxString str)
|
||||
{
|
||||
if (!str.IsEmpty())
|
||||
outf.Write(str, str.Length());
|
||||
return outf;
|
||||
}
|
||||
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, size_t num)
|
||||
{
|
||||
return outf << wxString::Format("%u", num);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// classes
|
||||
// --------------------------------------------------------------------------
|
||||
@ -110,7 +129,7 @@ wxString TBaseServerApp::GetTempFilename()
|
||||
strTmp = m_strTempDir;
|
||||
strTmp += wxString::Format("%s_%d.htm", GetAppName(), m_nTmpCounter);
|
||||
m_nTmpCounter++;
|
||||
if (m_nTmpCounter >= 8)
|
||||
if (m_nTmpCounter >= 4)
|
||||
m_nTmpCounter = 0;
|
||||
|
||||
return strTmp;
|
||||
@ -151,8 +170,9 @@ TXmlItem& TBaseServerApp::CreatePageBody(TXmlItem& html, wxString header) const
|
||||
head.AddChild("title") << header;
|
||||
|
||||
TXmlItem& body = html.AddChild("body");
|
||||
body.SetAttr("bgcolor", "#E0E080");
|
||||
body.SetAttr("background", "back.gif");
|
||||
body.SetAttr("bgcolor", "#EFCEAD");
|
||||
if (m_bRunning)
|
||||
body.SetAttr("background", "back.gif");
|
||||
|
||||
TXmlItem& title = body.AddChild("table");
|
||||
title.SetAttr("border", "5"); title.SetAttr("width", "100%");
|
||||
@ -218,6 +238,27 @@ bool TBaseServerApp::CanProcessCommand(wxString& cmd, wxSocketBase& outs)
|
||||
return true;
|
||||
}
|
||||
|
||||
void TBaseServerApp::SendContent(wxFileInputStream& inf, wxSocketBase& sock)
|
||||
{
|
||||
const size_t nSize = inf.GetSize();
|
||||
WriteLog(wxString::Format("Sending %u bytes", nSize));
|
||||
|
||||
const size_t BUF_TEMP_SIZE = nSize; // was 1024*16
|
||||
char* buf = new char[BUF_TEMP_SIZE];
|
||||
size_t bytes = BUF_TEMP_SIZE;
|
||||
size_t nTotalWritten = 0;
|
||||
while (bytes == BUF_TEMP_SIZE)
|
||||
{
|
||||
bytes = inf.Read(buf, bytes).LastRead();
|
||||
size_t nWritten = sock.Write(buf, bytes).LastCount();
|
||||
nTotalWritten += nWritten;
|
||||
}
|
||||
delete buf;
|
||||
|
||||
if (nTotalWritten < nSize)
|
||||
WriteLog(wxString::Format("I sent %u on %u bytes only.", nTotalWritten, nSize));
|
||||
}
|
||||
|
||||
void TBaseServerApp::SendFile(wxString strFilename, wxSocketBase& sock)
|
||||
{
|
||||
const bool bFound = wxFileExists(strFilename);
|
||||
@ -236,12 +277,6 @@ void TBaseServerApp::SendFile(wxString strFilename, wxSocketBase& sock)
|
||||
strFilename = strTmp;
|
||||
}
|
||||
|
||||
wxFileInputStream inf(strFilename);
|
||||
|
||||
const size_t nSize = inf.GetSize();
|
||||
|
||||
WriteLog(wxString::Format("Sending %s (%u bytes)", strFilename, nSize));
|
||||
|
||||
wxString strType;
|
||||
wxSplitPath(strFilename, NULL, NULL, &strType);
|
||||
wxFileType* type = wxTheMimeTypesManager->GetFileTypeFromExtension(strType);
|
||||
@ -251,48 +286,39 @@ void TBaseServerApp::SendFile(wxString strFilename, wxSocketBase& sock)
|
||||
strType = "text/plain";
|
||||
const wxDateTime date = ::wxFileModificationTime(strFilename);
|
||||
|
||||
wxSocketOutputStream outs(sock);
|
||||
wxFileInputStream inf(strFilename);
|
||||
const size_t nSize = inf.GetSize();
|
||||
|
||||
if (bFound)
|
||||
{
|
||||
outs << "HTTP/1.1 200 OK" << endl;
|
||||
}
|
||||
sock << "HTTP/1.1 200 OK\n";
|
||||
else
|
||||
{
|
||||
outs << "HTTP/1.1 401 Not found" << endl;
|
||||
}
|
||||
outs << "Server: " << GetAppName() << endl;
|
||||
outs << "Host: " << wxGetHostName() << endl;
|
||||
sock << "HTTP/1.1 401 Not found\n";
|
||||
sock << "Server: " << GetAppName() << "\n";
|
||||
sock << "Host: " << wxGetFullHostName() << "\n";
|
||||
if (bFound && m_bRunning)
|
||||
{
|
||||
outs << "Connection: keep-alive" << endl;
|
||||
}
|
||||
sock << "Connection: keep-alive\n";
|
||||
else
|
||||
{
|
||||
outs << "Connection: close" << endl;
|
||||
}
|
||||
outs << "Content-Type: " << strType << endl;
|
||||
outs << "Content-Length: " << wxString::Format("%u", nSize) << endl;
|
||||
outs << "Date: " << date.Format("%#c") << endl;
|
||||
outs << endl;
|
||||
sock << "Connection: close\n";
|
||||
sock << "Content-Type: " << strType << "\n";
|
||||
sock << "Content-Length: " << nSize << "\n";
|
||||
sock << "Date: " << date.Format("%#c") << "\n";
|
||||
|
||||
const size_t BUF_TEMP_SIZE = 1024*64;
|
||||
char* buf = new char[BUF_TEMP_SIZE];
|
||||
size_t bytes = BUF_TEMP_SIZE;
|
||||
size_t nTotal = 0;
|
||||
while (bytes == BUF_TEMP_SIZE)
|
||||
{
|
||||
bytes = inf.Read(buf, bytes).LastRead();
|
||||
bytes = outs.Write(buf, bytes).LastWrite();
|
||||
// if (bytes == BUF_TEMP_SIZE) wxSleep(1);
|
||||
sock.WaitForWrite(5);
|
||||
nTotal += bytes;
|
||||
}
|
||||
delete buf;
|
||||
wxDateTime dtFraUnPo = wxDateTime::Now();
|
||||
const wxTimeSpan minuto(0, 1, 0); // Zero ore, Un minuto, Zero secondi
|
||||
dtFraUnPo += minuto;
|
||||
sock << "Expires: " << dtFraUnPo.Format("%#c") << "\n";
|
||||
|
||||
if (nTotal < nSize)
|
||||
{
|
||||
WriteLog(wxString::Format("I sent %u bytes only.", nTotal));
|
||||
}
|
||||
sock << "\n";
|
||||
|
||||
SendContent(inf, sock);
|
||||
}
|
||||
|
||||
void TBaseServerApp::SendNotModifiedFile(wxSocketBase& sock)
|
||||
{
|
||||
sock << "HTTP/1.1 304 Not Modified\n";
|
||||
sock << "Date: " << wxDateTime::Now().Format("%#c") << "\n";
|
||||
sock << "Server: " << GetAppName() << "\n";
|
||||
sock << "Connection: close\n";
|
||||
}
|
||||
|
||||
const wxChar* TBaseServerApp::GetAppName() const
|
||||
@ -310,7 +336,7 @@ void TBaseServerApp::ProcessCommand(wxString cmd, wxSocketBase& outs)
|
||||
|
||||
void TBaseServerApp::OnServerEvent(wxSocketEvent& event)
|
||||
{
|
||||
wxString s = "OnServerEvent: ";
|
||||
wxString s = "--- OnServerEvent: ";
|
||||
|
||||
switch(event.GetSocketEvent())
|
||||
{
|
||||
@ -328,11 +354,11 @@ void TBaseServerApp::OnServerEvent(wxSocketEvent& event)
|
||||
wxSocketBase* sock = m_server->Accept(FALSE);
|
||||
if (sock)
|
||||
{
|
||||
WriteLog("New client connection accepted");
|
||||
WriteLog("--- New client connection accepted");
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLog("Error: couldn't accept a new connection");
|
||||
WriteLog("### Error: couldn't accept a new connection");
|
||||
sock->Destroy();
|
||||
return;
|
||||
}
|
||||
@ -344,61 +370,53 @@ void TBaseServerApp::OnServerEvent(wxSocketEvent& event)
|
||||
|
||||
void TBaseServerApp::OnSocketEvent(wxSocketEvent& event)
|
||||
{
|
||||
wxString s = "OnSocketEvent: ";
|
||||
wxSocketBase *sock = event.GetSocket();
|
||||
|
||||
// First, print a message
|
||||
switch(event.GetSocketEvent())
|
||||
{
|
||||
case wxSOCKET_INPUT : s.Append("wxSOCKET_INPUT\n"); break;
|
||||
case wxSOCKET_LOST : s.Append("wxSOCKET_LOST\n"); break;
|
||||
default : s.Append("Unexpected event !\n"); break;
|
||||
}
|
||||
|
||||
WriteLog(s);
|
||||
|
||||
// Now we process the event
|
||||
wxSocketBase& sock = *event.GetSocket();
|
||||
switch(event.GetSocketEvent())
|
||||
{
|
||||
case wxSOCKET_INPUT:
|
||||
{
|
||||
const int nOldFlags = sock->GetFlags();
|
||||
// We disable input events, so that the test doesn't trigger
|
||||
// wxSocketEvent again.
|
||||
sock->SetNotify(wxSOCKET_LOST_FLAG);
|
||||
sock->SetFlags(wxSOCKET_NOWAIT); // Non aspettare troppo
|
||||
sock.SetNotify(wxSOCKET_LOST_FLAG);
|
||||
|
||||
// Read the data
|
||||
const size_t BUFSIZE = 2048;
|
||||
wxString str;
|
||||
wxChar* buf = str.GetWriteBuf(BUFSIZE);
|
||||
memset(buf, 0, BUFSIZE);
|
||||
const size_t len = sock->Read(buf, BUFSIZE).LastCount();
|
||||
str.UngetWriteBuf(len+1);
|
||||
wxChar* bufStart = str.GetWriteBuf(BUFSIZE);
|
||||
memset(bufStart, 0, BUFSIZE);
|
||||
wxChar* buf = bufStart;
|
||||
|
||||
const size_t len = sock.Read(buf, BUFSIZE).LastCount();
|
||||
buf += len;
|
||||
// Attendi la fine del comando HTTP!
|
||||
if (strncmp(bufStart, "GET ", 4) == 0 || strncmp(bufStart, "POST ", 5) == 0)
|
||||
{
|
||||
while (strstr(bufStart, "\r\n\r\n") == NULL)
|
||||
{
|
||||
const size_t len = sock.Read(buf, BUFSIZE).LastCount();
|
||||
buf += len;
|
||||
}
|
||||
}
|
||||
str.UngetWriteBuf();
|
||||
|
||||
WriteLog(str);
|
||||
|
||||
sock->SetFlags(nOldFlags); // Ripristina flags
|
||||
if (CanProcessCommand(str, *sock))
|
||||
ProcessCommand(str, *sock);
|
||||
if (CanProcessCommand(str, sock))
|
||||
{
|
||||
const wxSocketFlags flags = sock.GetFlags();
|
||||
sock.SetFlags(wxSOCKET_WAITALL);
|
||||
ProcessCommand(str, sock);
|
||||
sock.SetFlags(flags);
|
||||
}
|
||||
|
||||
// Enable input events again.
|
||||
sock->SetNotify(wxSOCKET_LOST_FLAG | wxSOCKET_INPUT_FLAG);
|
||||
sock.SetNotify(wxSOCKET_LOST_FLAG | wxSOCKET_INPUT_FLAG);
|
||||
break;
|
||||
}
|
||||
case wxSOCKET_LOST:
|
||||
{
|
||||
// Destroy() should be used instead of delete wherever possible,
|
||||
// due to the fact that wxSocket uses 'delayed events' (see the
|
||||
// documentation for wxPostEvent) and we don't want an event to
|
||||
// arrive to the event handler (the frame, here) after the socket
|
||||
// has been deleted. Also, we might be doing some other thing with
|
||||
// the socket at the same time; for example, we might be in the
|
||||
// middle of a test or something. Destroy() takes care of all
|
||||
// this for us.
|
||||
|
||||
WriteLog("Deleting socket.");
|
||||
sock->Destroy();
|
||||
WriteLog("--- Deleting socket.");
|
||||
sock.Destroy();
|
||||
break;
|
||||
}
|
||||
default: ;
|
||||
@ -474,6 +492,17 @@ wxString TBaseServerApp::GetDocumentRoot() const
|
||||
|
||||
bool TBaseServerApp::OnInit()
|
||||
{
|
||||
m_server = NULL;
|
||||
m_log = NULL;
|
||||
|
||||
m_SingleInstance = new wxSingleInstanceChecker(GetAppName());
|
||||
if (m_SingleInstance->IsAnotherRunning())
|
||||
{
|
||||
delete m_SingleInstance;
|
||||
m_SingleInstance = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create the address - defaults to localhost:0 initially
|
||||
wxIPV4address addr;
|
||||
addr.Service(GetDefaultPort());
|
||||
@ -501,7 +530,6 @@ bool TBaseServerApp::OnInit()
|
||||
m_server->Notify(TRUE);
|
||||
|
||||
str << GetAppName() << " listening on port " << addr.Service();
|
||||
SetConfigString("Running", "1");
|
||||
m_bRunning = true;
|
||||
}
|
||||
else
|
||||
@ -519,18 +547,20 @@ bool TBaseServerApp::OnInit()
|
||||
|
||||
int TBaseServerApp::OnExit()
|
||||
{
|
||||
Deinitialization();
|
||||
|
||||
if (m_server != NULL)
|
||||
{
|
||||
Deinitialization();
|
||||
delete m_SingleInstance;
|
||||
delete m_server;
|
||||
}
|
||||
if (m_log != NULL)
|
||||
{
|
||||
SetConfigString("Running", "");
|
||||
wxString str;
|
||||
str << GetAppName() << " shutting down.";
|
||||
WriteLog(str);
|
||||
delete m_log;
|
||||
}
|
||||
|
||||
return wxApp::OnExit();
|
||||
}
|
||||
|
||||
@ -584,3 +614,4 @@ int TBaseServerApp::ParseArguments(wxString args, THashTable& hashArgs) const
|
||||
}
|
||||
return hashArgs.GetCount();
|
||||
}
|
||||
|
||||
|
||||
@ -99,7 +99,8 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "\wx233\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
@ -109,7 +110,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib \wx233\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "BaseServ - Win32 Release DLL"
|
||||
|
||||
@ -186,12 +187,12 @@ SOURCE=.\server.rc
|
||||
!ELSEIF "$(CFG)" == "BaseServ - Win32 Debug"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x410 /i "c:\wx229\wx" /i /wx229/include" "
|
||||
# ADD RSC /l 0x410 /i "c:\wx233\wx" /i /wx229/include" "
|
||||
|
||||
!ELSEIF "$(CFG)" == "BaseServ - Win32 Debug DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
# ADD RSC /l 0x809 /i "\wx233\include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "BaseServ - Win32 Release DLL"
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
#include <wx/wx.h>
|
||||
#include <wx/datetime.h>
|
||||
#include <wx/snglinst.h>
|
||||
#include <wx/socket.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include "xml.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// Utilities
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -12,6 +12,10 @@
|
||||
wxString Date2String(const wxDateTime& date);
|
||||
wxDateTime String2Date(const wxString& str);
|
||||
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, const wxChar* str);
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, wxString str);
|
||||
wxSocketBase& operator<<(wxSocketBase& outf, size_t num);
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// THashString
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -59,6 +63,8 @@ private:
|
||||
int m_nTmpCounter;
|
||||
|
||||
protected:
|
||||
wxSingleInstanceChecker* m_SingleInstance;
|
||||
|
||||
// Pure virtual functions!
|
||||
virtual const wxChar* GetAppName() const = 0;
|
||||
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs) = 0;
|
||||
@ -66,25 +72,31 @@ protected:
|
||||
virtual bool CanProcessCommand(wxString& cmd, wxSocketBase& outs);
|
||||
|
||||
virtual int GetDefaultPort() const; // Retrieves Port usig GetConfigInt
|
||||
virtual wxString GetLogFileName() const; // Retrieves Port usig GetConfigString
|
||||
virtual wxString GetDocumentRoot() const; // Retrieves Port usig GetConfigString
|
||||
virtual wxString GetDocumentRoot() const;
|
||||
|
||||
TXmlItem& AddLogo(TXmlItem& td) const;
|
||||
virtual TXmlItem& AddLogo(TXmlItem& td) const;
|
||||
|
||||
// Used by SendFile
|
||||
void SendContent(wxFileInputStream& inf, wxSocketBase& sock);
|
||||
void SendNotModifiedFile(wxSocketBase& sock);
|
||||
|
||||
public:
|
||||
// Utilities
|
||||
virtual const wxChar* GetConfigName() const;
|
||||
virtual void SetConfigString(const wxChar* key, const wxChar* val, const wxChar* app = NULL) const;
|
||||
|
||||
void SetConfigInt(const wxChar* key, int val, const wxChar* app = NULL) const;
|
||||
virtual wxString GetConfigString(const wxChar* key, const wxChar* def = "", const wxChar* app = NULL) const;
|
||||
int GetConfigInt(const wxChar* key, int def = 0, const wxChar* app = NULL) const; // Uses GetConfigString
|
||||
bool GetConfigBool(const wxChar* key, bool def = false, const wxChar* app = NULL) const; // Uses GetConfigString
|
||||
virtual wxString GetLogFileName() const;
|
||||
|
||||
wxString GetTempFilename();
|
||||
TXmlItem& CreatePageBody(TXmlItem& html, wxString header = "") const;
|
||||
TXmlItem& AddLinkButton(TXmlItem& body, const wxChar* strCaption, const wxChar* strHref) const;
|
||||
|
||||
void SendFile(wxString strFilename, wxSocketBase& outs);
|
||||
void MessageBox(const wxChar* caption, const wxChar* msg, wxSocketBase& outs);
|
||||
void SendFile(wxString strFilename, wxSocketBase& sock);
|
||||
void MessageBox(const wxChar* caption, const wxChar* msg, wxSocketBase& sock);
|
||||
|
||||
wxString UnformatString(const wxString& strFormString) const;
|
||||
int ParseArguments(wxString args, THashTable& hashArgs) const;
|
||||
|
||||
@ -23,6 +23,10 @@ bool TCoffeeServer::IsMagicName(wxString& strFilename) const
|
||||
wxString strName;
|
||||
wxSplitPath(strFilename, NULL, &strName, NULL);
|
||||
strName.MakeLower();
|
||||
const int q = strName.Find('?');
|
||||
if (q > 0)
|
||||
strName.Truncate(q);
|
||||
|
||||
if (strName == "index")
|
||||
{
|
||||
strFilename = strName;
|
||||
@ -32,27 +36,68 @@ bool TCoffeeServer::IsMagicName(wxString& strFilename) const
|
||||
{
|
||||
strFilename = GetLogFileName();
|
||||
}
|
||||
if (strName == "buy")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void TCoffeeServer::GenerateFile(wxString& strFilename)
|
||||
{
|
||||
wxString strName;
|
||||
wxString strName, strArgs;
|
||||
wxSplitPath(strFilename, NULL, &strName, NULL);
|
||||
strName.MakeLower();
|
||||
const int q = strFilename.Find('?');
|
||||
if (q > 0)
|
||||
strArgs = strFilename.Mid(q+1);
|
||||
|
||||
const char* items[] = { "Coffee", "Cappuccino", "Chocolate", "Milk", "Tea", "Brioche", NULL };
|
||||
|
||||
if (strName == "index")
|
||||
{
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html);
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
|
||||
body.AddChild("h1") << "Welcome to the virtual coffee machine";
|
||||
body.AddChild("br");
|
||||
|
||||
TXmlItem& table = body.AddChild("table");
|
||||
table.SetAttr("width", "50%").SetAttr("border", "1");
|
||||
|
||||
for (int i = 0; items[i]; i++)
|
||||
{
|
||||
TXmlItem& row = table.AddChild("tr");
|
||||
TXmlItem& a = row.AddChild("td").AddChild("a");
|
||||
a.SetAttr("href", wxString::Format("buy.cgi?%d", i));
|
||||
a.AddChild("img").SetAttr("src", "rbutton.gif").SetAttr("border", "0");
|
||||
row.AddChild("td") << items[i];
|
||||
}
|
||||
|
||||
TXmlItem& cen = body.AddChild("h1").AddChild("center");
|
||||
cen << "Just Kidding :-)";
|
||||
cen.AddChild("br");
|
||||
cen.AddChild("img").SetAttr("src", GetConfigString("Icon"));
|
||||
strFilename = GetTempFilename();
|
||||
body.Save(strFilename);
|
||||
html.Save(strFilename);
|
||||
}
|
||||
|
||||
if (strName == "buy")
|
||||
{
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
|
||||
const int nItem = atoi(strArgs);
|
||||
const wxString strItemCode = wxString::Format("Item%d", nItem);
|
||||
const int nSold = GetConfigInt(strItemCode)+1;
|
||||
SetConfigInt(strItemCode, nSold);
|
||||
|
||||
body.AddChild("h1") << wxString::Format("%d %ss sold.", nSold, items[nItem]);
|
||||
body.AddChild("br");
|
||||
body.AddChild("h2") << "You'll be billed 1 Euro on your next wage :-)";
|
||||
|
||||
AddLinkButton(body, "Return to main page", "index.htm");
|
||||
strFilename = GetTempFilename();
|
||||
html.Save(strFilename);
|
||||
}
|
||||
|
||||
if (strName == "log")
|
||||
{
|
||||
strFilename = GetLogFileName();
|
||||
|
||||
@ -8,12 +8,12 @@ CFG=Coffee - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Coffee.mak".
|
||||
!MESSAGE NMAKE /f "coffee.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Coffee.mak" CFG="Coffee - Win32 Debug"
|
||||
!MESSAGE NMAKE /f "coffee.mak" CFG="Coffee - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
@ -99,7 +99,8 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "\wx233\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
@ -109,7 +110,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib \wx233\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"..\exe\servers\Coffee.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Coffee - Win32 Release DLL"
|
||||
|
||||
@ -175,6 +176,10 @@ SOURCE=.\Coffee.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mutex.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\xml.h
|
||||
# End Source File
|
||||
# End Group
|
||||
@ -190,12 +195,12 @@ SOURCE=.\server.rc
|
||||
!ELSEIF "$(CFG)" == "Coffee - Win32 Debug"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x410 /i "c:\wx229\wx" /i /wx229/include" "
|
||||
# ADD RSC /l 0x410 /i "c:\wx233\wx" /i /wx229/include" "
|
||||
|
||||
!ELSEIF "$(CFG)" == "Coffee - Win32 Debug DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
# ADD RSC /l 0x809 /i "\wx233\include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Coffee - Win32 Release DLL"
|
||||
|
||||
|
||||
614
server/dbserver.cpp
Executable file
614
server/dbserver.cpp
Executable file
@ -0,0 +1,614 @@
|
||||
#include "BaseServ.h"
|
||||
|
||||
#include <wx/db.h>
|
||||
#include <wx/mstream.h>
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TDataBase
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TDataBase : public wxHashTable
|
||||
{
|
||||
wxDbConnectInf m_ci;
|
||||
wxDb* m_db;
|
||||
|
||||
public:
|
||||
bool Open(const wxString& dsn, const wxString& user,
|
||||
const wxString& password, const wxString& path);
|
||||
bool IsOpen() const;
|
||||
void Close();
|
||||
wxDb& DataBase() { return *m_db; }
|
||||
|
||||
TDataBase();
|
||||
virtual ~TDataBase();
|
||||
};
|
||||
|
||||
bool TDataBase::Open(const wxString& dsn, const wxString& user,
|
||||
const wxString& password, const wxString& path)
|
||||
{
|
||||
Close();
|
||||
|
||||
m_ci.SetDsn(dsn);
|
||||
m_ci.SetUserID(user);
|
||||
m_ci.SetPassword(password);
|
||||
m_ci.SetDefaultDir(path);
|
||||
|
||||
if (m_ci.AllocHenv())
|
||||
{
|
||||
m_db = ::wxDbGetConnection(&m_ci, false); // Forward only?
|
||||
if (m_db == NULL)
|
||||
m_ci.FreeHenv();
|
||||
else
|
||||
{
|
||||
const wxString strLog = GetServerApp().GetLogFileName();
|
||||
if (!strLog.IsEmpty())
|
||||
m_db->SetSqlLogging(sqlLogON, strLog, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
return IsOpen();
|
||||
}
|
||||
|
||||
void TDataBase::Close()
|
||||
{
|
||||
if (m_db)
|
||||
{
|
||||
m_db->SetSqlLogging(sqlLogOFF);
|
||||
::wxDbFreeConnection(m_db);
|
||||
m_db = NULL;
|
||||
m_ci.FreeHenv();
|
||||
}
|
||||
}
|
||||
|
||||
bool TDataBase::IsOpen() const
|
||||
{
|
||||
return m_db != NULL;
|
||||
}
|
||||
|
||||
TDataBase::TDataBase() : wxHashTable(wxKEY_STRING), m_db(NULL)
|
||||
{
|
||||
m_ci.Henv = 0;
|
||||
DeleteContents(true);
|
||||
}
|
||||
|
||||
TDataBase::~TDataBase()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStudy
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStudy : public wxHashTable
|
||||
{
|
||||
wxString m_strName, m_strUser, m_strPass, m_strPath;
|
||||
|
||||
public:
|
||||
TDataBase& DB(long firm); // 0 = COM
|
||||
TStudy(const char* strName, const char* strUser, const char* strPass, const char* strPath);
|
||||
};
|
||||
|
||||
TDataBase& TStudy::DB(long firm)
|
||||
{
|
||||
TDataBase* db = (TDataBase*)Get(firm);
|
||||
if (db == NULL)
|
||||
{
|
||||
wxString strDsn, strPath;
|
||||
|
||||
if (firm > 0)
|
||||
{
|
||||
strDsn.sprintf("%s%ld", m_strName, firm);
|
||||
strPath.sprintf("%s/%05lda", m_strPath, firm);
|
||||
}
|
||||
else
|
||||
{
|
||||
strDsn = m_strName;
|
||||
strPath.sprintf("%s/com", m_strPath);
|
||||
}
|
||||
|
||||
db = new TDataBase;
|
||||
db->Open(strDsn, m_strUser, m_strPass, strPath);
|
||||
Put(firm, db);
|
||||
}
|
||||
return *db;
|
||||
}
|
||||
|
||||
TStudy::TStudy(const char* strName, const char* strUser, const char* strPass, const char* strBasePath)
|
||||
: wxHashTable(wxKEY_INTEGER), m_strName(strName), m_strUser(strUser), m_strPass(strPass)
|
||||
{
|
||||
m_strPath.sprintf("%s/%s", strBasePath, strName);
|
||||
DeleteContents(true);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TDataBaseServer
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TDataBaseServer : public TBaseServerApp
|
||||
{
|
||||
protected:
|
||||
virtual const wxChar* GetAppName() const;
|
||||
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
|
||||
virtual bool Initialization();
|
||||
virtual bool Deinitialization();
|
||||
|
||||
protected:
|
||||
void AddAsterisk(const wxString& strField, const wxString& strQuery,
|
||||
TDataBase& db, wxArrayString& arr);
|
||||
wxString ParseQuery(const wxString& strOriginalQuery, TDataBase& db, wxArrayString& arr);
|
||||
void WriteTable(const wxString& strDsn, const wxString& strUser,
|
||||
const wxString& strPass, const wxString& strOriginalQuery,
|
||||
wxFileOutputStream& out);
|
||||
|
||||
wxString GetSoapParam(const TXmlItem& xmlMethod, const char* strParam);
|
||||
void SoapProcessQuery(const TXmlItem &xmlMethod, wxFileOutputStream& out);
|
||||
void SoapProcessMethod(const TXmlItem& xmlMethod, wxFileOutputStream& out);
|
||||
|
||||
public:
|
||||
bool IsMagicName(wxString& strFilename) const;
|
||||
|
||||
void ProcessFormQuery(const wxString& strFileName, THashTable& hashArgs);
|
||||
void ProcessFormCommand(wxString cmd, wxSocketBase& outs);
|
||||
void ProcessSoapCommand(wxString cmd, wxSocketBase& outs);
|
||||
|
||||
void GenerateIndex(wxString& strFilename);
|
||||
void GenerateSql(wxString& strFilename);
|
||||
void GenerateFile(wxString& strFilename);
|
||||
};
|
||||
|
||||
// Implementare almeno queste due funzioni pure virtuali
|
||||
|
||||
const wxChar* TDataBaseServer::GetAppName() const
|
||||
{
|
||||
return "DataBase";
|
||||
}
|
||||
|
||||
bool TDataBaseServer::IsMagicName(wxString& strFilename) const
|
||||
{
|
||||
wxString strName;
|
||||
wxSplitPath(strFilename, NULL, &strName, NULL);
|
||||
strName.MakeLower();
|
||||
const int q = strName.Find('?');
|
||||
if (q > 0)
|
||||
strName.Truncate(q);
|
||||
|
||||
if (strName == "index" || strName == "sql")
|
||||
{
|
||||
strFilename = strName;
|
||||
return true;
|
||||
}
|
||||
if (strName == "log")
|
||||
{
|
||||
strFilename = GetLogFileName();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void TDataBaseServer::GenerateIndex(wxString& strFilename)
|
||||
{
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
|
||||
TXmlItem& table = body.AddChild("table");
|
||||
table.SetAttr("border", "1");
|
||||
table.SetAttr("width", "70%");
|
||||
|
||||
TXmlItem& tr0 = body.AddChild("tr");
|
||||
TXmlItem& aq = tr0.AddChild("td").AddChild("a");
|
||||
aq.SetAttr("href", "sql.htm"); aq << "SQL query";
|
||||
tr0.AddChild("td") << "Perform any SQL query on the selected Data Source";
|
||||
|
||||
TXmlItem& tr1 = body.AddChild("tr");
|
||||
TXmlItem& al = tr1.AddChild("td").AddChild("a");
|
||||
al.SetAttr("href", "Log"); al << "Log File";
|
||||
tr1.AddChild("td") << "Display current server log";
|
||||
|
||||
TXmlItem& tr2 = body.AddChild("tr");
|
||||
TXmlItem& as = tr2.AddChild("td").AddChild("a");
|
||||
as.SetAttr("href", "stop.cgi"); as << "Stop";
|
||||
tr2.AddChild("td") << "Stop this database server";
|
||||
|
||||
strFilename = GetTempFilename();
|
||||
html.Save(strFilename);
|
||||
}
|
||||
|
||||
void TDataBaseServer::GenerateSql(wxString& strFilename)
|
||||
{
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
|
||||
TXmlItem& form = body.AddChild("form");
|
||||
form.SetAttr("method", "post");
|
||||
form.SetAttr("action", "Query.cgi");
|
||||
|
||||
TXmlItem& table = form.AddChild("table").SetAttr("width", "70%");
|
||||
|
||||
TXmlItem& tr0 = table.AddChild("tr");
|
||||
tr0.AddChild("td") << "Data Source Name";
|
||||
TXmlItem& dsn = tr0.AddChild("td").AddChild("input");
|
||||
dsn.SetAttr("type", "string"); dsn.SetAttr("name", "Dsn");
|
||||
dsn.SetAttr("value", GetConfigString("Dsn"));
|
||||
|
||||
TXmlItem& tr1 = table.AddChild("tr");
|
||||
tr1.AddChild("td") << "User";
|
||||
TXmlItem& user = tr1.AddChild("td").AddChild("input");
|
||||
user.SetAttr("type", "string"); user.SetAttr("name", "User");
|
||||
user.SetAttr("value", GetConfigString("User"));
|
||||
|
||||
TXmlItem& tr2 = table.AddChild("tr");
|
||||
tr2.AddChild("td") << "Password";
|
||||
TXmlItem& pass = tr2.AddChild("td").AddChild("input");
|
||||
pass.SetAttr("type", "password"); pass.SetAttr("name", "User");
|
||||
|
||||
form.AddChild("br");
|
||||
form.AddChild("h3") << "SQL query:";
|
||||
TXmlItem& q = form.AddChild("textarea");
|
||||
q.SetAttr("name", "Query");
|
||||
q.SetAttr("cols", "80"); q.SetAttr("rows", "10");
|
||||
|
||||
wxString query = GetConfigString("Query");
|
||||
q << query;
|
||||
|
||||
form.AddChild("br");
|
||||
form.AddChild("br");
|
||||
|
||||
TXmlItem& sub = form.AddChild("input");
|
||||
sub.SetAttr("type", "submit");
|
||||
sub.SetAttr("value", "Execute");
|
||||
|
||||
AddLinkButton(body, "Return to main page", "/");
|
||||
|
||||
strFilename = GetTempFilename();
|
||||
html.Save(strFilename);
|
||||
}
|
||||
|
||||
void TDataBaseServer::GenerateFile(wxString& strFilename)
|
||||
{
|
||||
wxString strName, strArgs;
|
||||
wxSplitPath(strFilename, NULL, &strName, NULL);
|
||||
strName.MakeLower();
|
||||
const int q = strFilename.Find('?');
|
||||
if (q > 0)
|
||||
strArgs = strFilename.Mid(q+1);
|
||||
|
||||
if (strName == "index")
|
||||
GenerateIndex(strFilename); else
|
||||
if (strName == "sql")
|
||||
GenerateSql(strFilename); else
|
||||
if (strName == "log")
|
||||
strFilename = GetLogFileName();
|
||||
}
|
||||
|
||||
void TDataBaseServer::AddAsterisk(const wxString& strField, const wxString& strQuery,
|
||||
TDataBase& db, wxArrayString& arr)
|
||||
{
|
||||
wxString strTable;
|
||||
const int nDot = strField.Find(".*");
|
||||
if (nDot < 0)
|
||||
{
|
||||
const int nFrom = strQuery.Find("FROM ");
|
||||
if (nFrom > 0)
|
||||
strTable = strQuery.Mid(nFrom+5);
|
||||
const int nComma = strTable.Find(',');
|
||||
const int nSpace = strTable.Find(' ');
|
||||
int nTrunc = strTable.Length();
|
||||
if (nComma > 0)
|
||||
nTrunc = nComma;
|
||||
if (nSpace > 0 && nSpace < nTrunc)
|
||||
nTrunc = nSpace;
|
||||
strTable.Truncate(nTrunc);
|
||||
}
|
||||
else
|
||||
strTable = strField.Left(nDot);
|
||||
strTable.Trim(false); strTable.Trim(true);
|
||||
|
||||
UWORD numCols;
|
||||
wxDbColInf* dci = db.DataBase().GetColumns(strTable, &numCols);
|
||||
|
||||
wxString strFieldName;
|
||||
for (UWORD i = 0; i < numCols; i++)
|
||||
{
|
||||
if (strField == "*")
|
||||
strFieldName = dci[i].colName;
|
||||
else
|
||||
{
|
||||
strFieldName = strTable;
|
||||
strFieldName += ".";
|
||||
strFieldName += dci[i].colName;
|
||||
}
|
||||
arr.Add(strFieldName);
|
||||
}
|
||||
}
|
||||
|
||||
wxString TDataBaseServer::ParseQuery(const wxString& strOriginalQuery, TDataBase& db, wxArrayString& arr)
|
||||
{
|
||||
wxString strQuery;
|
||||
|
||||
const int nSelect = strOriginalQuery.Find("SELECT ");
|
||||
const int nFrom = strOriginalQuery.Find("FROM ");
|
||||
|
||||
if (nSelect >= 0 && nFrom > nSelect)
|
||||
{
|
||||
wxString strFields = strOriginalQuery.Mid(nSelect+7, nFrom-nSelect-7);
|
||||
strFields.Trim(false); strFields.Trim(true);
|
||||
while(!strFields.IsEmpty())
|
||||
{
|
||||
const int nComma = strFields.Find(',');
|
||||
wxString strField = nComma < 0 ? strFields : strFields.Mid(0, nComma);
|
||||
strField.Trim(); strField.Trim(false);
|
||||
if (strField.Find("*") >= 0)
|
||||
AddAsterisk(strField, strOriginalQuery, db, arr);
|
||||
else
|
||||
arr.Add(strField);
|
||||
if (nComma > 0)
|
||||
strFields = strFields.Mid(nComma+1);
|
||||
else
|
||||
break;
|
||||
}
|
||||
strQuery = "SELECT ";
|
||||
for (size_t i = 0; i < arr.GetCount(); i++)
|
||||
{
|
||||
if (i > 0)
|
||||
strQuery << ",";
|
||||
strQuery << arr[i];
|
||||
}
|
||||
strQuery << strOriginalQuery.Mid(nFrom-1);
|
||||
}
|
||||
else
|
||||
strQuery = strOriginalQuery;
|
||||
|
||||
return strQuery;
|
||||
}
|
||||
|
||||
void TDataBaseServer::WriteTable(const wxString& strDsn, const wxString& strUser,
|
||||
const wxString& strPass, const wxString& strOriginalQuery,
|
||||
wxFileOutputStream& out)
|
||||
{
|
||||
const clock_t tTotalStart = clock();
|
||||
|
||||
clock_t tQueryTime = 0;
|
||||
clock_t tRetrieveTime = 0;
|
||||
clock_t tTotalTime = 0;
|
||||
size_t nRecords = 0;
|
||||
|
||||
out << "<table border=1>\n";
|
||||
|
||||
const wxString strBasePath = GetConfigString("DataPath");
|
||||
TStudy s(strDsn, strUser, strPass, strBasePath);
|
||||
TDataBase& d = s.DB(0); // Ditta/COM
|
||||
if (d.IsOpen())
|
||||
{
|
||||
wxArrayString arr;
|
||||
const wxString strQuery = ParseQuery(strOriginalQuery, d, arr);
|
||||
|
||||
wxDb& db = d.DataBase();
|
||||
|
||||
const clock_t tQueryStart = clock();
|
||||
db.ExecSql(strQuery);
|
||||
tQueryTime = clock() - tQueryStart;
|
||||
|
||||
const int nColumns = arr.GetCount();
|
||||
if (nColumns > 0)
|
||||
{
|
||||
out << " <thead>\n";
|
||||
for (int i = 0; i < nColumns; i++)
|
||||
out << " <th>" << arr[i] << "</th>\n";
|
||||
out << " </thead>\n";
|
||||
|
||||
const int bufsize = 33000;
|
||||
wxChar* buffer = new wxChar[bufsize];
|
||||
|
||||
const clock_t tRetrieveStart = clock();
|
||||
for (nRecords = 0; db.GetNext(); nRecords++)
|
||||
{
|
||||
out << " <tr>\n";
|
||||
for (int c = 1; c <= nColumns; c++)
|
||||
{
|
||||
SDWORD cb;
|
||||
if (db.GetData(c, SQL_C_CHAR, buffer, bufsize, &cb))
|
||||
{
|
||||
if (strcmp(buffer, "1899-12-30") == 0)
|
||||
*buffer = '\0';
|
||||
out << " <td>" << buffer << "</td>\n";
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
out << " </tr>\n";
|
||||
}
|
||||
delete buffer;
|
||||
tRetrieveTime = clock() - tRetrieveStart;
|
||||
}
|
||||
}
|
||||
out << "</table>\n";
|
||||
|
||||
tTotalTime = clock() - tTotalStart;
|
||||
|
||||
WriteLog(wxString::Format("--- %u Records. Query:%u Retrieve:%u Total:%u",
|
||||
nRecords, tQueryTime, tRetrieveTime, tTotalTime));
|
||||
}
|
||||
|
||||
void TDataBaseServer::ProcessFormQuery(const wxString& strFileName, THashTable& hashArgs)
|
||||
{
|
||||
const wxString strDsn = hashArgs.Get("Dsn");
|
||||
const wxString strUser = hashArgs.Get("User");
|
||||
const wxString strPass = hashArgs.Get("Password");
|
||||
const wxString strOriginalQuery = hashArgs.Get("Query");
|
||||
|
||||
SetConfigString("Dsn", strDsn);
|
||||
SetConfigString("User", strUser);
|
||||
|
||||
wxString strQuery = strOriginalQuery;
|
||||
strQuery.Replace("\r\n", " ");
|
||||
SetConfigString("Query", strQuery);
|
||||
|
||||
wxFileOutputStream out(strFileName);
|
||||
|
||||
out << "<html>\n";
|
||||
out << "<body bgcolor='#EFCEAD' background='back.gif'>\n";
|
||||
|
||||
WriteTable(strDsn, strUser, strPass, strOriginalQuery, out);
|
||||
|
||||
out << "</body>\n";
|
||||
out << "</html>\n";
|
||||
}
|
||||
|
||||
void TDataBaseServer::ProcessFormCommand(wxString cmd, wxSocketBase& outs)
|
||||
{
|
||||
const int stop = cmd.Find(" HTTP");
|
||||
wxString strFileName = cmd.Mid(5, stop-5).Trim();
|
||||
|
||||
wxString strName, args;
|
||||
wxSplitPath(strFileName, NULL, &strName, NULL);
|
||||
|
||||
const int pos = cmd.Find("\r\n\r\n");
|
||||
if (pos > 0)
|
||||
args = cmd.Mid(pos+4);
|
||||
|
||||
THashTable hashArgs(13);
|
||||
ParseArguments(args, hashArgs);
|
||||
|
||||
strFileName = GetTempFilename();
|
||||
|
||||
if (strName == "Query")
|
||||
ProcessFormQuery(strFileName, hashArgs);
|
||||
|
||||
SendFile(strFileName, outs);
|
||||
}
|
||||
|
||||
wxString TDataBaseServer::GetSoapParam(const TXmlItem &xmlMethod, const char* strParam)
|
||||
{
|
||||
wxString val;
|
||||
const TXmlItem* xml = xmlMethod.FindFirst(strParam);
|
||||
if (xml != NULL)
|
||||
val = xml->GetEnclosedText();
|
||||
return val;
|
||||
}
|
||||
|
||||
void TDataBaseServer::SoapProcessQuery(const TXmlItem &xmlMethod, wxFileOutputStream& out)
|
||||
{
|
||||
const wxString dsn = GetSoapParam(xmlMethod, "dsn");
|
||||
const wxString usr = GetSoapParam(xmlMethod, "user");
|
||||
const wxString pwd = GetSoapParam(xmlMethod, "password");
|
||||
const wxString sql = GetSoapParam(xmlMethod, "sql");
|
||||
WriteTable(dsn, usr, pwd, sql, out);
|
||||
}
|
||||
|
||||
void TDataBaseServer::SoapProcessMethod(const TXmlItem &xmlMethod, wxFileOutputStream& out)
|
||||
{
|
||||
wxString str = xmlMethod.GetTag();
|
||||
str << "Result";
|
||||
out << "<" << str << ">\n";
|
||||
|
||||
if (xmlMethod.GetTag() == "m:query")
|
||||
SoapProcessQuery(xmlMethod, out);
|
||||
|
||||
out << "</" << str << ">\n";
|
||||
}
|
||||
|
||||
void TDataBaseServer::ProcessSoapCommand(wxString cmd, wxSocketBase& sock)
|
||||
{
|
||||
const wxString strFilename = GetTempFilename();
|
||||
|
||||
if (!strFilename.IsEmpty())
|
||||
{
|
||||
wxFileOutputStream outf(strFilename);
|
||||
outf << "<SOAP-ENV:Envelope>\n<SOAP-ENV:Body>\n";
|
||||
|
||||
const int soapstart = cmd.Find("<SOAP-ENV:");
|
||||
if (soapstart > 0)
|
||||
{
|
||||
const size_t soaplen = cmd.length() - soapstart;
|
||||
const char* buff = (const char*)cmd;
|
||||
buff += soapstart;
|
||||
wxMemoryInputStream input(buff, soaplen);
|
||||
TXmlItem query;
|
||||
if (query.Read(input))
|
||||
{
|
||||
const TXmlItem* pxmlBody = query.FindFirst("SOAP-ENV:Body");
|
||||
if (pxmlBody != NULL) for (int m = 0; ; m++)
|
||||
{
|
||||
const TXmlItem* pxmlMethod = pxmlBody->GetChild(m);
|
||||
if (pxmlMethod == NULL)
|
||||
break;
|
||||
if (pxmlMethod->GetTag().StartsWith("m:"))
|
||||
{
|
||||
SoapProcessMethod(*pxmlMethod, outf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
outf << "</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n";
|
||||
}
|
||||
|
||||
wxFileInputStream inf(strFilename);
|
||||
|
||||
sock << "HTTP/1.1 200 OK\n";
|
||||
sock << "Server: " << GetAppName() << "\n";
|
||||
sock << "Host: " << wxGetFullHostName() << "\n";
|
||||
sock << "Connection: keep-alive\n";
|
||||
sock << "Content-Type: text/xml; charset=utf-8\n";
|
||||
sock << "Content-Length: " << inf.GetSize() << "\n";
|
||||
sock << "Date: " << wxDateTime::Now().Format("%#c") << "\n";
|
||||
sock << "\n";
|
||||
|
||||
SendContent(inf, sock);
|
||||
}
|
||||
|
||||
void TDataBaseServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
|
||||
{
|
||||
if (cmd.StartsWith("GET "))
|
||||
{
|
||||
const int stop = cmd.Find(" HTTP");
|
||||
wxString str = cmd.Mid(4, stop-4).Trim();
|
||||
if (str == "/")
|
||||
str += "index.htm";
|
||||
wxString strFilename = GetDocumentRoot() + str;
|
||||
|
||||
if (IsMagicName(strFilename))
|
||||
GenerateFile(strFilename);
|
||||
else
|
||||
{
|
||||
const int ims = cmd.Find("If-Modified-Since: ");
|
||||
if (ims > 0)
|
||||
{
|
||||
const wxString strDate = cmd.Mid(ims+19, 24);
|
||||
wxDateTime tIms;
|
||||
if (tIms.ParseDateTime(strDate))
|
||||
{
|
||||
const wxDateTime tFile = ::wxFileModificationTime(strFilename);
|
||||
if (tFile <= tIms)
|
||||
{
|
||||
SendNotModifiedFile(outs);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SendFile(strFilename, outs);
|
||||
} else
|
||||
if (cmd.StartsWith("POST "))
|
||||
{
|
||||
if (cmd.Find("SOAPAction") > 0)
|
||||
ProcessSoapCommand(cmd, outs);
|
||||
else
|
||||
ProcessFormCommand(cmd, outs);
|
||||
}
|
||||
}
|
||||
|
||||
bool TDataBaseServer::Initialization()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TDataBaseServer::Deinitialization()
|
||||
{
|
||||
wxDbCloseConnections();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Istanziare l'applicazione principale
|
||||
|
||||
IMPLEMENT_APP(TDataBaseServer)
|
||||
@ -1,7 +1,5 @@
|
||||
#include "BaseServ.h"
|
||||
#include <wx/mimetype.h>
|
||||
#include <wx/mstream.h>
|
||||
#include <wx/sckstrm.h>
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
@ -45,6 +43,7 @@ public:
|
||||
|
||||
wxString OriginalEntry(size_t i);
|
||||
wxString TranslatedEntry(size_t i);
|
||||
|
||||
void UpdateEntry(size_t i, const wxString& strValue);
|
||||
|
||||
TDictionary();
|
||||
@ -82,11 +81,11 @@ wxString TDictionary::Accentuate(const wxString& str) const
|
||||
bello[a-1] = 'é';
|
||||
break;
|
||||
case 'i':
|
||||
bello[a-1] = 'ì'; break;
|
||||
bello[a-1] = 'ì'; break;
|
||||
case 'o':
|
||||
bello[a-1] = 'ò'; break;
|
||||
bello[a-1] = 'ò'; break;
|
||||
case 'u':
|
||||
bello[a-1] = 'ù'; break;
|
||||
bello[a-1] = 'ù'; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -288,6 +287,8 @@ protected:
|
||||
virtual const wxChar* GetAppName() const;
|
||||
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
|
||||
|
||||
size_t FindIndex(const wxString& strKey);
|
||||
|
||||
public:
|
||||
bool DoTranslate(const TXmlItem& xmlMethod, TXmlItem& xmlAnswer);
|
||||
bool SoapProcessMethod(const TXmlItem& xmlMethod, TXmlItem& xmlAnswer);
|
||||
@ -446,7 +447,7 @@ void TDictionaryServer::GenerateFile(wxString& strFilename)
|
||||
table.SetAttr("border", "1"); table.SetAttr("width", "100%");
|
||||
table.AddChild("caption").AddChild("h1") << wxString::Format("%c", cFilter);
|
||||
|
||||
TXmlItem& table_th = table.AddChild("tr");
|
||||
TXmlItem& table_th = table.AddChild("thead");
|
||||
TXmlItem& th0 = table_th.AddChild("th");
|
||||
TXmlItem& th1 = table_th.AddChild("th");
|
||||
th1 << "Original text";
|
||||
@ -466,6 +467,25 @@ void TDictionaryServer::GenerateFile(wxString& strFilename)
|
||||
html.Save(strFilename);
|
||||
}
|
||||
|
||||
// Convert code (B-23) to position (107)
|
||||
size_t TDictionaryServer::FindIndex(const wxString& strKey)
|
||||
{
|
||||
const wxChar cFirst = toupper(strKey[0]);
|
||||
const size_t nPos = atoi(strKey.Mid(2));
|
||||
size_t nFound = 0;
|
||||
for (size_t i = 0; i < m_DevotoOli.GetCount(); i++)
|
||||
{
|
||||
const wxChar c = toupper(m_DevotoOli.OriginalEntry(i)[0]);
|
||||
if (c == cFirst)
|
||||
{
|
||||
if (nFound == nPos)
|
||||
break;
|
||||
nFound++;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
void TDictionaryServer::CallCgi(wxString& strFileName)
|
||||
{
|
||||
wxString strName, strExt, strArgs;
|
||||
@ -479,26 +499,12 @@ void TDictionaryServer::CallCgi(wxString& strFileName)
|
||||
if (strExt == "cgi")
|
||||
{
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html);
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
if (strName == "EditEntry")
|
||||
{
|
||||
// Convert code (B-23) to position (107)
|
||||
const wxChar cFirst = toupper(strArgs[0]);
|
||||
const size_t nPos = atoi(strArgs.Mid(2));
|
||||
size_t nFound = 0;
|
||||
for (size_t i = 0; i < m_DevotoOli.GetCount(); i++)
|
||||
{
|
||||
const wxChar c = toupper(m_DevotoOli.OriginalEntry(i)[0]);
|
||||
if (c == cFirst)
|
||||
{
|
||||
if (nFound == nPos)
|
||||
break;
|
||||
nFound++;
|
||||
}
|
||||
}
|
||||
const size_t i = FindIndex(strArgs);
|
||||
|
||||
body.AddChild("h2") << "Edit Entry " << strArgs;
|
||||
body.AddChild("br");
|
||||
|
||||
TXmlItem& form = body.AddChild("form");
|
||||
form.SetAttr("method", "post");
|
||||
@ -514,7 +520,7 @@ void TDictionaryServer::CallCgi(wxString& strFileName)
|
||||
|
||||
TXmlItem& ent = form.AddChild("input");
|
||||
ent.SetAttr("type", "hidden"); ent.SetAttr("name", "Entry");
|
||||
ent.SetAttr("value", wxString::Format("%d", i));
|
||||
ent.SetAttr("value", strArgs);
|
||||
|
||||
TXmlItem& eng = form.AddChild("textarea");
|
||||
eng.SetAttr("name", "Trans");
|
||||
@ -527,6 +533,8 @@ void TDictionaryServer::CallCgi(wxString& strFileName)
|
||||
TXmlItem& sub = form.AddChild("input");
|
||||
sub.SetAttr("type", "submit");
|
||||
sub.SetAttr("value", "Update Translation");
|
||||
|
||||
AddLinkButton(body, "Return to main page", "/");
|
||||
}
|
||||
if (strName == "TranslateSentence")
|
||||
{
|
||||
@ -595,18 +603,16 @@ void TDictionaryServer::ProcessSoapCommand(wxString cmd, wxSocketBase& sock)
|
||||
}
|
||||
}
|
||||
const wxString strResult = xmlEnvelope.AsString();
|
||||
wxChar strLength[16]; sprintf(strLength, "%d", strResult.Length());
|
||||
|
||||
wxSocketOutputStream outs(sock);
|
||||
outs << "HTTP/1.1 200 OK" << endl;
|
||||
outs << "Connection: keep-alive" << endl;
|
||||
outs << "Content-Length: " << strLength << endl;
|
||||
outs << "Content-Type: text/xml; charset=utf-8" << endl;
|
||||
outs << "Date: " << wxDateTime::Now().Format("%#c") << endl;
|
||||
outs << "Server: " << GetAppName() << endl;
|
||||
outs << "Host: " << wxGetHostName() << endl;
|
||||
outs << endl;
|
||||
outs << strResult;
|
||||
sock << "HTTP/1.1 200 OK" << endl;
|
||||
sock << "Connection: keep-alive" << endl;
|
||||
sock << "Content-Length: " << strResult.Length() << endl;
|
||||
sock << "Content-Type: text/xml; charset=utf-8" << endl;
|
||||
sock << "Date: " << wxDateTime::Now().Format("%#c") << endl;
|
||||
sock << "Server: " << GetAppName() << endl;
|
||||
sock << "Host: " << wxGetFullHostName() << endl;
|
||||
sock << endl;
|
||||
sock << strResult;
|
||||
}
|
||||
|
||||
void TDictionaryServer::ProcessHttpGet(wxString cmd, wxSocketBase& outs)
|
||||
@ -629,11 +635,22 @@ void TDictionaryServer::ProcessHttpGet(wxString cmd, wxSocketBase& outs)
|
||||
void TDictionaryServer::ProcessFormUpdateEntry(wxString& strFileName,
|
||||
THashTable& hashArgs)
|
||||
{
|
||||
const size_t nEntry = atoi(hashArgs.Get("Entry"));
|
||||
const wxString key = hashArgs.Get("Entry");
|
||||
size_t nEntry = FindIndex(key);
|
||||
const wxString strValue = hashArgs.Get("Trans");
|
||||
m_DevotoOli.UpdateEntry(nEntry, strValue);
|
||||
strFileName = "dictionary";
|
||||
GenerateFile(strFileName);
|
||||
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
body.AddChild("h2") << "Entry updated!";
|
||||
body.AddChild("br");
|
||||
|
||||
strFileName = "dictionary?";
|
||||
strFileName << key[0];
|
||||
AddLinkButton(body, "Return to Dictionary", strFileName);
|
||||
|
||||
strFileName = GetTempFilename();
|
||||
html.Save(strFileName);
|
||||
}
|
||||
|
||||
void TDictionaryServer::ProcessFormTranslate(wxString& strFileName,
|
||||
@ -642,7 +659,7 @@ void TDictionaryServer::ProcessFormTranslate(wxString& strFileName,
|
||||
const wxString strValue = hashArgs.Get("Sentence");
|
||||
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html);
|
||||
TXmlItem& body = CreatePageBody(html).AddChild("center");
|
||||
body.AddChild("h3") << "Input the text to be translated:";
|
||||
|
||||
TXmlItem& form = body.AddChild("form");
|
||||
@ -675,6 +692,9 @@ void TDictionaryServer::ProcessFormTranslate(wxString& strFileName,
|
||||
sub.SetAttr("type", "submit");
|
||||
sub.SetAttr("value", "Translate");
|
||||
|
||||
body.AddChild("br");
|
||||
AddLinkButton(body, "Return to main page", "/");
|
||||
|
||||
strFileName = GetTempFilename();
|
||||
html.Save(strFileName);
|
||||
}
|
||||
|
||||
@ -99,7 +99,8 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm- /GX /ZI /Od /I "\wx233\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
@ -109,7 +110,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib \wx233\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"..\exe\servers\diction.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Diction - Win32 Release DLL"
|
||||
|
||||
@ -175,6 +176,10 @@ SOURCE=.\Diction.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\mutex.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\xml.h
|
||||
# End Source File
|
||||
# End Group
|
||||
@ -190,12 +195,12 @@ SOURCE=.\server.rc
|
||||
!ELSEIF "$(CFG)" == "Diction - Win32 Debug"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x410 /i "c:\wx229\wx" /i /wx229/include" "
|
||||
# ADD RSC /l 0x410 /i "c:\wx233\wx" /i /wx229/include" "
|
||||
|
||||
!ELSEIF "$(CFG)" == "Diction - Win32 Debug DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
# ADD RSC /l 0x809 /i "\wx233\include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Diction - Win32 Release DLL"
|
||||
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
#include "BaseServ.h"
|
||||
|
||||
class MyServer : public TBaseServerApp
|
||||
{
|
||||
protected:
|
||||
virtual const wxChar* GetAppName() const;
|
||||
virtual void ProcessCommand(wxString cmd, wxSocketOutputStream& outs);
|
||||
};
|
||||
|
||||
// Implementare almeno queste due funzioni pure virtuali
|
||||
|
||||
const wxChar* MyServer::GetAppName() const
|
||||
{
|
||||
return "MyServer";
|
||||
}
|
||||
|
||||
void MyServer::ProcessCommand(wxString cmd, wxSocketOutputStream& outs)
|
||||
{
|
||||
WriteLog("Processing...");
|
||||
outs << "<HTML><BODY>\n"
|
||||
<< "<H1>Hello world!</H1>\n"
|
||||
<< "<BR><H2>Http command:</H2>\n"
|
||||
<< "<P>" << cmd << "</P>\n"
|
||||
<< "</BODY></HTML>\n";
|
||||
}
|
||||
|
||||
// Istanziare l'applicazione principale
|
||||
|
||||
IMPLEMENT_APP(MyServer)
|
||||
269
server/lerch.cpp
269
server/lerch.cpp
@ -10,16 +10,26 @@ class TLerchServer : public TBaseServerApp
|
||||
protected:
|
||||
virtual const wxChar* GetAppName() const;
|
||||
virtual void ProcessCommand(wxString cmd, wxSocketBase& outs);
|
||||
virtual bool Initialization();
|
||||
|
||||
void AddMiniForm(TXmlItem& tr, const wxChar* action, const wxChar* app, const wxChar* prompt) const;
|
||||
void EnumerateVariables(const wxString& strApp, wxArrayString& arr) const;
|
||||
|
||||
void CreateServersList(wxArrayString& arr) const;
|
||||
void KillProcess(const wxString& strApp);
|
||||
|
||||
public:
|
||||
void GenerateFile(wxString& strFilename);
|
||||
bool IsMagicName(wxString& strFilename) const;
|
||||
bool IsCgiName(wxString strFilename) const;
|
||||
void CreateServersList(wxArrayString& arr) const;
|
||||
|
||||
void ProcessHttpGet(wxString cmd, wxSocketBase& outs);
|
||||
void ProcessHttpPost(wxString cmd, wxSocketBase& outs);
|
||||
|
||||
void ProcessFormStart(const THashTable& args, wxSocketBase& sock);
|
||||
void ProcessFormKill(const THashTable& args, wxSocketBase& sock);
|
||||
void ProcessFormConfig(const THashTable& args, wxSocketBase& sock);
|
||||
void ProcessFormUpdate(THashTable& args, wxSocketBase& sock);
|
||||
void CallCgi(wxString& strFileName, wxSocketBase& sock);
|
||||
};
|
||||
|
||||
@ -43,8 +53,7 @@ void TLerchServer::CreateServersList(wxArrayString& arr) const
|
||||
{
|
||||
*chiusa = '\0';
|
||||
wxString str = aperta+1;
|
||||
if (str != GetAppName())
|
||||
arr.Add(str);
|
||||
arr.Add(str);
|
||||
aperta = strchr(chiusa+1, '[');
|
||||
}
|
||||
else
|
||||
@ -54,6 +63,21 @@ void TLerchServer::CreateServersList(wxArrayString& arr) const
|
||||
delete buff;
|
||||
}
|
||||
|
||||
void TLerchServer::AddMiniForm(TXmlItem& tr, const wxChar* action, const wxChar* app, const wxChar* prompt) const
|
||||
{
|
||||
TXmlItem& td = tr.AddChild("td").SetAttr("width", "15%");
|
||||
TXmlItem& form = td.AddChild("center").AddChild("form");
|
||||
form.SetAttr("action", action);
|
||||
|
||||
TXmlItem& name = form.AddChild("input");
|
||||
name.SetAttr("type", "hidden"); name.SetAttr("name", "App");
|
||||
name.SetAttr("value", app);
|
||||
|
||||
TXmlItem& submit = form.AddChild("input");
|
||||
submit.SetAttr("type", "submit");
|
||||
submit.SetAttr("value", prompt);
|
||||
}
|
||||
|
||||
void TLerchServer::GenerateFile(wxString& strFilename)
|
||||
{
|
||||
TXmlItem html;
|
||||
@ -74,7 +98,7 @@ void TLerchServer::GenerateFile(wxString& strFilename)
|
||||
ini.SetPath(str);
|
||||
|
||||
wxString strHost;
|
||||
ini.Read("Host", &strHost, wxGetHostName());
|
||||
ini.Read("Host", &strHost, wxGetFullHostName());
|
||||
|
||||
int nPort;
|
||||
ini.Read("Port", &nPort, 3883);
|
||||
@ -82,8 +106,8 @@ void TLerchServer::GenerateFile(wxString& strFilename)
|
||||
wxString strIcon;
|
||||
ini.Read("Icon", &strIcon, "euro.gif");
|
||||
|
||||
int nRunning;
|
||||
ini.Read("Running", &nRunning, 0);
|
||||
const wxSingleInstanceChecker sic(arr[i]);
|
||||
const bool bRunning = sic.IsAnotherRunning();
|
||||
|
||||
TXmlItem& tr = table.AddChild("tr");
|
||||
TXmlItem& td0 = tr.AddChild("td");
|
||||
@ -93,19 +117,12 @@ void TLerchServer::GenerateFile(wxString& strFilename)
|
||||
TXmlItem& img = a.AddChild("img");
|
||||
img.SetAttr("src", strIcon); img.SetAttr("border", 0); img.SetAttr("alt", arr[i]);
|
||||
|
||||
TXmlItem& td1 = tr.AddChild("td"); td1.SetAttr("width", "15%");
|
||||
TXmlItem& form = td1.AddChild("center").AddChild("form");
|
||||
form.SetAttr("action", nRunning ? "kill.cgi" : "start.cgi");
|
||||
|
||||
TXmlItem& name = form.AddChild("input");
|
||||
name.SetAttr("type", "hidden"); name.SetAttr("name", "App");
|
||||
name.SetAttr("value", arr[i]);
|
||||
AddMiniForm(tr, bRunning ? "kill.cgi" : "start.cgi", arr[i], bRunning ? "Stop" : "Start");
|
||||
AddMiniForm(tr, "config.cgi", arr[i], "Configure");
|
||||
|
||||
TXmlItem& submit = form.AddChild("input");
|
||||
submit.SetAttr("type", "submit");
|
||||
submit.SetAttr("value", nRunning ? "Stop" : "Start");
|
||||
|
||||
tr.AddChild("td") << arr[i] << " Server";
|
||||
TXmlItem& a3 = tr.AddChild("td").AddChild("a");
|
||||
a3.SetAttr("href", wxString::Format("http://%s:%d/index.htm", strHost, nPort));
|
||||
a3 << arr[i] << " Server";
|
||||
}
|
||||
|
||||
html.Save(strFilename);
|
||||
@ -144,33 +161,40 @@ bool TLerchServer::IsCgiName(wxString strFilename) const
|
||||
|
||||
void TLerchServer::ProcessFormStart(const THashTable& args, wxSocketBase& sock)
|
||||
{
|
||||
bool ok = false;
|
||||
|
||||
const wxString strApp = args.Get("App");
|
||||
const wxString strRun = GetConfigString("Run", "", strApp);
|
||||
if (wxFileExists(strRun))
|
||||
if (!strApp.IsEmpty()) // Dummy test
|
||||
{
|
||||
wxExecute(strRun);
|
||||
for (int i = 0; i < 3; i++)
|
||||
const wxSingleInstanceChecker sic(strApp);
|
||||
ok = !sic.IsAnotherRunning();
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
const wxString strRun = GetConfigString("Run", "", strApp);
|
||||
if (wxFileExists(strRun))
|
||||
{
|
||||
wxSleep(3);
|
||||
if (GetConfigInt("Running", 0, strApp) == 1)
|
||||
break;
|
||||
const long nProc = wxExecute(strRun);
|
||||
if (nProc == 0 || nProc == -1)
|
||||
MessageBox("ERROR", wxString::Format("Can't run %s executable (%s)", strApp, strRun), sock);
|
||||
else
|
||||
MessageBox("Server Started", strApp, sock);
|
||||
}
|
||||
wxString strFileName = "index";
|
||||
GenerateFile(strFileName);
|
||||
SendFile(strFileName, sock);
|
||||
else
|
||||
MessageBox("ERROR", wxString::Format("Can't find %s executable (%s)", strApp, strRun), sock);
|
||||
}
|
||||
else
|
||||
MessageBox("ERROR", wxString::Format("Can't run %s", strRun), sock);
|
||||
MessageBox("ERROR", wxString::Format("%s il already running", strApp), sock);
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessFormKill(const THashTable& args, wxSocketBase& sock)
|
||||
void TLerchServer::KillProcess(const wxString& strApp)
|
||||
{
|
||||
const wxString strApp = args.Get("App");
|
||||
const wxString strHost = GetConfigString("Host", "localhost", strApp);
|
||||
const int nPort = GetConfigInt("Port", 0, strApp);
|
||||
if (nPort > 0)
|
||||
{
|
||||
wxIPV4address addr;
|
||||
wxIPV4address addr;
|
||||
addr.Hostname(strHost);
|
||||
addr.Service(nPort);
|
||||
|
||||
@ -178,20 +202,131 @@ void TLerchServer::ProcessFormKill(const THashTable& args, wxSocketBase& sock)
|
||||
if (sock.Connect(addr))
|
||||
{
|
||||
const wxString str = "GET /stop.cgi HTTP/1.1\r\n\r\n";
|
||||
for (int i = 0; i < 3; i++)
|
||||
sock.Write(str, str.Length());
|
||||
if (strHost == "localhost")
|
||||
{
|
||||
sock.Write(str, str.Length());
|
||||
wxSleep(1);
|
||||
if (GetConfigInt("Running", 0, strApp) == 0)
|
||||
break;
|
||||
const wxSingleInstanceChecker sic(strApp);
|
||||
for (int i = 0; i < 5 && sic.IsAnotherRunning(); i++)
|
||||
wxSleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
SetConfigString("Running", "0", strApp);
|
||||
}
|
||||
wxString strFileName = "index";
|
||||
GenerateFile(strFileName);
|
||||
SendFile(strFileName, sock);
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessFormKill(const THashTable& args, wxSocketBase& sock)
|
||||
{
|
||||
const wxString strApp = args.Get("App");
|
||||
if (strApp == GetAppName()) // Stop myself!
|
||||
{
|
||||
wxArrayString app; CreateServersList(app);
|
||||
for (size_t i = 0; i < app.GetCount(); i++)
|
||||
{
|
||||
if (app[i] != GetAppName()) // Stop Children only!
|
||||
{
|
||||
const wxSingleInstanceChecker sic(app[i]);
|
||||
if (sic.IsAnotherRunning())
|
||||
KillProcess(app[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
KillProcess(strApp);
|
||||
MessageBox("Server stopped", strApp, sock);
|
||||
}
|
||||
|
||||
void TLerchServer::EnumerateVariables(const wxString& strApp, wxArrayString& arr) const
|
||||
{
|
||||
wxFileInputStream inf(GetConfigName());
|
||||
wxString strParagraph = wxString::Format("[%s]", strApp);
|
||||
wxString str;
|
||||
|
||||
bool bFound = false;
|
||||
while (inf.Ok())
|
||||
{
|
||||
inf >> str;
|
||||
if (str == strParagraph)
|
||||
{
|
||||
bFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bFound)
|
||||
{
|
||||
while (inf.Ok())
|
||||
{
|
||||
inf >> str;
|
||||
if (str.IsEmpty() || str[0] == '[')
|
||||
break;
|
||||
const int nEqual = str.Find('=');
|
||||
if (nEqual > 0)
|
||||
{
|
||||
str.Truncate(nEqual);
|
||||
str.Trim(false);
|
||||
str.Trim(true);
|
||||
arr.Add(str);
|
||||
}
|
||||
}
|
||||
arr.Sort();
|
||||
}
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessFormConfig(const THashTable& args, wxSocketBase& sock)
|
||||
{
|
||||
const wxString strApp = args.Get("App");
|
||||
wxArrayString arr;
|
||||
EnumerateVariables(strApp, arr);
|
||||
|
||||
TXmlItem html;
|
||||
TXmlItem& body = CreatePageBody(html);
|
||||
|
||||
TXmlItem& form = body.AddChild("form");
|
||||
form.SetAttr("action", "update.cgi").SetAttr("method", "post");
|
||||
|
||||
TXmlItem& table = form.AddChild("table").SetAttr("width", "100%").SetAttr("border", "1");
|
||||
table.AddChild("caption").AddChild("h2") << strApp;
|
||||
TXmlItem& thead = table.AddChild("thead");
|
||||
thead.AddChild("th").SetAttr("width", "15%") << "Property";
|
||||
thead.AddChild("th").SetAttr("width", "85%") << "Value";
|
||||
|
||||
for (size_t v = 0; v < arr.GetCount(); v++)
|
||||
{
|
||||
TXmlItem& tr = table.AddChild("tr");
|
||||
tr.AddChild("td") << arr[v];
|
||||
TXmlItem& input = tr.AddChild("td").AddChild("input");
|
||||
input.SetAttr("type", "text"); input.SetAttr("name", arr[v]);
|
||||
input.SetAttr("size", "80"); input.SetAttr("maxlength", "256");
|
||||
input.SetAttr("value", GetConfigString(arr[v], "", strApp));
|
||||
}
|
||||
|
||||
TXmlItem& app = form.AddChild("input").SetAttr("type", "hidden");
|
||||
app.SetAttr("name", "App"); app.SetAttr("value", strApp);
|
||||
|
||||
TXmlItem& submit = form.AddChild("br").AddChild("center").AddChild("input");
|
||||
submit.SetAttr("type", "submit"); submit.SetAttr("value", "Update Parameters");
|
||||
|
||||
body.AddChild("br");
|
||||
AddLinkButton(body.AddChild("center"), "Return to main page", "/");
|
||||
|
||||
const wxString strFilename = GetTempFilename();
|
||||
html.Save(strFilename);
|
||||
SendFile(strFilename, sock);
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessFormUpdate(THashTable& args, wxSocketBase& sock)
|
||||
{
|
||||
const wxString strApp = args.Get("App");
|
||||
args.BeginFind();
|
||||
for (wxNode* pNode = args.Next(); pNode; pNode = args.Next())
|
||||
{
|
||||
const wxString strKey = pNode->GetKeyString();
|
||||
if (strKey != "App")
|
||||
{
|
||||
const wxString strVal = args.Get(strKey);
|
||||
SetConfigString(strKey, strVal, strApp);
|
||||
}
|
||||
}
|
||||
const wxString msg = wxString::Format("%s parameters updated", strApp);
|
||||
MessageBox("Success!", msg, sock);
|
||||
}
|
||||
|
||||
void TLerchServer::CallCgi(wxString& strFileName, wxSocketBase& sock)
|
||||
@ -213,7 +348,11 @@ void TLerchServer::CallCgi(wxString& strFileName, wxSocketBase& sock)
|
||||
if (strName == "start")
|
||||
ProcessFormStart(hashArgs, sock); else
|
||||
if (strName == "kill")
|
||||
ProcessFormKill(hashArgs, sock);
|
||||
ProcessFormKill(hashArgs, sock); else
|
||||
if (strName == "config")
|
||||
ProcessFormConfig(hashArgs, sock); else
|
||||
if (strName == "update")
|
||||
ProcessFormUpdate(hashArgs, sock);
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,10 +375,52 @@ void TLerchServer::ProcessHttpGet(wxString cmd, wxSocketBase& outs)
|
||||
}
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessHttpPost(wxString cmd, wxSocketBase& outs)
|
||||
{
|
||||
const int stop = cmd.Find(" HTTP");
|
||||
wxString strFileName = cmd.Mid(5, stop-5).Trim();
|
||||
|
||||
wxString strName, args;
|
||||
wxSplitPath(strFileName, NULL, &strName, NULL);
|
||||
|
||||
const int pos = cmd.Find("\r\n\r\n");
|
||||
if (pos > 0)
|
||||
args = cmd.Mid(pos+4);
|
||||
|
||||
THashTable hashArgs(17);
|
||||
ParseArguments(args, hashArgs);
|
||||
|
||||
if (strName == "update")
|
||||
ProcessFormUpdate(hashArgs, outs);
|
||||
}
|
||||
|
||||
void TLerchServer::ProcessCommand(wxString cmd, wxSocketBase& outs)
|
||||
{
|
||||
if (cmd.StartsWith("GET "))
|
||||
ProcessHttpGet(cmd, outs);
|
||||
ProcessHttpGet(cmd, outs); else
|
||||
if (cmd.StartsWith("POST "))
|
||||
ProcessHttpPost(cmd, outs);
|
||||
}
|
||||
|
||||
bool TLerchServer::Initialization()
|
||||
{
|
||||
wxArrayString arr; CreateServersList(arr);
|
||||
for (size_t i = 0; i < arr.GetCount(); i++)
|
||||
{
|
||||
const wxString& strApp = arr[i];
|
||||
const bool bAutorun = GetConfigBool("Autorun", false, strApp);
|
||||
if (bAutorun)
|
||||
{
|
||||
const wxSingleInstanceChecker sic(strApp);
|
||||
if (!sic.IsAnotherRunning())
|
||||
{
|
||||
wxString strRun = GetConfigString("Run", "", strApp);
|
||||
if (wxFileExists(strRun))
|
||||
wxExecute(strRun);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Istanziare l'applicazione principale
|
||||
|
||||
@ -99,7 +99,8 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "\wx233\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
@ -109,7 +110,7 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/server.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib \wx233\lib\wxmsw233d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"../exe/servers/Lerch.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Lerch - Win32 Release DLL"
|
||||
|
||||
@ -190,12 +191,12 @@ SOURCE=.\server.rc
|
||||
!ELSEIF "$(CFG)" == "Lerch - Win32 Debug"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x410 /i "c:\wx229\wx" /i /wx229/include" "
|
||||
# ADD RSC /l 0x410 /i "c:\wx233\wx" /i /wx229/include" "
|
||||
|
||||
!ELSEIF "$(CFG)" == "Lerch - Win32 Debug DLL"
|
||||
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
# ADD RSC /l 0x809 /i "\wx233\include"
|
||||
|
||||
!ELSEIF "$(CFG)" == "Lerch - Win32 Release DLL"
|
||||
|
||||
|
||||
8
server/servers.ini
Executable file
8
server/servers.ini
Executable file
@ -0,0 +1,8 @@
|
||||
[Coffee]
|
||||
Running=1
|
||||
|
||||
[Authorization]
|
||||
Running=1
|
||||
|
||||
[Lerch]
|
||||
Running=1
|
||||
@ -1,4 +1,5 @@
|
||||
#include <wx/wx.h>
|
||||
#include "wx/mstream.h"
|
||||
#include <wx/wfstream.h>
|
||||
|
||||
#include "xml.h"
|
||||
@ -140,13 +141,20 @@ public:
|
||||
|
||||
void TXmlAttr::Write(wxOutputStream& outf) const
|
||||
{
|
||||
if (m_str.IsNumber())
|
||||
if (m_str.IsEmpty())
|
||||
{
|
||||
outf << m_str;
|
||||
outf << "\"\"";
|
||||
}
|
||||
else
|
||||
{
|
||||
outf << "\"" << m_str << "\"";
|
||||
if (m_str.IsNumber())
|
||||
{
|
||||
outf << m_str;
|
||||
}
|
||||
else
|
||||
{
|
||||
outf << "\"" << m_str << "\"";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,6 +162,8 @@ void TXmlAttr::Write(wxOutputStream& outf) const
|
||||
// TXmlItem
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(TXmlItem, wxObject)
|
||||
|
||||
TXmlItem& TXmlItem::SetAttr(const wxChar* strAttr, const wxChar* strVal)
|
||||
{
|
||||
if (m_Attributes == NULL)
|
||||
@ -162,7 +172,7 @@ TXmlItem& TXmlItem::SetAttr(const wxChar* strAttr, const wxChar* strVal)
|
||||
m_Attributes->DeleteContents(true);
|
||||
}
|
||||
m_Attributes->Delete(strAttr);
|
||||
m_Attributes->Put(strAttr, new TXmlAttr(strVal));
|
||||
m_Attributes->Put(strAttr, new TXmlAttr(strVal));
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
@ -1,16 +1,14 @@
|
||||
#ifndef __XML_H
|
||||
#define __XML_H
|
||||
|
||||
#ifndef _WX_WXMMSTREAM_H__
|
||||
#include "wx/mstream.h"
|
||||
#endif
|
||||
|
||||
class TXmlItem;
|
||||
|
||||
typedef bool (*XmlItemCallback)(TXmlItem& item, long jolly);
|
||||
|
||||
class TXmlItem : public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(TXmlItem);
|
||||
|
||||
wxString m_strTag, m_strText;
|
||||
wxHashTable* m_Attributes;
|
||||
wxList* m_Children;
|
||||
@ -20,7 +18,6 @@ protected:
|
||||
int ReadTag(wxInputStream& input);
|
||||
|
||||
TXmlItem& AddChild(TXmlItem* pItem);
|
||||
void RemoveLastChild();
|
||||
|
||||
public:
|
||||
const wxString& GetTag() const { return m_strTag; }
|
||||
@ -41,6 +38,7 @@ public:
|
||||
|
||||
int GetChildren() const;
|
||||
TXmlItem* GetChild(size_t n) const;
|
||||
void RemoveLastChild();
|
||||
|
||||
bool Read(wxInputStream& input);
|
||||
void Write(wxOutputStream& output, int nTab) const;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user