Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12974 c028cbd2-c16b-5b4b-a496-9718f37d4682
223 lines
4.9 KiB
C++
Executable File
223 lines
4.9 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <isam.h>
|
|
#include <mask.h>
|
|
#include <prefix.h>
|
|
#include <progind.h>
|
|
#include <relation.h>
|
|
#include <sheet.h>
|
|
#include <tabutil.h>
|
|
|
|
#include <doc.h>
|
|
|
|
#include "ci0.h"
|
|
#include "cilib.h"
|
|
#include "ci0300.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TSelezioneGiorno_mask
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TSelezioneGiorno_mask : public TAlmanac_mask
|
|
{
|
|
protected:
|
|
// ereditato da TMask
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) { return TRUE; }
|
|
|
|
public:
|
|
// apertura del foglio interno di gestione dei documenti
|
|
void open_inner_sheet(TDate date, TString doctype);
|
|
|
|
public:
|
|
// Costruttore
|
|
TSelezioneGiorno_mask() : TAlmanac_mask() { }
|
|
// Distruttore
|
|
~TSelezioneGiorno_mask() { }
|
|
};
|
|
|
|
void TSelezioneGiorno_mask::open_inner_sheet(TDate date, TString doctype)
|
|
{
|
|
TString filter;
|
|
TRelation* relation;
|
|
TCursor* cursor;
|
|
TCursor_sheet* sheet;
|
|
int exitval;
|
|
|
|
filter << "(ANSI(DATADOC)==\"" << date.string(ANSI) << "\")";
|
|
filter << "&&";
|
|
filter << "(TIPODOC==\"" << doctype << "\")";
|
|
|
|
relation = new TRelation(LF_DOC);
|
|
relation->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
|
cursor = new TCursor(relation, filter);
|
|
sheet = new TCursor_sheet(cursor,
|
|
"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"),
|
|
0, 1);
|
|
// tbc: gestione dei buttons per bene
|
|
|
|
exitval = sheet->run();
|
|
|
|
switch(exitval)
|
|
{
|
|
case K_ENTER:
|
|
break;
|
|
case K_DEL:
|
|
break;
|
|
//case K_NEW: tbc: gestione di questi eventi. come chiamare applicazione e come al posto di k_del e bmp nelle maschere
|
|
// break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TImmissioneDocumenti
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TImmissioneDocumenti: public TSkeleton_application
|
|
{
|
|
private:
|
|
TSelezioneGiorno_mask* _mask;
|
|
|
|
TString_array _tabs; // titoli dei tabs
|
|
TString_array _filters; // filtri tipodoc per ogni tab
|
|
TBit_array _flags; // flag di presenza dei documenti
|
|
|
|
TDate* _newyearsday; // capodanno dell'anno corrente, per uso interno
|
|
int _year; // anno corrente
|
|
|
|
private:
|
|
void init_tabs();
|
|
void init_flags();
|
|
|
|
protected:
|
|
virtual bool create(void);
|
|
virtual void main_loop();
|
|
virtual bool destroy(void) ;
|
|
|
|
public:
|
|
bool has_documents(TDate& day); // passata come funzione alla maschera
|
|
void change_year(int newyear); // passata come funzione alla maschera
|
|
|
|
public:
|
|
TImmissioneDocumenti() : _flags(366) {}
|
|
virtual ~TImmissioneDocumenti() {}
|
|
};
|
|
|
|
// Overrides
|
|
|
|
bool TImmissioneDocumenti::create()
|
|
{
|
|
_mask = new TSelezioneGiorno_mask();
|
|
|
|
_year = TDate(TODAY).year();
|
|
_newyearsday = new TDate(1,1,_year);
|
|
|
|
init_tabs();
|
|
init_flags();
|
|
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
bool TImmissioneDocumenti::destroy()
|
|
{
|
|
delete _mask;
|
|
|
|
return TSkeleton_application::destroy();
|
|
}
|
|
|
|
void TImmissioneDocumenti::main_loop()
|
|
{
|
|
while (_mask->run() == K_ENTER)
|
|
{
|
|
_mask->open_inner_sheet(_mask->selected_day(),_filters.row(_mask->curr_page()));
|
|
}
|
|
}
|
|
|
|
// Chiamate dalla maschera
|
|
|
|
void TImmissioneDocumenti::change_year(int newyear)
|
|
{
|
|
_year = newyear;
|
|
_newyearsday = new TDate(1,1,_year);
|
|
|
|
init_flags();
|
|
}
|
|
|
|
bool TImmissioneDocumenti::has_documents(TDate& day)
|
|
{
|
|
return ((_flags)[day-*_newyearsday]);
|
|
}
|
|
|
|
// Inizializzazioni
|
|
|
|
void TImmissioneDocumenti::init_tabs()
|
|
{
|
|
TMask_field* currpage;
|
|
TConfig* configfile;
|
|
TString pagename;
|
|
TString currfilter;
|
|
int items;
|
|
|
|
_tabs.destroy();
|
|
_filters.destroy();
|
|
|
|
configfile = new TConfig("ci0300.ini");
|
|
configfile->list_paragraphs(_tabs);
|
|
|
|
items = _tabs.items();
|
|
|
|
for (int i=0;i<items;i++)
|
|
{
|
|
pagename.format("Pagina %2d",i);
|
|
currfilter = configfile->get("Filtro",_tabs.row(i));
|
|
currpage = _mask->find_by_fieldname(pagename);
|
|
currpage->set_prompt(_tabs.row(i));
|
|
_filters.add(currfilter);
|
|
_mask->activate_almanac(i, TDate(TODAY));
|
|
}
|
|
}
|
|
|
|
void TImmissioneDocumenti::init_flags()
|
|
{
|
|
TDate currdate;
|
|
TDate currstart;
|
|
TString filter;
|
|
TRelation* relation;
|
|
TSorted_cursor* cursor;
|
|
int items;
|
|
|
|
filter << "ANNO==\"" << _year << "\"";
|
|
|
|
relation = new TRelation(LF_DOC);
|
|
cursor = new TSorted_cursor(relation, "ANNO", filter);
|
|
|
|
items =cursor->items();
|
|
|
|
for (*cursor=0;cursor->pos()<items;++(*cursor))
|
|
{
|
|
currdate = relation->lfile().get_date(DOC_DATADOC);
|
|
_flags.set(currdate-*_newyearsday, 1);
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Mains
|
|
///////////////////////////////////////////////////////////
|
|
|
|
int ci0300(int argc, char* argv[])
|
|
{
|
|
TImmissioneDocumenti a ;
|
|
a.run(argc, argv, TR("Immissione Documenti"));
|
|
return 0;
|
|
}
|
|
|
|
int ci0400(int argc, char* argv[])
|
|
{
|
|
TImmissioneDocumenti a ;
|
|
a.run(argc, argv, TR("Immissione Documenti"));
|
|
return 0;
|
|
}
|