Patch level : 2.1 048

Files correlati     :   pr0.exe pr1.exe pr1500a.msk
Ricompilazione Demo : [ ]
Commento            :
bug 0000137

 Implementare la gestione multilingua


git-svn-id: svn://10.65.10.50/trunk@12099 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2004-05-19 13:47:43 +00:00
parent 259339fe75
commit 42b8a890e8
11 changed files with 93 additions and 123 deletions

View File

@ -28,9 +28,7 @@ bool TTablePR_app::gmc_handler(TMask_field& f, KEY k)
continue;
v2 = m.get(id);
if (v1 == "E" && v2 == "R" || v1 == "R" && v2 == "E")
return f.error_box("Non e' possibile usare contemporaneamente la "
"tabella gruppo merceologico e la tabella sottogruppo "
"merceologico");
return f.error_box(TR("Non e' possibile usare contemporaneamente la tabella gruppo merceologico e la tabella sottogruppo merceologico"));
}
}
}
@ -75,6 +73,6 @@ bool TTablePR_app::user_create()
int pr0100(int argc, char** argv)
{
TTablePR_app a;
a.run(argc, argv, "Tabella");
a.run(argc, argv, TR("Tabella"));
return 0;
}

View File

@ -11,7 +11,6 @@ class TGestione_agenti_app:public TRelation_application
{
TMask *_msk;
TRelation *_rel;
TLocalisamfile *_age;
protected:
virtual bool user_create();
@ -47,13 +46,13 @@ bool TGestione_agenti_app::codcapo_handler(TMask_field& f, KEY k)
{
if (f.to_check(k) && k == K_ENTER) // Solo prima che prema il pulsante di registrazione
{
TLocalisamfile* agenti = app()._age;
TRecfield agente(agenti->curr(),AGE_CODAGE);
TRecfield capo(agenti->curr(),AGE_CODCAPO);
TLocalisamfile agenti(LF_AGENTI);
TRecfield agente(agenti.curr(),AGE_CODAGE);
TRecfield capo(agenti.curr(),AGE_CODCAPO);
const TString& ag = f.mask().get(F_CODAGE);
TString ca = f.get();
agente = ca;
while (agenti->read() == NOERR)
while (agenti.read() == NOERR)
{
ca = capo;
if (ca == ag)
@ -62,7 +61,7 @@ bool TGestione_agenti_app::codcapo_handler(TMask_field& f, KEY k)
break;
agente = ca;
}
if (agenti->good() && ca == ag)
if (agenti.good() && ca == ag)
return f.error_box(TR("Il codice del capozona inserito non e' valido, in quanto e' stato rilevato nella catena un codice capozona corrispondente al presente codice agente."));
}
return TRUE;
@ -103,6 +102,7 @@ bool TGestione_agenti_app::codalt_handler(TMask_field& f, KEY k)
bool TGestione_agenti_app::user_create()
{
open_files(LF_AGENTI, LF_PROVV, LF_PERCPROV, 0);
_msk = new TMask("pr0500a") ;
_rel = new TRelation(LF_AGENTI);
_msk->set_handler(F_CODCAPO,codcapo_handler);
@ -115,7 +115,6 @@ bool TGestione_agenti_app::user_create()
_msk->set_handler(F_CODALTPR3,codalt_handler);
_msk->set_handler(F_CODALTPR4,codalt_handler);
_msk->set_handler(F_PERCFATT,percfat_handler);
_age = new TLocalisamfile (LF_AGENTI);
return TRUE;
}
@ -123,7 +122,6 @@ bool TGestione_agenti_app::user_destroy()
{
delete _msk;
delete _rel;
delete _age;
return TRUE;
}

View File

@ -79,8 +79,7 @@ bool TGestione_percprovv_app::tipo_handler(TMask_field& f, KEY k)
if (kd[i] == F_CODART)
found = TRUE;
if (!found)
return f.error_box("Impossibile settare il tipo di provvigione ad importo unitario o valore se non "
"e' presente la ricerca per codice articolo.");
return f.error_box(TR("Impossibile settare il tipo di provvigione ad importo unitario o valore se non e' presente la ricerca per codice articolo."));
}
}
return TRUE;
@ -193,7 +192,7 @@ bool TGestione_percprovv_app::codpr_handler(TMask_field& f, KEY k)
set_order_fields(ord,m);
}
else
return f.error_box("Codice archivio non presente");
return f.error_box(TR("Codice archivio non presente"));
}
return TRUE;
}
@ -249,6 +248,6 @@ bool TGestione_percprovv_app::user_destroy()
int pr0600(int argc, char** argv)
{
TGestione_percprovv_app a;
a.run(argc,argv,"Gestione percentuali provvigione");
a.run(argc,argv,TR("Gestione percentuali provvigione"));
return 0;
}

View File

@ -12,13 +12,6 @@
class TGestione_provv_app : public TSkeleton_application
{
TMask *_msk;
TDocumento *_documento;
TLocalisamfile *_provv,
*_rdoc,
*_doc,
*_tab,
*_occas,
*_cfven;
TProvvigioni_agente *_prag;
TAssoc_array _vittime;
bool _dirty;
@ -70,59 +63,55 @@ bool TGestione_provv_app::calcola_rate_handler(TMask_field& f, KEY key)
if (f.focusdirty() && key == K_TAB)
{
TMask& m = f.mask();
TLocalisamfile& doc = *app()._doc;
TSheet_field & rs = (TSheet_field&)app()._msk->field(F_RATE_SHEET);// Resetta lo spreadsheet
if (rs.items() > 0) // Resetta lo spreadsheet se vi sono delle righe
rs.reset();
doc.put(DOC_PROVV,"D");
doc.put(DOC_ANNO,m.get_int(F_ANNO));
doc.put(DOC_CODNUM,m.get(F_CODNUM));
doc.put(DOC_NDOC,m.get(F_NDOC));
if (doc.read() == NOERR) // Se esiste il documento allora prende i valori relativi al totale documento, totale provvigione e base di calcolo provvigione
TDocumento doc;
const int anno = m.get_int(F_ANNO);
const long numdoc = m.get_long(F_NDOC);
const TString& codnum = m.get(F_CODNUM);
const int err = doc.read('D', anno, (const char*) codnum, numdoc);
if (err == NOERR)
{
TDocumento* documento = app()._documento;
int err = documento->read(doc.curr());
if (err == NOERR)
{
m.set(F_DATADOC, documento->data());
m.set(F_CLIENTE, documento->codcf());
m.set(F_CODVAL,documento->valuta());
m.set(F_CAMBIO,documento->cambio());
m.set(F_DATACAMBIO,documento->get_date(DOC_DATACAMBIO));
m.set(F_IMPDOC,documento->totale_doc());
m.set(F_IMPPRDOC,documento->provvigione());
m.set(F_IMPNETDOC, documento->totale_netto());
// Adesso calcoliamo la provvigione all'atto della fatturazione da inserire
// nella rata 0. Il residuo va ripartito nelle rate del documento
TProvvigioni_agente& pra = documento->calc_provvigioni(FALSE); // Non settare il flag di generata dal documento!
m.set(F_DATADOC, doc.data());
m.set(F_CLIENTE, doc.codcf());
m.set(F_CODVAL,doc.valuta());
m.set(F_CAMBIO,doc.cambio());
m.set(F_DATACAMBIO,doc.get_date(DOC_DATACAMBIO));
m.set(F_IMPDOC,doc.totale_doc());
m.set(F_IMPPRDOC,doc.provvigione());
m.set(F_IMPNETDOC, doc.totale_netto());
// Adesso calcoliamo la provvigione all'atto della fatturazione da inserire
// nella rata 0. Il residuo va ripartito nelle rate del documento
TProvvigioni_agente& pra = doc.calc_provvigioni(FALSE); // Non settare il flag di generata dal documento!
// Adesso genera le righe da mettere nello spreadsheet. Quando si uscira' dalla riga
// attuale verra' chiamata la doc_sheet_notify() con K_ENTER, che memorizza il tutto
// gestendo automaticamente la eventuale modifica di un documento gia' presente o meno.
// Adesso genera le righe da mettere nello spreadsheet. Quando si uscira' dalla riga
// attuale verra' chiamata la doc_sheet_notify() con K_ENTER, che memorizza il tutto
// gestendo automaticamente la eventuale modifica di un documento gia' presente o meno.
TRate_doc& rd = pra.rate(documento->anno(), m.get(F_CODNUM), documento->numero()); // Estrae le rate appena calcolate
const int numrate = rd.items(); /* Numero rate per questo documento */
for (int i = 0; i < numrate; i++)
{
TToken_string& ttt = rs.row(i);
TRata& rt = rd[i];
ttt.add(rt.rata()); // Numero di rata
ttt.add(rt.datascad()); // Data scadenza della rata
ttt.add(rt.tipopag()); // Tipo pag per questa rata
ttt.add(rt.imprata().string()); // Importo della rata (occhio alla valuta)
ttt.add(rt.impprovv().string()); // Importo della provvigione per questa rata
ttt.add(""); // Tutti gli altri valori sono a 0
ttt.add(""); ttt.add(""); ttt.add("");
ttt.add(""); ttt.add("");
ttt.add(rt.codval());
}
rs.force_update();
f.set_focusdirty(FALSE);
f.set_dirty(FALSE);
TRate_doc& rd = pra.rate(doc.anno(), m.get(F_CODNUM), doc.numero()); // Estrae le rate appena calcolate
const int numrate = rd.items(); /* Numero rate per questo documento */
for (int i = 0; i < numrate; i++)
{
TToken_string& ttt = rs.row(i);
TRata& rt = rd[i];
ttt.add(rt.rata()); // Numero di rata
ttt.add(rt.datascad()); // Data scadenza della rata
ttt.add(rt.tipopag()); // Tipo pag per questa rata
ttt.add(rt.imprata().string()); // Importo della rata (occhio alla valuta)
ttt.add(rt.impprovv().string()); // Importo della provvigione per questa rata
ttt.add(""); // Tutti gli altri valori sono a 0
ttt.add(""); ttt.add(""); ttt.add("");
ttt.add(""); ttt.add("");
ttt.add(rt.codval());
}
else
return f.error_box("Errore %d tentando di leggere il documento specificato",err);
} // Altrimenti l'utente e' libero di inserire importi e rate
rs.force_update();
f.set_focusdirty(FALSE);
f.set_dirty(FALSE);
}
else
return f.error_box(TR("Errore %d tentando di leggere il documento specificato"),err);
}
return TRUE;
}
@ -151,7 +140,7 @@ bool TGestione_provv_app::ndoc_handler(TMask_field& f, KEY key)
ndoc = ot.get_long(2);
other_key.format("%4d%4s%7ld",anno,(const char*)codnum,ndoc);
if (key == other_key)
return f.error_box("Non e' possibile inserire due documenti con la stessa chiave");
return f.error_box(TR("Non e' possibile inserire due documenti con la stessa chiave"));
}
}
return calcola_rate_handler(f, key);
@ -171,7 +160,7 @@ bool TGestione_provv_app::nrata_handler(TMask_field& f, KEY key)
{
int other_rata = s.row(i).get_int(0);
if (nrata == other_rata)
return f.error_box("Non e' possibile inserire due rate con lo stesso numero");
return f.error_box(TR("Non e' possibile inserire due rate con lo stesso numero"));
}
}
return TRUE;
@ -185,7 +174,7 @@ bool TGestione_provv_app::datascad_handler(TMask_field& f, KEY key)
TRate_doc& rd = pa->rate(__current_key);
TDate d(f.get());
if (d < rd.datadoc())
return f.error_box("La data di scadenza deve essere maggiore o uguale della data documento");
return f.error_box(TR("La data di scadenza deve essere maggiore o uguale della data documento"));
}
return TRUE;
}
@ -207,7 +196,7 @@ bool TGestione_provv_app::imprata_handler(TMask_field& f, KEY key)
real r(f.get());
r = abs(r);
if (r > abs(rd.impdoc()))
return f.error_box("L'importo della rata non puo' essere maggiore dell'importo del documento");
return f.error_box(TR("L'importo della rata non puo' essere maggiore dell'importo del documento"));
}
return TRUE;
}
@ -221,7 +210,7 @@ bool TGestione_provv_app::improvv_handler(TMask_field& f, KEY key)
real r(f.get());
r = abs(r);
if (r > abs(rd.impprdoc()))
return f.error_box("L'importo della provvigione non puo' essere maggiore dell'importo provvigione del documento");
return f.error_box(TR("L'importo della provvigione non puo' essere maggiore dell'importo provvigione del documento"));
}
return TRUE;
}
@ -391,18 +380,12 @@ bool TGestione_provv_app::doc_sheet_notify(TSheet_field& ds, int r, KEY key)
bool TGestione_provv_app::create()
{
open_files(LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART,
LF_TABCOM, LF_CLIFO,LF_INDSP, LF_MOVMAG, LF_RMOVMAG,0);
open_files(LF_PROVV, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART,
LF_TABCOM, LF_CLIFO,LF_INDSP, LF_MOVMAG, LF_RMOVMAG, LF_DOC,
LF_RIGHEDOC, LF_CFVEN, LF_OCCAS, LF_TAB, 0);
_msk = new TMask("pr0700b") ;
_provv = new TLocalisamfile(LF_PROVV);
_doc = new TLocalisamfile(LF_DOC);
_rdoc = new TLocalisamfile(LF_RIGHEDOC);
_cfven = new TLocalisamfile(LF_CFVEN);
_occas = new TLocalisamfile(LF_OCCAS);
_tab = new TLocalisamfile(LF_TAB);
_prag = new TProvvigioni_agente;
_documento = new TDocumento;
TSheet_field & sf = (TSheet_field&)_msk->field(F_DOC_SHEET);
sf.set_notify(doc_sheet_notify);
sf.sheet_mask().set_handler(F_NDOC,ndoc_handler);
@ -421,14 +404,7 @@ bool TGestione_provv_app::create()
bool TGestione_provv_app::destroy()
{
delete _msk;
delete _documento;
delete _prag;
delete _provv;
delete _doc;
delete _rdoc;
delete _tab;
delete _cfven;
delete _occas;
return TRUE;
}
@ -471,7 +447,7 @@ bool TGestione_provv_app::check_totals()
if (!_prag->rate(kl.row(i)).ok_provvigione())
{
rt = FALSE;
error_box("La somma delle provvigioni supera l'importo della provvigione totale per il documento %s",
error_box(FR("La somma delle provvigioni supera l'importo della provvigione totale per il documento %s"),
(const char*)kl.row(i));
}
return rt;
@ -504,13 +480,13 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
_msk->set(F_MNDOC,"");
if (_prag->read(agente, anno) == _islocked)
{
message_box("Dati agente %s in uso da un altro utente.", (const char*) agente);
message_box(FR("Dati agente %s in uso da un altro utente."), (const char*) agente);
return;
}
KEY k;
bool repeat;
const char* msg = _prag->items() == 0 ? "Registrare i dati inseriti" : "Registrare le modifiche" ;
const char* msg = _prag->items() == 0 ? TR("Registrare i dati inseriti") : TR("Registrare le modifiche") ;
fill_sheet_doc(); // Inizializza lo sheet dei documenti
_dirty = FALSE;
@ -540,7 +516,7 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
}
} while (repeat);
if (err != NOERR)
message_box("Errore %d tentando di scrivere i dati provvigionali dell'agente.",err, (const char*) agente);
message_box(FR("Errore %d tentando di scrivere i dati provvigionali dell'agente %s."),err, (const char*) agente);
_prag->unlock();
}
@ -550,7 +526,7 @@ void TGestione_provv_app::main_loop()
TMask* m = new TMask("pr0700a");
while (ok)
{
xvt_statbar_set("Ricerca", TRUE);
xvt_statbar_set(TR("Ricerca"), TRUE);
m->reset();
ok = m->run() == K_ENTER;
if (ok)
@ -562,6 +538,6 @@ void TGestione_provv_app::main_loop()
int pr0700(int argc, char** argv)
{
TGestione_provv_app a;
a.run(argc,argv,"Gestione provvigioni");
a.run(argc,argv,TR("Gestione provvigioni"));
return 0;
}

View File

@ -46,6 +46,6 @@ void TStampa_agenti::main_loop()
int pr1100(int argc, char* argv[])
{
TStampa_agenti a;
a.run(argc,argv,"Stampa agenti");
a.run(argc,argv,TR("Stampa agenti"));
return 0;
}

View File

@ -88,7 +88,6 @@ bool TPercprovv_form::validate(TForm_item &cf, TToken_string &s)
class TStampa_percprovv : public TSkeleton_application
{
TLocalisamfile *_percprov;
TTable *_apr;
TMask * _m;
@ -255,7 +254,7 @@ void TStampa_percprovv::main_loop()
cur->setregion(from, to);
if (cur->items() == 0L)
{
warning_box("Non vi sono elementi da stampare nell'intervallo indicato.");
warning_box(TR("Non vi sono elementi da stampare nell'intervallo indicato."));
continue;
}
@ -319,10 +318,10 @@ void TStampa_percprovv::main_loop()
bool TStampa_percprovv::create()
{
open_files(LF_PERCPROV, LF_TAB, LF_TABCOM, LF_CLIFO, LF_AGENTI, 0);
_m = new TMask ("pr1200a");
_m->set_handler(F_CODPR, codarc_handler);
_apr = new TTable("APR");
_percprov = new TLocalisamfile(LF_PERCPROV);
return TSkeleton_application::create();
}
@ -330,13 +329,12 @@ bool TStampa_percprovv::destroy()
{
delete _m;
delete _apr;
delete _percprov;
return TSkeleton_application::destroy();
}
int pr1200(int argc, char* argv[])
{
TStampa_percprovv a;
a.run(argc,argv,"Stampa % di provvigione");
a.run(argc,argv,TR("Stampa % di provvigione"));
return 0;
}

View File

@ -92,9 +92,9 @@ bool TStampa_schedeprovv::destroy()
void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur)
{
if (cur.items()==0) return;
const TRelation * r=cur.relation();
const TRelation * r = cur.relation();
TLocalisamfile& prov = r->lfile();
TProgind barra(cur.items(),"Registro le provvigioni pagate");
TProgind barra(cur.items(),TR("Registro le provvigioni pagate"));
for (int c=0; c<cur.items(); c++)
{
cur=c;
@ -237,6 +237,6 @@ void TStampa_schedeprovv::main_loop()
int pr1300(int argc, char* argv[])
{
TStampa_schedeprovv a;
a.run(argc,argv,"Stampa schede di provvigione");
a.run(argc,argv,TR("Stampa schede di provvigione"));
return 0;
}

View File

@ -88,7 +88,7 @@ bool TStampa_statistiche_app::daterange_handler(TMask_field& f, KEY key)
TDate from(m.get_date(F_DATEFROM));
TDate to(m.get_date(F_DATETO));
if (from.ok() && to.ok() && (to < from || to.year() != from.year()))
return f.error_box("L'intervallo date specificato non e' corretto");
return f.error_box(TR("L'intervallo date specificato non e' corretto"));
}
return TRUE;
}
@ -102,7 +102,7 @@ bool TStampa_statistiche_app::agerange_handler(TMask_field& f, KEY key)
TString from(m.get(ord_cod ? F_DAAGE : F_DADES));
TString to(m.get(ord_cod ? F_AAGE : F_ADES));
if (from.not_empty() && to.not_empty() && to < from)
return f.error_box("L'intervallo agenti specificato non e' corretto");
return f.error_box(TR("L'intervallo agenti specificato non e' corretto"));
}
return TRUE;
}
@ -124,8 +124,8 @@ bool TStampa_statistiche_app::create()
void TStampa_statistiche_app::main_loop()
{
const char * months[] = { "Gen", "Feb", "Mar", "Apr", "Mag", "Giu",
"Lug", "Ago", "Set", "Ott", "Nov", "Dic" };
const char * months[] = { TR("Gen"), TR("Feb"), TR("Mar"), TR("Apr"), TR("Mag"), TR("Giu"),
TR("Lug"), TR("Ago"), TR("Set"), TR("Ott"), TR("Nov"), TR("Dic") };
TString_array descriptions;
TString cond; // Stringa identificante la condizione di raggruppamento
TString desc; // Stringa per settare la descrizione del range di mesi
@ -151,7 +151,7 @@ void TStampa_statistiche_app::main_loop()
if (!date_from.ok() || !date_to.ok())
{
error_box("Inserire un range di date valido");
error_box(TR("Inserire un range di date valido"));
continue;
}
@ -265,6 +265,6 @@ bool TStampa_statistiche_app::destroy()
int pr1400(int argc, char* argv[])
{
TStampa_statistiche_app a;
a.run(argc,argv,"Statistiche temporali");
a.run(argc,argv,TR("Statistiche temporali"));
return 0;
}

View File

@ -263,15 +263,15 @@ TFirr_form::TFirr_form(const TFirr_mask& m) : TForm("pr1500a")
TPrint_section& foot = section('F');
TString str;
str = "Stampa Contributi ";
str = TR("Stampa Contributi ");
const int periodo = m.get_int(F_PERIODO);
switch (periodo)
{
case 1 : str << "primo trimestre"; break;
case 2 : str << "secondo trimestre"; break;
case 3 : str << "terzo trimestre"; break;
case 4 : str << "quarto trimestre"; break;
default: str << "anno"; break;
case 1 : str << TR("primo trimestre"); break;
case 2 : str << TR("secondo trimestre"); break;
case 3 : str << TR("terzo trimestre"); break;
case 4 : str << TR("quarto trimestre"); break;
default: str << TR("anno"); break;
}
str << ' ' << m.get_int(F_ANNO);
head.find_field(101).set(str);
@ -335,7 +335,7 @@ void TStampa_firr::compute(const TFirr_mask& m)
cur.freeze(TRUE);
const TRectype& cur_prov = cur.curr();
TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE);
TProgind pi(total, TR("Elaborazione in corso..."), TRUE, TRUE);
for (cur = 0L; cur.pos() < total; ++cur)
{
pi.addstatus(1);
@ -413,6 +413,6 @@ void TStampa_firr::main_loop()
int pr1500(int argc, char* argv[])
{
TStampa_firr a;
a.run(argc, argv, "Distinta Versamento");
a.run(argc, argv, TR("Distinta Versamento"));
return 0;
}

View File

@ -1,6 +1,6 @@
#include "pr1500a.h"
PAGE "Stampa Disitinta" -1 -1 44 12
PAGE "Stampa Distinta Versamento" -1 -1 60 12
RADIOBUTTON F_PERIODO 20
BEGIN

View File

@ -1,4 +1,5 @@
#include <recarray.h>
#include <diction.h>
#include "prlib.h"
#include "provv.h"
@ -218,7 +219,7 @@ TRate_doc& TProvvigioni_agente::rate(const char* key, bool create)
_rate.add(key,rd);
}
else
fatal_box("Impossibile trovare l'elemento %s tra le righe provvigionali",key);
fatal_box(FR("Impossibile trovare l'elemento %s tra le righe provvigionali"),key);
}
return (TRate_doc&) _rate[key];
}
@ -236,7 +237,7 @@ void TProvvigioni_agente::remove_rate(const char* key)
if (exist)
_rate.remove(key);
else
fatal_box("Impossibile trovare l'elemento %s tra le righe provvigionali", key);
fatal_box(FR("Impossibile trovare l'elemento %s tra le righe provvigionali"), key);
}
/////////////////////////////////////////////////////////////////////////////////