From e9f1a4ec4e01be38e53166a1a4699cd6b8d6c7ff Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 10 Feb 2011 13:30:55 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento : iniziato programma per stampa rilevazione ore mensili git-svn-id: svn://10.65.10.50/branches/R_10_00@21618 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ci/ci1.cpp | 5 +- ci/ci1.h | 1 + ci/ci1300.cpp | 197 +++++++++++++++++++++++++++++++++++++++++++++++++ ci/ci1300a.h | 13 ++++ ci/ci1300a.uml | 144 ++++++++++++++++++++++++++++++++++++ 5 files changed, 359 insertions(+), 1 deletion(-) create mode 100755 ci/ci1300.cpp create mode 100755 ci/ci1300a.h create mode 100755 ci/ci1300a.uml diff --git a/ci/ci1.cpp b/ci/ci1.cpp index a4fb48ad3..4380576c5 100755 --- a/ci/ci1.cpp +++ b/ci/ci1.cpp @@ -8,7 +8,10 @@ int main(int argc, char** argv) { case 1: ci1200(argc,argv); // stampa - break; + break; + case 2: + ci1300(argc,argv); // rilevazione ore mensili + break; default: break; } diff --git a/ci/ci1.h b/ci/ci1.h index acf3b6dcc..58a814201 100755 --- a/ci/ci1.h +++ b/ci/ci1.h @@ -2,6 +2,7 @@ #define __CI1_H int ci1200(int argc, char* argv[]); // stampe +int ci1300(int argc, char* argv[]); // rilevazione ore mensili #endif // __CI1_H diff --git a/ci/ci1300.cpp b/ci/ci1300.cpp new file mode 100755 index 000000000..3101ef5c4 --- /dev/null +++ b/ci/ci1300.cpp @@ -0,0 +1,197 @@ + +#include +#include +#include +#include +#include +#include + + +#include "ci1300a.h" + + +/////////////////////////////////////////////////////////// +// Maschera +/////////////////////////////////////////////////////////// + +class TRil_ore_mask : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + void elabora() const; + void elabora_risorsa(const TString& curr_risorsa) const; + + TRil_ore_mask(); + virtual ~TRil_ore_mask() {} +}; + +TRil_ore_mask::TRil_ore_mask() : TAutomask("ci1300a") +{ +} + +bool TRil_ore_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + return true; +} + +void TRil_ore_mask::elabora_risorsa(const TString& curr_risorsa) const +{ + const char tiporisorsa = get(F_RISOATT)[0]; + const int anno = get_int(F_ANNO); + const int mese = get_int(F_MESE); + + //query sul file delle ore in chiave 3: TIPO+TIPORA+CODICE+ANNO+MESE+... + TString query; + query << "USE RILORE KEY 3"; + query << "\nFROM TIPO=#TIPO TIPORA=#TIPORA CODICE=#CODICE ANNO=#ANNO MESE=#MESE"; + query << "\nTO TIPO=#TIPO TIPORA=#TIPORA CODICE=#CODICE ANNO=#ANNO MESE=#MESE"; + + TISAM_recordset rilore_recset(query); + rilore_recset.set_var("#TIPORA", (TVariant&)tiporisorsa); + rilore_recset.set_var("#CODICE", (TVariant&)curr_risorsa); + rilore_recset.set_var("#ANNO", (TVariant&)anno); + rilore_recset.set_var("#MESE", (TVariant&)mese); + + for (int i = 0; i < 2; i++) + { + char tipo = 'C'; + if (i == 0) + tipo = 'P'; + rilore_recset.set_var("#TIPO", (TVariant&)tipo); + + const long rilore_recset_items = rilore_recset.items(); + + TString msg; + msg << "Scansione " << curr_risorsa << ".."; + TProgind pi(rilore_recset_items, msg, true, true); + + for (bool ok = rilore_recset.move_first(); ok; ok = rilore_recset.move_next()) + { + if (!pi.addstatus(1)) + break; + + } + + } +} + +void TRil_ore_mask::elabora() const +{ + //query sulla tabella interessata (risorse o attrezzature) + TString16 da_ris_att, a_ris_att; + TString query_ris_att; + const char tiporisorsa = get(F_RISOATT)[0]; + + if (tiporisorsa == 'R') + { + da_ris_att = get(F_DA_CODRIS); + a_ris_att = get(F_A_CODRIS); + query_ris_att << "USE RSS"; + } + else + { + da_ris_att = get(F_DA_CODATT); + a_ris_att = get(F_A_CODATT); + query_ris_att << "USE ATR"; + } + + query_ris_att << "\nFROM CODTAB=#DACODICE"; + query_ris_att << "\nTO CODTAB=#ACODICE"; + + TISAM_recordset recset_ris_att(query_ris_att); + recset_ris_att.set_var("#DACODICE", da_ris_att); + recset_ris_att.set_var("#ACODICE", a_ris_att); + const long recset_ris_att_items = recset_ris_att.items(); + + TProgind pi(recset_ris_att_items, TR("Scansione risorse/attrezzature.."), true, true); + + for (bool ok = recset_ris_att.move_first(); ok; ok = recset_ris_att.move_next()) + { + if (!pi.addstatus(1)) + break; + + const TString& curr_risorsa = recset_ris_att.cursor()->curr().get("CODTAB"); + elabora_risorsa(curr_risorsa); + + + } +} + +/////////////////////////////////////////////////////////// +// Recordset +/////////////////////////////////////////////////////////// + +class TRil_ore_recordset : public TCSV_recordset +{ +protected: + +public: + TRil_ore_recordset(const TMask& mask); + + //virtual const TVariant& get(const char* column_name) const; + //virtual const TVariant& get(unsigned int column) const { return TCSV_recordset::get(column); } +}; + +TRil_ore_recordset::TRil_ore_recordset(const TMask& mask) +: TCSV_recordset("CSV(\"\t\")") //tab separated +{ + FOR_EACH_MASK_FIELD(mask, i, field) + { + const TFieldref* f = field->field(); + if (f != NULL) + { + const TString& name = f->name(); + set_var(name, field->get(), true); + } + } +} + +/////////////////////////////////////////////////////////// +// Report +/////////////////////////////////////////////////////////// + +class TRil_ore_report : public TReport +{ +protected: +virtual bool use_mask() { return false; } +public: + TRil_ore_report() {} +}; + +/////////////////////////////////////////////////////////// +// Applicazione +/////////////////////////////////////////////////////////// + +class TRil_ore : public TSkeleton_application +{ +protected: + +public: + virtual bool create(); + virtual void main_loop(); +}; + + +void TRil_ore::main_loop() +{ + TRil_ore_mask mask; + + while (mask.run() == K_ENTER) + { + mask.elabora(); + } +} + +bool TRil_ore::create() +{ + return TSkeleton_application::create(); +} + +int ci1300(int argc, char* argv[]) +{ + TRil_ore sd; + sd.run(argc, argv, "Rilevazione ore"); + return 0; +} diff --git a/ci/ci1300a.h b/ci/ci1300a.h new file mode 100755 index 000000000..20b6207bd --- /dev/null +++ b/ci/ci1300a.h @@ -0,0 +1,13 @@ + +#define F_RISOATT 201 +#define F_DA_CODRIS 202 +#define F_DA_DESRIS 203 +#define F_A_CODRIS 204 +#define F_A_DESRIS 205 +#define F_DA_CODATT 206 +#define F_DA_DESATT 207 +#define F_A_CODATT 208 +#define F_A_DESATT 209 + +#define F_ANNO 211 +#define F_MESE 212 \ No newline at end of file diff --git a/ci/ci1300a.uml b/ci/ci1300a.uml new file mode 100755 index 000000000..67d48ca1c --- /dev/null +++ b/ci/ci1300a.uml @@ -0,0 +1,144 @@ +#include "ci1300a.h" + +TOOLBAR "topbar" 0 0 0 2 +#include +ENDPAGE + +PAGE "Rilevazione ore" -1 -1 0 0 + +GROUPBOX -1 78 5 +BEGIN + PROMPT 1 1 "@bFiltri su risorse / attrezzature" +END + +LISTBOX F_RISOATT 1 12 +BEGIN + PROMPT 2 2 "@bTipo " + ITEM "R|Risorsa" + MESSAGE HIDE,2@|SHOW,1@ + ITEM "A|Attrezzatura" + MESSAGE HIDE,1@|SHOW,2@ + FLAGS "Z" +END + +STRING F_DA_CODRIS 16 +BEGIN + PROMPT 2 3 "Da codice " + USE RSS + INPUT CODTAB F_DA_CODRIS + DISPLAY "Codice@16" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_DA_CODRIS CODTAB + OUTPUT F_DA_DESRIS S0 + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_DA_DESRIS 50 43 +BEGIN + PROMPT 32 3 "" + USE RSS KEY 2 + INPUT S0 F_DA_DESRIS + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@16" CODTAB + COPY OUTPUT F_DA_CODRIS + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_A_CODRIS 16 +BEGIN + PROMPT 2 4 "A codice " + USE RSS + INPUT CODTAB F_A_CODRIS + DISPLAY "Codice@16" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_A_CODRIS CODTAB + OUTPUT F_A_DESRIS S0 + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_A_DESRIS 50 43 +BEGIN + PROMPT 32 4 "" + USE RSS KEY 2 + INPUT S0 F_DA_DESRIS + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@16" CODTAB + COPY OUTPUT F_A_CODRIS + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_DA_CODATT 16 +BEGIN + PROMPT 2 3 "Da codice " + USE ATR + INPUT CODTAB F_DA_CODATT + DISPLAY "Codice@16" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_DA_CODATT CODTAB + OUTPUT F_DA_DESATT S0 + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_DA_DESATT 50 43 +BEGIN + PROMPT 32 3 "" + USE ATR KEY 2 + INPUT S0 F_DA_DESATT + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@16" CODTAB + COPY OUTPUT F_DA_CODATT + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_A_CODATT 16 +BEGIN + PROMPT 2 4 "A codice " + USE ATR + INPUT CODTAB F_A_CODATT + DISPLAY "Codice@16" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_A_CODATT CODTAB + OUTPUT F_A_DESATT S0 + CHECKTYPE NORMAL + GROUP 2 +END + +STRING F_A_DESATT 50 43 +BEGIN + PROMPT 32 4 "" + USE ATR KEY 2 + INPUT S0 F_A_DESATT + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@16" CODTAB + COPY OUTPUT F_A_CODATT + CHECKTYPE NORMAL + GROUP 2 +END + +GROUPBOX -1 78 3 +BEGIN + PROMPT 1 6 "@bFiltri su anno / mese" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 2 7 "Anno " + CHECKTYPE REQUIRED + FLAGS "A" +END + +LISTBOX F_MESE 10 +BEGIN + PROMPT 24 7 "Mese " + FLAGS "M" +END + +ENDPAGE + +ENDMASK \ No newline at end of file