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() void TImmissioneDocumenti_app::init_tabs()
{ {
TToken_string pagenames; TToken_string pagenames;
int items; const short id = F_AL01;
int item = 0;
_tabs.destroy();
_filters.destroy(); _filters.destroy();
pagenames = ""; pagenames = "";
TConfig configfile("ci0400.ini"); TConfig configfile("ci0400.ini");
configfile.list_paragraphs(_tabs); configfile.set_paragraph("Main");
items = _tabs.items(); while (configfile.exist("Descr",item))
const short id = F_AL01;
for (int i = 0; i < items; i++)
{ {
pagenames.add(_tabs.row(i)); pagenames.add(configfile.get("Descr","Main",item));
_filters.add(configfile.get("Filtro",_tabs.row(i))); _filters.add(configfile.get("Filter","Main",item));
_mask->activate_almanac(id + i, i, TDate(TODAY)); _mask->activate_almanac(id + item, item, TDate(TODAY));
item++;
} }
_mask->set_caption(pagenames); if (item>0)
_mask->disable_page(items); {
_mask->set_caption(pagenames);
_mask->disable_page(item);
}
} }
void TImmissioneDocumenti_app::init_flags() void TImmissioneDocumenti_app::init_flags()
{ {
int filters;
int items; int items;
TDate currdate; TDate currdate;
TDate currstart; TDate currstart;
TString filter; TString filter;
filter << "ANNO==\"" << _year << "\""; filters = _filters.items();
TRelation relation(LF_DOC); for(int i=0;i<filters;i++)
TSorted_cursor cursor(&relation, "ANNO", filter);
items =cursor.items();
for (cursor=0;cursor.pos()<items;++cursor)
{ {
currdate = relation.lfile().get_date(DOC_DATADOC); filter = "";
_flags.set(currdate-_newyearsday, 1); 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) while (_mask->run() == K_ENTER)
{ {
TDate selday = _mask->selected_day(); TDate selday = _mask->last_selected_day();
int currpage = _mask->curr_page(); int currpage = _mask->last_selected_page();
_mask->open_inner_sheet(selday,_filters.row(currpage));
// _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(); 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", "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|NDOC|20->RAGSOC",
TR("Selezione documenti"), TR("Selezione documenti"),
HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"), HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"),
0x10||0x02||0x04); 0x02|0x04);
exitval = sheet.run(); exitval = sheet.run();
switch(exitval) switch(exitval)
{ {
case K_ENTER: case K_ENTER:
call_ve0(exitval, relation, date, doctype);
break;
case K_DEL: case K_DEL:
call_ve0(exitval, relation, date, doctype);
break;
case K_INS: case K_INS:
call_ve0(exitval, relation, date, doctype); call_ve0(exitval, relation, date, doctype);
break; break;
@ -169,31 +186,30 @@ void TImmissioneDocumenti_mask::call_ve0(int exitval, TRelation& relation, TDate
switch(exitval) switch(exitval)
{ {
case K_ENTER: case K_ENTER:
configfile.set("Action", "Modify", "main"); configfile.set("Action", "Modify", "Transaction");
configfile.set("CODNUM", doctype, "33");
configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33");
break; break;
case K_DEL: case K_DEL:
configfile.set("Action", "Delete", "main"); configfile.set("Action", "Delete", "Transaction");
configfile.set("CODNUM", doctype, "33");
configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33");
break; break;
case K_INS: case K_INS:
configfile.set("Action", "Insert", "main"); configfile.set("Action", "Insert", "Transaction");
configfile.set("NDOC", date.string(), "33"); configfile.set("DATADOC", date.string(), "33");
break; break;
default: default:
break; break;
} }
configfile.set("Mode", "A", "Transaction");
configfile.set("PROVV", "D", "33"); 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"); configfile.set("CODNUM", doctype, "33");
} }
TString commandline; TString commandline;
commandline.format("ve0 -0 /i%s",tempfile); commandline.format("ve0 -0 /i%s",(const char*)tempfile);
TExternal_app ve(commandline); TExternal_app ve(commandline);
ve.run(); ve.run();
@ -208,9 +224,9 @@ void TImmissioneDocumenti_mask::change_year(int newyear)
immissione_documenti_app().change_year(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: public:
// ereditato da TAlmanac_mask // 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); virtual void change_year(int newyear);
public: public:
@ -38,9 +38,8 @@ class TImmissioneDocumenti_app: public TSkeleton_application
private: private:
TImmissioneDocumenti_mask* _mask; TImmissioneDocumenti_mask* _mask;
TString_array _tabs; // titoli dei tabs
TString_array _filters; // filtri tipodoc per ogni tab 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 TDate _newyearsday; // capodanno dell'anno corrente, per uso interno
int _year; // anno corrente int _year; // anno corrente
@ -55,11 +54,11 @@ protected:
virtual bool destroy(void) ; virtual bool destroy(void) ;
public: 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 void change_year(int newyear, bool init_flg = true); // passata come funzione alla maschera
public: public:
TImmissioneDocumenti_app() : _flags(366) { change_year(TDate(TODAY).year(), false); } TImmissioneDocumenti_app() { change_year(TDate(TODAY).year(), false); }
virtual ~TImmissioneDocumenti_app() {} virtual ~TImmissioneDocumenti_app() {}
}; };

View File

@ -1,5 +1,6 @@
[Fatture] [Main]
Filtro = F01 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 <config.h>
#include <automask.h> #include <automask.h>
#include <tabutil.h> #include <tabutil.h>
@ -91,13 +92,13 @@ void TAlmanac_mask::activate_almanac(const short id, int page, TDate& sdate)
return; return;
} }
bool TAlmanac_mask::is_date_void(TDate& cdate) bool TAlmanac_mask::is_date_void(int currpage, TDate& cdate)
{ {
return TRUE; return TRUE;
} }
TAlmanac_mask::TAlmanac_mask(const char * name) TAlmanac_mask::TAlmanac_mask(const char * name)
: TAutomask(), _activepages(0) : TAutomask(), _activepages(0), _lastselectedday(TODAY), _lastselectedpage(1)
{ {
read_mask(name, 0, -1); read_mask(name, 0, -1);
set_handlers(); 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); 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) void TAlmanac_field::set_selected_day(int nday)
@ -173,11 +174,13 @@ void TAlmanac_window::update()
int pad; int pad;
int row; int row;
int fh; int fh;
int cpage;
TAlmanac_field & o = (TAlmanac_field&)owner(); TAlmanac_field & o = (TAlmanac_field&)owner();
TField_window::update(); TField_window::update();
cdate = o.selected_date(); cdate = o.selected_date();
cdate.set_day(1); cdate.set_day(1);
cpage = o.mask().curr_page();
rct_w = ((rct.right - rct.left) / 9); rct_w = ((rct.right - rct.left) / 9);
rct_h = ((rct.bottom - rct.top) / 9); rct_h = ((rct.bottom - rct.top) / 9);
@ -185,7 +188,7 @@ void TAlmanac_window::update()
row = 3; row = 3;
set_font("Verdana", XVT_FS_BOLD); 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()); fh = 2 + xvt_dwin_get_font_size_mapped(win());
if (o.show_month_name()) if (o.show_month_name())
@ -198,24 +201,24 @@ void TAlmanac_window::update()
for (int i=1;i<=7;i++) 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_l = rct.left + rct_w*i;
rct_t = rct.top + rct_h*2; rct_t = rct.top + rct_h*2;
xvt_dwin_draw_text(win(), rct_l + pad + 2, fh + rct_t + pad + 2, str, -1); 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)) if ((++cdate).wday()==1) row++;
col_b=COLOR_WHITE;
else
col_b=COLOR_LTGRAY;
if (o.is_selected(cdate.day())) if (o.is_date_void(cpage, cdate))
col_f=COLOR_RED; col_b=NORMAL_BACK_COLOR;
else else
col_f=COLOR_GRAY; col_b=REQUIRED_BACK_COLOR;
col_f=NORMAL_COLOR;
set_pen(col_f); set_pen(col_f);
set_brush(col_b); set_brush(col_b);
@ -231,11 +234,17 @@ void TAlmanac_window::update()
rcttd.right = rct_l + rct_w - pad; rcttd.right = rct_l + rct_w - pad;
xvt_dwin_draw_rect(win(), &rcttd); 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); 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) bool TAlmanac_window::on_key(KEY key)
@ -259,6 +268,9 @@ bool TAlmanac_window::on_key(KEY key)
break; break;
case K_DOWN: case K_DOWN:
o.move_selected_day(+7); o.move_selected_day(+7);
break;
case K_ENTER:
((TAlmanac_mask&)o.mask()).exit_mask();
break; break;
default: default:
return TField_window::on_key(key); return TField_window::on_key(key);
@ -267,8 +279,10 @@ bool TAlmanac_window::on_key(KEY key)
if(smonth!=o.selected_month()) if(smonth!=o.selected_month())
o.mask().set(F_CHANGEMONTH, o.selected_month(), true); o.mask().set(F_CHANGEMONTH, o.selected_month(), true);
if(syear!=o.selected_year()) if(syear!=o.selected_year())
{
o.mask().set(F_CHANGEYEAR, o.selected_year(), true); o.mask().set(F_CHANGEYEAR, o.selected_year(), true);
((TAlmanac_mask&)o.mask()).set_year(o.selected_year());
}
return true; 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()); delta = 7*pnt_r + pnt_c - (7*(3+cdate.week()-fdate.week()) + cdate.wday());
o.move_selected_day(delta); 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; break;
default: default:

View File

@ -78,7 +78,7 @@ public:
// @access Public Member // @access Public Member
public: public:
bool is_date_void(TDate& cdate); bool is_date_void(int currpage, TDate& cdate);
// @access Public Member // @access Public Member
public: public:
@ -137,6 +137,11 @@ class TAlmanac_mask : public TAutomask
short _almanacs[MAX_PAGES]; short _almanacs[MAX_PAGES];
// @cmember:(INTERNAL) Numero di pagine attive // @cmember:(INTERNAL) Numero di pagine attive
int _activepages; 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 // @access Protected Member
protected: protected:
@ -159,15 +164,21 @@ public:
void set_year(int newyear); void set_year(int newyear);
// @cmember Gestione calendari: Ritorna il giorno selezionato nella pagina corrente // @cmember Gestione calendari: Ritorna il giorno selezionato nella pagina corrente
const TDate& selected_day() const { return curr_almanac().selected_date(); } 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 // @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 // @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva
virtual void change_year(int newyear); 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 // @cmember Costruttore
TAlmanac_mask(const char * name); TAlmanac_mask(const char * name);
// @cmember Distruttore // @cmember Distruttore
~TAlmanac_mask() {} ~TAlmanac_mask() { }
}; };
#endif #endif