From 074dd2d8ab1f1f49861596f9f04369948e1e34e4 Mon Sep 17 00:00:00 2001 From: brugno Date: Thu, 21 Apr 2005 15:39:13 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@12979 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ci/ci0.cpp | 2 +- ci/ci0400.cpp | 354 +++++++++++++++++++++++++------------------------- ci/ci0400.h | 79 +++++++++-- 3 files changed, 246 insertions(+), 189 deletions(-) diff --git a/ci/ci0.cpp b/ci/ci0.cpp index 6b57d2f36..1a72b64c9 100755 --- a/ci/ci0.cpp +++ b/ci/ci0.cpp @@ -10,7 +10,7 @@ int main(int argc, char** argv) // ci0200(argc,argv); // stampa tabelle break; case 2: - ci0300(argc,argv); // parametri configurazione Contabilita' Industriale + // ci0300(argc,argv); // parametri configurazione Contabilita' Industriale break; case 3: ci0400(argc,argv); // Immssione documenti diff --git a/ci/ci0400.cpp b/ci/ci0400.cpp index 94a2113c4..21c5873ef 100755 --- a/ci/ci0400.cpp +++ b/ci/ci0400.cpp @@ -1,224 +1,226 @@ #include -#include +#include +#include #include #include #include -#include "ef0.h" -#include "ef0101.h" -#include "ef0400.h" +#include -///////////////////////////////////////////////////////////////////////////// -//Classe per l'eliminazione di effetti di effetti con selezione per gruppi // -///////////////////////////////////////////////////////////////////////////// -class TEliminazione_effetti: public TSkeleton_application +#include "ci0.h" +#include "cilib.h" +#include "ci0400.h" + + +/////////////////////////////////////////////////////////// +// TImmissioneDocumenti_app +/////////////////////////////////////////////////////////// + +// Overrides + +bool TImmissioneDocumenti_app::create() { - TMask *_msk; - TRelation *_rel; - TRectype *_from, *_to; - virtual bool create() ; - virtual bool destroy() ; - virtual void main_loop(); -protected: - static bool from_numero_handler(TMask_field& f, KEY k); - static bool to_numero_handler(TMask_field& f, KEY k); - static bool from_data_handler(TMask_field& f, KEY k); - static bool to_data_handler(TMask_field& f, KEY k); - static bool conferma_handler(TMask_field& f, KEY k); - static bool annulla_handler(TMask_field& f, KEY k); - static void elimina(); -public: - TEliminazione_effetti() {}; - virtual ~TEliminazione_effetti() {}; -}; + _mask = new TImmissioneDocumenti_mask(); -// restituisce un riferimento all' applicazione -inline TEliminazione_effetti& app(){return (TEliminazione_effetti&)main_app();} + init_tabs(); + init_flags(); -// crea l'applicazione -bool TEliminazione_effetti::create() -{ - _msk = new TMask("ef0400a"); - _rel = new TRelation(LF_EFFETTI); - _rel->first(); - _from = new TRectype(_rel->lfile().curr()); - _rel->last(); - _to = new TRectype(_rel->lfile().curr()); - _msk->set_handler(F_DA_RIBA, from_numero_handler); - _msk->set_handler(F_A_RIBA, to_numero_handler); - _msk->set_handler(F_DA_DATA, from_data_handler); - _msk->set_handler(F_A_DATA, to_data_handler); - _msk->set_handler(DLG_OK, conferma_handler); - _msk->set_handler(DLG_CANCEL, annulla_handler); return TSkeleton_application::create(); } -// distrugge l'applicazione -bool TEliminazione_effetti::destroy() +bool TImmissioneDocumenti_app::destroy() { - delete _msk; - delete _rel; - delete _from; - delete _to; - return TRUE; -} + delete _mask; -//Carica maschera eliminazione effetti -void TEliminazione_effetti::main_loop() -{ - KEY key = K_ENTER; - while (key != K_QUIT)//finchè non si chiude la maschera + return TSkeleton_application::destroy(); +} + +void TImmissioneDocumenti_app::main_loop() +{ + while (_mask->run() == K_ENTER) { - _msk->reset(); - key = _msk->run(); + _mask->open_inner_sheet(_mask->selected_day(),_filters.row(_mask->curr_page())); } } -//Handler per la gestione della prima chiave (from) del cursore per numero -bool TEliminazione_effetti::from_numero_handler(TMask_field& f, KEY k) +// Chiamate dalla maschera + +void TImmissioneDocumenti_app::change_year(int newyear) { - TMask &m = f.mask(); - if (k == K_TAB) - { - if (!f.get().empty())// se il campo non è vuoto - { - TRectype* from = app()._from; - long num = m.get_long(F_DA_RIBA); - from->put(EFF_NPROGTR, num); - } - } - return TRUE; + _year = newyear; + _newyearsday.set_year(_year); + + init_flags(); } -//Handler per la gestione della seconda chiave (to) del cursore per numero -bool TEliminazione_effetti::to_numero_handler(TMask_field& f, KEY k) +bool TImmissioneDocumenti_app::has_documents(TDate& day) { - TMask &m = f.mask(); - if (k == K_TAB) - { - if (!f.get().empty())// se il campo non è vuoto - { - TRectype* to = app()._to; - long num = m.get_long(F_A_RIBA); - to->put(EFF_NPROGTR, num); - } - } - return TRUE; + return ((_flags)[day-_newyearsday]); } -//Handler per la gestione della prima chiave (from) del cursore per data -bool TEliminazione_effetti::from_data_handler(TMask_field& f, KEY k) +// Inizializzazioni + +void TImmissioneDocumenti_app::init_tabs() { - TMask &m = f.mask(); - if (k == K_TAB) + TString almanacname; + TString pagename; + TString currfilter; + int items; + + _tabs.destroy(); + _filters.destroy(); + + TConfig configfile("ci0300.ini"); + configfile.list_paragraphs(_tabs); + + items = _tabs.items(); + + for (int i=0;iput(EFF_NPROGTR, num); - from->put(EFF_DATASCAD, data); - } + pagename.format("Pagina %2d",i); + currfilter = configfile.get("Filtro",_tabs.row(i)); + TMask_field* currpage = _mask->find_by_fieldname(pagename); + currpage->set_prompt(_tabs.row(i)); + _filters.add(currfilter); + almanacname.format("Almanacco %2d",i); + _mask->activate_almanac((TAlmanac_field*)_mask->find_by_fieldname(almanacname), i, TDate(TODAY)); } - return TRUE; } -//Handler per la gestione della seconda chiave (to) del cursore per numero -bool TEliminazione_effetti::to_data_handler(TMask_field& f, KEY k) +void TImmissioneDocumenti_app::init_flags() { - TMask &m = f.mask(); - if (k == K_TAB) - { - if (!f.get().empty())// se il campo non è vuoto - { - TRectype* to = app()._to; - TDate data = m.get(F_A_DATA); - long num = m.get_long(F_A_RIBA); - to->put(EFF_NPROGTR, num); - to->put(EFF_DATASCAD, data); - } - } - return TRUE; -} - -// Si effettua l'istanziazione del cursore e si eliminano gli effetti che vi -// appartengono -void TEliminazione_effetti::elimina() -{ - const TRectype *from = app()._from; - const TRectype *to = app()._to; - TMask *m = app()._msk; - TRelation *rel = app()._rel; + int items; + TDate currdate; + TDate currstart; TString filter; - - int key; - char op1 = m->get(F_TIPOSEL)[0]; - char op2 = m->get(F_TIPODIST)[0]; - char op3 = m->get(F_TIPOCANC)[0]; - switch (op1) //scelgo la chiave per il cursore + + filter << "ANNO==\"" << _year << "\""; + + TRelation relation(LF_DOC); + + TSorted_cursor cursor(&relation, "ANNO", filter); + + items =cursor.items(); + + for (cursor=0;cursor.pos()RAGSOC", + TR("Selezione documenti"), + HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"), + 0x10||0x02||0x04); + + exitval = sheet.run(); + + switch(exitval) { - if (yesno_box(TR("Si desidera veramente eliminare gli effetti selezionati"))) - elimina(); + case K_ENTER: + case K_DEL: + case K_INS: + call_ve0(exitval, relation, date, doctype); + break; + case K_ESC: + break; + default: + break; } - return TRUE; } -// Handler per gestire la conferma dell'annullamento dei dati -// inseriti nella maschera -bool TEliminazione_effetti::annulla_handler(TMask_field& f, KEY k) +void TImmissioneDocumenti_mask::call_ve0(int exitval, TRelation& relation, TDate& date, TString& doctype) { - TMask &m = f.mask(); - if (k == K_SPACE) + TFilename tempfile; + tempfile.tempdir(); + tempfile.add("cicallsve0.ini"); + { - if (yesno_box(TR("Si desidera veramente annullare i dati inseriti"))) - m.reset(); + TConfig configfile(tempfile); + + switch(exitval) + { + case K_ENTER: + configfile.set("Action", "Modify", "main"); + configfile.set("CODNUM", doctype, "33"); + 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("NDOC", relation.lfile().get(DOC_NDOC), "33"); + break; + case K_INS: + configfile.set("Action", "Insert", "main"); + configfile.set("NDOC", date.string(), "33"); + break; + default: + break; + } + + configfile.set("PROVV", "D", "33"); + configfile.set("ANNO", curr_almanac()->selected_year(), "33"); + configfile.set("CODNUM", doctype, "33"); } - return TRUE; + + TString commandline; + + commandline.format("ve0 -0 /i%s",tempfile); + + TExternal_app ve(commandline); + ve.run(); + + remove_file(tempfile); } -int ef0400(int argc, char* argv[]) +// Richiami all'applicazione + +void TImmissioneDocumenti_mask::change_year(int newyear) +{ + immissione_documenti_app().change_year(newyear); +} + +bool TImmissioneDocumenti_mask::is_date_void(TDate& cdate) +{ + return !(immissione_documenti_app().has_documents(cdate)); +} + +/////////////////////////////////////////////////////////// +// Mains +/////////////////////////////////////////////////////////// + +int ci0300(int argc, char* argv[]) { - TEliminazione_effetti a ; - a.run(argc, argv, TR("Eliminazione Effetti")); + TImmissioneDocumenti_app a ; + a.run(argc, argv, TR("Immissione Documenti")); + return 0; +} + +int ci0400(int argc, char* argv[]) +{ + TImmissioneDocumenti_app a ; + a.run(argc, argv, TR("Immissione Documenti")); return 0; } diff --git a/ci/ci0400.h b/ci/ci0400.h index 960c86520..dc27b8a72 100755 --- a/ci/ci0400.h +++ b/ci/ci0400.h @@ -1,15 +1,70 @@ -#ifndef __EF0400_H -#define __EF0400_H +#ifndef __CI0400_H +#define __CI0400_H -// DEFINIZIONE CAMPI MASCHERA PER LA ELIMINAZIONE DEGLI EFFETTI -// campi maschera ef0400a +/////////////////////////////////////////////////////////// +// TImmissioneDocumenti_mask +/////////////////////////////////////////////////////////// -#define F_TIPOSEL 101 -#define F_TIPOCANC 102 -#define F_DA_RIBA 103 -#define F_A_RIBA 104 -#define F_DA_DATA 105 -#define F_A_DATA 106 -#define F_TIPODIST 107 +class TImmissioneDocumenti_mask : public TAlmanac_mask +{ +protected: +// ereditato da TMask + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) { return TRUE; } + +public: +// ereditato da TAlmanac_mask + virtual bool is_date_void(TDate& cdate); + virtual void change_year(int newyear); -#endif// __EF0400_H +public: +// apertura del foglio interno di gestione dei documenti + void open_inner_sheet(TDate date, TString doctype); + +private: +// chiamata del programma ve0 + void call_ve0(int exitval, TRelation& relation, TDate& date, TString& doctype); + +public: +// Costruttore + TImmissioneDocumenti_mask() : TAlmanac_mask() { } +// Distruttore + ~TImmissioneDocumenti_mask() { } +}; + +/////////////////////////////////////////////////////////// +// TImmissioneDocumenti_app +/////////////////////////////////////////////////////////// + +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 + + 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_app() : _flags(366), _year(TDate(TODAY).year()), _newyearsday(1,1,_year) {} + virtual ~TImmissioneDocumenti_app() {} +}; + +inline TImmissioneDocumenti_app& immissione_documenti_app() { return (TImmissioneDocumenti_app&)main_app(); } + +#endif // __CI0400_H