Patch level :

Files correlati     :intera directory CI
Ricompilazione Demo : [ ]
Commento            : prima versione funzionante del programma


git-svn-id: svn://10.65.10.50/trunk@13000 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
brugno 2005-04-22 15:37:43 +00:00
parent f15009b25f
commit 25c09860a9
5 changed files with 111 additions and 70 deletions

View File

@ -22,49 +22,63 @@
void TImmissioneDocumenti_app::init_tabs()
{
TToken_string pagenames;
int items;
const short id = F_AL01;
int item = 0;
_tabs.destroy();
_filters.destroy();
pagenames = "";
TConfig configfile("ci0400.ini");
configfile.list_paragraphs(_tabs);
configfile.set_paragraph("Main");
items = _tabs.items();
const short id = F_AL01;
for (int i = 0; i < items; i++)
while (configfile.exist("Descr",item))
{
pagenames.add(_tabs.row(i));
_filters.add(configfile.get("Filtro",_tabs.row(i)));
_mask->activate_almanac(id + i, i, TDate(TODAY));
pagenames.add(configfile.get("Descr","Main",item));
_filters.add(configfile.get("Filter","Main",item));
_mask->activate_almanac(id + item, item, TDate(TODAY));
item++;
}
_mask->set_caption(pagenames);
_mask->disable_page(items);
if (item>0)
{
_mask->set_caption(pagenames);
_mask->disable_page(item);
}
}
void TImmissioneDocumenti_app::init_flags()
{
int filters;
int items;
TDate currdate;
TDate currstart;
TString filter;
filter << "ANNO==\"" << _year << "\"";
filters = _filters.items();
TRelation relation(LF_DOC);
TSorted_cursor cursor(&relation, "ANNO", filter);
items =cursor.items();
for (cursor=0;cursor.pos()<items;++cursor)
for(int i=0;i<filters;i++)
{
currdate = relation.lfile().get_date(DOC_DATADOC);
_flags.set(currdate-_newyearsday, 1);
filter = "";
filter << "(ANNO==\"" << _year << "\")";
filter << "&&";
filter << "(CODNUM==\"" << _filters.row(i) << "\")";
TRelation relation(LF_DOC);
TSorted_cursor cursor(&relation, "DATADOC", filter);
items = cursor.items();
if (_flags.items()>i)
((TBit_array&)_flags[i]).reset();
else
_flags.add(new TBit_array(366),i);
for (cursor=0;cursor.pos()<items;++cursor)
{
currdate = relation.lfile().get_date(DOC_DATADOC);
((TBit_array&)_flags[i]).set(currdate-_newyearsday, 1);
}
}
}
@ -91,10 +105,9 @@ void TImmissioneDocumenti_app::main_loop()
{
while (_mask->run() == K_ENTER)
{
TDate selday = _mask->selected_day();
int currpage = _mask->curr_page();
// _mask->open_inner_sheet(selday,_filters.row(currpage));
TDate selday = _mask->last_selected_day();
int currpage = _mask->last_selected_page();
_mask->open_inner_sheet(selday,_filters.row(currpage));
}
}
@ -110,9 +123,9 @@ void TImmissioneDocumenti_app::change_year(int newyear, bool init_flg)
if (init_flg) init_flags();
}
bool TImmissioneDocumenti_app::has_documents(TDate& day)
bool TImmissioneDocumenti_app::has_documents(int currpage, TDate& day)
{
return ((_flags)[day-_newyearsday]);
return (((TBit_array&)_flags[currpage])[day-_newyearsday]);
}
///////////////////////////////////////////////////////////
@ -139,14 +152,18 @@ void TImmissioneDocumenti_mask::open_inner_sheet(TDate date, TString doctype)
"ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|NDOC|20->RAGSOC",
TR("Selezione documenti"),
HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"),
0x10||0x02||0x04);
0x02|0x04);
exitval = sheet.run();
switch(exitval)
{
case K_ENTER:
call_ve0(exitval, relation, date, doctype);
break;
case K_DEL:
call_ve0(exitval, relation, date, doctype);
break;
case K_INS:
call_ve0(exitval, relation, date, doctype);
break;
@ -169,31 +186,30 @@ void TImmissioneDocumenti_mask::call_ve0(int exitval, TRelation& relation, TDate
switch(exitval)
{
case K_ENTER:
configfile.set("Action", "Modify", "main");
configfile.set("CODNUM", doctype, "33");
configfile.set("Action", "Modify", "Transaction");
configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33");
break;
case K_DEL:
configfile.set("Action", "Delete", "main");
configfile.set("CODNUM", doctype, "33");
configfile.set("Action", "Delete", "Transaction");
configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33");
break;
case K_INS:
configfile.set("Action", "Insert", "main");
configfile.set("NDOC", date.string(), "33");
configfile.set("Action", "Insert", "Transaction");
configfile.set("DATADOC", date.string(), "33");
break;
default:
break;
}
configfile.set("Mode", "A", "Transaction");
configfile.set("PROVV", "D", "33");
configfile.set("ANNO", curr_almanac().selected_year(), "33");
configfile.set("ANNO", last_selected_day().year(), "33");
configfile.set("CODNUM", doctype, "33");
}
TString commandline;
commandline.format("ve0 -0 /i%s",tempfile);
commandline.format("ve0 -0 /i%s",(const char*)tempfile);
TExternal_app ve(commandline);
ve.run();
@ -208,9 +224,9 @@ void TImmissioneDocumenti_mask::change_year(int newyear)
immissione_documenti_app().change_year(newyear);
}
bool TImmissioneDocumenti_mask::is_date_void(TDate& cdate)
bool TImmissioneDocumenti_mask::is_date_void(int currpage, TDate& cdate)
{
return !(immissione_documenti_app().has_documents(cdate));
return !(immissione_documenti_app().has_documents(currpage, cdate));
}
///////////////////////////////////////////////////////////

View File

@ -11,7 +11,7 @@ protected:
public:
// ereditato da TAlmanac_mask
virtual bool is_date_void(TDate& cdate);
virtual bool is_date_void(int currpage, TDate& cdate);
virtual void change_year(int newyear);
public:
@ -38,9 +38,8 @@ class TImmissioneDocumenti_app: public TSkeleton_application
private:
TImmissioneDocumenti_mask* _mask;
TString_array _tabs; // titoli dei tabs
TString_array _filters; // filtri tipodoc per ogni tab
TBit_array _flags; // flag di presenza dei documenti
TArray _flags; // array di TBit_array. Ognuno di essi è lungo 366 e rappresenta i flag di presenza documenti per ogni giorno dell'anno. Ogni page della maschera ha bisogno di un bitarray diverso
TDate _newyearsday; // capodanno dell'anno corrente, per uso interno
int _year; // anno corrente
@ -55,11 +54,11 @@ protected:
virtual bool destroy(void) ;
public:
bool has_documents(TDate& day); // passata come funzione alla maschera
bool has_documents(int currpage, TDate& day); // passata come funzione alla maschera
void change_year(int newyear, bool init_flg = true); // passata come funzione alla maschera
public:
TImmissioneDocumenti_app() : _flags(366) { change_year(TDate(TODAY).year(), false); }
TImmissioneDocumenti_app() { change_year(TDate(TODAY).year(), false); }
virtual ~TImmissioneDocumenti_app() {}
};

View File

@ -1,5 +1,6 @@
[Fatture]
Filtro = F01
[Main]
Filter(0) = F01
Filter(1) = B01
Descr(0) = Fatture
Descr(1) = Bolle
[Bolle]
Filtro = B01

View File

@ -1,3 +1,4 @@
#include <colors.h>
#include <config.h>
#include <automask.h>
#include <tabutil.h>
@ -91,13 +92,13 @@ void TAlmanac_mask::activate_almanac(const short id, int page, TDate& sdate)
return;
}
bool TAlmanac_mask::is_date_void(TDate& cdate)
bool TAlmanac_mask::is_date_void(int currpage, TDate& cdate)
{
return TRUE;
}
TAlmanac_mask::TAlmanac_mask(const char * name)
: TAutomask(), _activepages(0)
: TAutomask(), _activepages(0), _lastselectedday(TODAY), _lastselectedpage(1)
{
read_mask(name, 0, -1);
set_handlers();
@ -113,9 +114,9 @@ TField_window* TAlmanac_field::create_window(int x, int y, int dx, int dy, WINDO
return new TAlmanac_window(x, y, dx, dy, parent, this);
}
bool TAlmanac_field::is_date_void(TDate& cdate)
bool TAlmanac_field::is_date_void(int currpage, TDate& cdate)
{
return ((TAlmanac_mask &)mask()).is_date_void(cdate);
return ((TAlmanac_mask &)mask()).is_date_void(currpage, cdate);
}
void TAlmanac_field::set_selected_day(int nday)
@ -173,11 +174,13 @@ void TAlmanac_window::update()
int pad;
int row;
int fh;
int cpage;
TAlmanac_field & o = (TAlmanac_field&)owner();
TField_window::update();
cdate = o.selected_date();
cdate.set_day(1);
cpage = o.mask().curr_page();
rct_w = ((rct.right - rct.left) / 9);
rct_h = ((rct.bottom - rct.top) / 9);
@ -185,7 +188,7 @@ void TAlmanac_window::update()
row = 3;
set_font("Verdana", XVT_FS_BOLD);
set_color(COLOR_BLACK, COLOR_WHITE);
set_color(NORMAL_COLOR, NORMAL_BACK_COLOR);
fh = 2 + xvt_dwin_get_font_size_mapped(win());
if (o.show_month_name())
@ -198,24 +201,24 @@ void TAlmanac_window::update()
for (int i=1;i<=7;i++)
{
str.format("%c", itow(i)[0]);
str.format("%.3s", itow(i));
rct_l = rct.left + rct_w*i;
rct_t = rct.top + rct_h*2;
xvt_dwin_draw_text(win(), rct_l + pad + 2, fh + rct_t + pad + 2, str, -1);
}
cdate--;
while (!cdate.is_end_month())
do
{
if (o.is_date_void(cdate))
col_b=COLOR_WHITE;
else
col_b=COLOR_LTGRAY;
if ((++cdate).wday()==1) row++;
if (o.is_selected(cdate.day()))
col_f=COLOR_RED;
if (o.is_date_void(cpage, cdate))
col_b=NORMAL_BACK_COLOR;
else
col_f=COLOR_GRAY;
col_b=REQUIRED_BACK_COLOR;
col_f=NORMAL_COLOR;
set_pen(col_f);
set_brush(col_b);
@ -231,11 +234,17 @@ void TAlmanac_window::update()
rcttd.right = rct_l + rct_w - pad;
xvt_dwin_draw_rect(win(), &rcttd);
if (o.is_selected(cdate.day()))
{
set_pen(FOCUS_COLOR,1);
rcttd.top++; rcttd.left++; rcttd.bottom--; rcttd.right--;
xvt_dwin_draw_rect(win(), &rcttd);
}
xvt_dwin_draw_text(win(), rct_l + pad + 2, fh + rct_t + pad + 2, str, -1);
if ((++cdate).wday()==1) row++;
}
while (!cdate.is_end_month());
}
bool TAlmanac_window::on_key(KEY key)
@ -259,6 +268,9 @@ bool TAlmanac_window::on_key(KEY key)
break;
case K_DOWN:
o.move_selected_day(+7);
break;
case K_ENTER:
((TAlmanac_mask&)o.mask()).exit_mask();
break;
default:
return TField_window::on_key(key);
@ -267,8 +279,10 @@ bool TAlmanac_window::on_key(KEY key)
if(smonth!=o.selected_month())
o.mask().set(F_CHANGEMONTH, o.selected_month(), true);
if(syear!=o.selected_year())
{
o.mask().set(F_CHANGEYEAR, o.selected_year(), true);
((TAlmanac_mask&)o.mask()).set_year(o.selected_year());
}
return true;
}
@ -297,7 +311,7 @@ void TAlmanac_window::handler(WINDOW win, EVENT* ep)
delta = 7*pnt_r + pnt_c - (7*(3+cdate.week()-fdate.week()) + cdate.wday());
o.move_selected_day(delta);
if (ep->type==E_MOUSE_DBL) o.mask().stop_run(K_ENTER);
if (ep->type==E_MOUSE_DBL) ((TAlmanac_mask&)o.mask()).exit_mask();
}
break;
default:

View File

@ -78,7 +78,7 @@ public:
// @access Public Member
public:
bool is_date_void(TDate& cdate);
bool is_date_void(int currpage, TDate& cdate);
// @access Public Member
public:
@ -137,6 +137,11 @@ class TAlmanac_mask : public TAutomask
short _almanacs[MAX_PAGES];
// @cmember:(INTERNAL) Numero di pagine attive
int _activepages;
// @cmember:(INTERNAL) Giorno selezionato prima dell'uscita della maschera
TDate _lastselectedday;
// @cmember:(INTERNAL) Pagina selezionata prima dell'uscita della maschera
int _lastselectedpage;
// @access Protected Member
protected:
@ -159,15 +164,21 @@ public:
void set_year(int newyear);
// @cmember Gestione calendari: Ritorna il giorno selezionato nella pagina corrente
const TDate& selected_day() const { return curr_almanac().selected_date(); }
// @cmember Gestione calendari: Ritorna l'ultimo giorno selezionato
const TDate& last_selected_day() const { return _lastselectedday; }
// @cmember Gestione calendari: Ritorna l'ultima pagina selezionato
const int last_selected_page() const { return _lastselectedpage; }
// @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva
virtual bool is_date_void(TDate& cdate);
virtual bool is_date_void(int currpage, TDate& cdate);
// @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva
virtual void change_year(int newyear);
// @cmember Gestione selezione: Setta l'ultima selezione ed esce dalla maschera
void exit_mask() { _lastselectedday = selected_day(); _lastselectedpage = curr_page(); stop_run(K_ENTER); }
// @cmember Costruttore
TAlmanac_mask(const char * name);
// @cmember Distruttore
~TAlmanac_mask() {}
~TAlmanac_mask() { }
};
#endif