From c247c55a4a062e9c320ec03e68d1018c7736c7ce Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 23 Jun 2005 15:38:04 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:2.2=20?= =?UTF-8?q?140=20Files=20correlati=20=20=20=20=20:=20Ricompilazione=20Demo?= =?UTF-8?q?=20:=20[=20]=20Commento=20=20=20=20=20=20=20=20=20=20=20=20:sta?= =?UTF-8?q?mpa=20mastrini=20in=20corso=20d'opera...adesso=20stampa=20qualc?= =?UTF-8?q?osa=20di=20pi=C3=B9=20o=20meno=20sensato!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@13216 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca3100.h | 10 -- ca/ca3200.cpp | 231 +++++++++++++++++++++++++++++++-- ca/ca3200.h | 48 +++++++ ca/{ca3200a.uml => ca3200.uml} | 33 ++--- ca/ca3200a.h | 48 ------- ca/ca3200a.rep | 210 ++++++++++++++++++++++++++++++ 6 files changed, 494 insertions(+), 86 deletions(-) create mode 100755 ca/ca3200.h rename ca/{ca3200a.uml => ca3200.uml} (90%) delete mode 100755 ca/ca3200a.h create mode 100755 ca/ca3200a.rep diff --git a/ca/ca3100.h b/ca/ca3100.h index 15a449bf3..21991b612 100755 --- a/ca/ca3100.h +++ b/ca/ca3100.h @@ -17,16 +17,6 @@ #define F_REPORT 213 #define F_TIPOMOV 214 -//campi generati dal pdc -#define F_CDC1_INI 306 -#define F_CDC12_INI 321 -#define F_CDC1_FIN 326 -#define F_CDC12_FIN 341 -#define F_DES1_INI 346 -#define F_DES12_INI 361 -#define F_DES1_FIN 366 -#define F_DES12_FIN 381 - //sheet di pagina 2 #define F_RIGHE 400 diff --git a/ca/ca3200.cpp b/ca/ca3200.cpp index 08a8e1387..619983e88 100755 --- a/ca/ca3200.cpp +++ b/ca/ca3200.cpp @@ -2,10 +2,11 @@ #include #include +#include "movana.h" #include "rmovana.h" #include "ca3.h" -#include "ca3200a.h" +#include "ca3200.h" #include "calib01.h" #include "calib02.h" @@ -15,7 +16,9 @@ class TPrint_mastrini_ca_mask : public TAutomask { protected: - bool on_field_event(TOperable_field& o, TField_event e, long jolly) {return true;} + bool on_field_event(TOperable_field& o, TField_event e, long jolly); + const TString& get_compatible_library() const; + bool test_compatible_report(); void create_page2(); int create_page2_sheet(int lf, int& y, short& dlg, bool required); public: @@ -23,6 +26,72 @@ public: virtual ~TPrint_mastrini_ca_mask() {} }; +const TString& TPrint_mastrini_ca_mask::get_compatible_library() const +{ + TString& lib = get_tmp_string(); + lib = "ca3200"; + const int stp = get_int(F_TIPOCONTI); + lib << (stp == 1 ? 'a' : 'b'); // tipo di report da usare + return lib; +} + +bool TPrint_mastrini_ca_mask::test_compatible_report() +{ + TFilename lib = get_compatible_library(); + const TString& name = get(F_REPORT); + bool ok = name.not_empty(); + if (ok) + { + TReport rep; + ok = rep.load(name); + if (ok) + { + TToken_string& libraries = rep.get_libraries(); + ok = libraries.get_pos(lib) >= 0; + } + } + if (!ok) + { + set(F_REPORT, lib); + lib.ext("rep"); + ok = lib.custom_path(); + } + return ok; +} + +bool TPrint_mastrini_ca_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_TIPOCONTI: + if (e == fe_init || e == fe_modify) + { + test_compatible_report(); //in base al tipo di conti da stampare setta i report compatibili + } + break; + case F_REPORT: + if (e == fe_button) + { + const TString8 lib = get_compatible_library(); + TFilename path = o.get(); + if (select_custom_file(path, "rep", lib)) + { + path = path.name(); + path.ext(""); + o.set(path); + } + } else + if (e == fe_close) + { + if (!test_compatible_report()) + return error_box(TR("Impossibile trovare un report compatibile")); + } + break; + default: break; + } + return true; +} + int TPrint_mastrini_ca_mask::create_page2_sheet(int lf, int& y, short& dlg, bool required) { TSheet_field& sf = sfield(F_RIGHE); @@ -129,7 +198,7 @@ void TPrint_mastrini_ca_mask::create_page2() TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask() - :TAutomask("ca3200a") + :TAutomask("ca3200") { TConfig_anal cfg; const bool use_pdcc = cfg.get_bool("UsePdcc"); @@ -152,16 +221,157 @@ TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask() } +/////////////////////////////////////////////////////////// +// RECORDSET +/////////////////////////////////////////////////////////// + +class TPrint_mastrini_ca_recordset : public TISAM_recordset +{ + int _anno; + int _tipoconti; + TDate _dadata, _adata; + long _danumreg, _anumreg; + TString _daconto, _aconto, _codcosto, _codcms, _codfas; + +protected: + static bool mov_filter(const TRelation* rel); + bool valid_record(const TRelation& rel) const; + + virtual void set_custom_filter(TCursor& cur) const; + +public: + void set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row); + TPrint_mastrini_ca_recordset(const TString& sql) : TISAM_recordset(sql) { } +}; + +static const TPrint_mastrini_ca_recordset* myself = NULL; + +//metodo per riconoscere se il record corrente soddisfa i filtri della maschera...strafighissimo! +bool TPrint_mastrini_ca_recordset::valid_record(const TRelation& rel) const +{ + //prima controlla la testata... + const TRectype& mov = rel.curr(LF_MOVANA); + + const TDate data = mov.get(MOVANA_DATACOMP); + if (data < _dadata || (_adata.ok() && data > _adata)) + return false; + +/* if (_tipoconti > ' ') + { + const int tipoconti = mov.get_int(); + if (tipoconti != _tipoconti) + return false; + }*/ + + //..poi le righe (devono comparire solo le righe con cdc/cms/fsc che appaiono nello sheet) + const TRectype& rmov = rel.curr(LF_RMOVANA); + + if (_codcosto.not_empty()) + { + const TString& cos = rmov.get(RMOVANA_CODCCOSTO); + if (cos != _codcosto) + return false; + } + if (_codcms.not_empty()) + { + const TString& cms = rmov.get(RMOVANA_CODCMS); + if (cms != _codcms) + return false; + } + if (_codfas.not_empty()) + { + const TString& fas = rmov.get(RMOVANA_CODFASE); + if (fas != _codfas) + return false; + } + + return true; +} + +bool TPrint_mastrini_ca_recordset::mov_filter(const TRelation* rel) +{ + return myself->valid_record(*rel); +} + +void TPrint_mastrini_ca_recordset::set_custom_filter(TCursor& cur) const +{ + //filtro sui conti selezionati sulla maschera + TRectype darec(cur.curr()), arec(cur.curr()); //record corrente (rmovana (solo movimentati) o pconana(altri casi)) + darec.put("CODCONTO", _daconto); + arec.put("CODCONTO", _aconto); + cur.setregion(darec, arec); + + myself = this; + cur.set_filterfunction(mov_filter, true); +} + +//metodo per caricare i valori nel recordset dalla maschera...fighissimo!! +void TPrint_mastrini_ca_recordset::set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row) +{ + _daconto, _aconto, _codcosto = _codcms = _codfas = ""; + if (cms_row >= 0) + { + TSheet_field& sf = msk.sfield(F_RIGHE); + TMask& sm = sf.sheet_mask(); + sf.update_mask(cms_row); + TRelation rel(LF_RMOVANA); + sm.autosave(rel); + _codcosto = rel.curr().get(RMOVANA_CODCCOSTO); + _codcms = rel.curr().get(RMOVANA_CODCMS); + _codfas = rel.curr().get(RMOVANA_CODFASE); + } + + for (int i = 0; msk.id2pos(F_CDC1_INI+i) > 0; i++) + { + _daconto << msk.get(F_CDC1_INI+i); + _aconto << msk.get(F_CDC1_FIN+i); + } + + _dadata = msk.get_date(F_DATAINI); + _adata = msk.get_date(F_DATAFIN); + + _tipoconti = msk.get(F_TIPOCONTI)[0]; + +} + + //////////////////////////////////////////////////////// // REPORT //////////////////////////////////////////////////////// class TPrint_mastrini_ca_rep : public TAnal_report { -/*protected: - virtual bool get_usr_val(const TString& name, TVariant& var) const; - void calcola_saldo_iniziale();*/ +int _anno; + +protected: + virtual bool set_recordset(const TString& sql); + virtual bool get_usr_val(const TString& name, TVariant& var) const; + +public: + void set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row); }; +bool TPrint_mastrini_ca_rep::get_usr_val(const TString& name, TVariant& var) const +{ + if (name == "#ESERCIZIO") + { + var.set(_anno); + return true; + } + return TAnal_report::get_usr_val(name, var); +} + +bool TPrint_mastrini_ca_rep::set_recordset(const TString& sql) +{ + TPrint_mastrini_ca_recordset* rs = new TPrint_mastrini_ca_recordset(sql); + return TReport::set_recordset(rs); +} + +void TPrint_mastrini_ca_rep::set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row) +{ + _anno = msk.get_int(F_ANNO); + TPrint_mastrini_ca_recordset* rs = (TPrint_mastrini_ca_recordset*)recordset(); + rs->set_filter(msk, cms_row); +} //////////////////////////////////////////////////////// // APPLICAZIONE @@ -211,13 +421,8 @@ void TPrint_mastrini_ca::main_loop() FOR_EACH_SHEET_ROW(sheet, r, row) { - TString query; - query << "USE RMOVANA\nJOIN PCONANA INTO CODCONTO==CODCONTO"; - rep.set_recordset(query); - - rep.mask2report(*_mask); - book.add(rep); - + rep.set_filter(*_mask, r); + book.add(rep); } book.print_or_preview(); //stampa il book dei report diff --git a/ca/ca3200.h b/ca/ca3200.h new file mode 100755 index 000000000..89c757c05 --- /dev/null +++ b/ca/ca3200.h @@ -0,0 +1,48 @@ +#ifndef __CA3200_H +#define __CA3200_H + +//pag. stampa mastrini +#define F_CODDITTA 201 +#define F_RAGSOC 202 +#define F_DATASTAMPA 203 +#define F_ANNO 204 +#define F_REPORT 205 + +//campi generati dal pdc +#define F_CDC1_INI 206 +#define F_CDC4_INI 209 +#define F_CDC1_FIN 216 +#define F_CDC4_FIN 219 +#define F_DES1_INI 226 +#define F_DES4_INI 229 +#define F_DES1_FIN 236 +#define F_DES4_FIN 239 + +//campi sulla maschera +#define F_DATAINI 290 +#define F_DATAFIN 291 +#define F_STAMPA_PROG_ATT 292 +#define F_STAMPA_SALDI_PROG 293 +#define F_STAMPA_SALDI_SCAL 294 +#define F_TIPOCONTI 295 + +#define F_MEMORIZZA 296 + +//sheet di pagina 2 +#define F_RIGHE 300 + +#define S_CDC1 101 +#define S_CDC2 102 +#define S_CDC3 103 +#define S_CDC4 104 +#define S_CDC5 105 +#define S_CDC6 106 +#define S_CDC7 107 +#define S_CDC8 108 +#define S_CDC9 109 +#define S_CDC10 110 +#define S_CDC11 111 +#define S_CDC12 112 + +#endif // __CA3200_H + diff --git a/ca/ca3200a.uml b/ca/ca3200.uml similarity index 90% rename from ca/ca3200a.uml rename to ca/ca3200.uml index 7806bc25d..1bf9a4b9f 100755 --- a/ca/ca3200a.uml +++ b/ca/ca3200.uml @@ -1,21 +1,22 @@ -#include "ca3200a.h" +#include "ca3200.h" -TOOLBAR "" 0 -2 0 2 +TOOLBAR "" 0 -3 0 3 -BUTTON DLG_PRINT 18 2 +STRING DLG_PROFILE 50 BEGIN - PROMPT -13 -11 "~Stampa" + PROMPT 9 0 "Profilo " + PSELECT +END + +BUTTON DLG_PRINT 10 2 +BEGIN + PROMPT -15 -11 "~Stampa" MESSAGE EXIT,K_ENTER END -BUTTON F_MEMORIZZA 18 2 +BUTTON DLG_QUIT 10 2 BEGIN - PROMPT -23 -11 "~Memorizza scelte" -END - -BUTTON DLG_QUIT 18 2 -BEGIN - PROMPT -33 -11 "" + PROMPT -55 -11 "" END ENDPAGE @@ -104,7 +105,7 @@ BEGIN PROMPT 26 17 "" END -DATE F_DATAFINE +DATE F_DATAFIN BEGIN PROMPT 62 17 "" END @@ -124,10 +125,10 @@ BEGIN PROMPT 55 18 "Stampa saldo scalare" END -LIST F_SELEZ_STAMPA 34 +LIST F_TIPOCONTI 24 BEGIN - PROMPT 2 19 "Selezione mastrini " - ITEM "1|Movimentati nel periodo" + PROMPT 2 19 "Selezione conti " + ITEM "1|Movimentati nel periodo" ITEM "2|Con saldo diverso da 0" ITEM "3|Tutti" END @@ -135,6 +136,8 @@ END STRING F_REPORT 256 64 BEGIN PROMPT 2 21 "Report " + FLAGS "B" + CHECKTYPE REQUIRED END ENDPAGE diff --git a/ca/ca3200a.h b/ca/ca3200a.h deleted file mode 100755 index 2671b9e1e..000000000 --- a/ca/ca3200a.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef __CA3200A_H -#define __CA3200A_H - -//pag. stampa mastrini -#define F_CODDITTA 301 -#define F_RAGSOC 302 -#define F_DATASTAMPA 303 -#define F_ANNO 304 -#define F_REPORT 305 - -//campi generati dal pdc -#define F_CDC1_INI 306 -#define F_CDC12_INI 321 -#define F_CDC1_FIN 326 -#define F_CDC12_FIN 341 -#define F_DES1_INI 346 -#define F_DES12_INI 361 -#define F_DES1_FIN 366 -#define F_DES12_FIN 381 - -//campi sulla maschera -#define F_DATAINI 390 -#define F_DATAFINE 391 -#define F_STAMPA_PROG_ATT 392 -#define F_STAMPA_SALDI_PROG 393 -#define F_STAMPA_SALDI_SCAL 394 -#define F_SELEZ_STAMPA 395 - -#define F_MEMORIZZA 396 - -//sheet di pagina 2 -#define F_RIGHE 400 - -#define S_CDC1 101 -#define S_CDC2 102 -#define S_CDC3 103 -#define S_CDC4 104 -#define S_CDC5 105 -#define S_CDC6 106 -#define S_CDC7 107 -#define S_CDC8 108 -#define S_CDC9 109 -#define S_CDC10 110 -#define S_CDC11 111 -#define S_CDC12 112 - -#endif // __CA3200A_H - diff --git a/ca/ca3200a.rep b/ca/ca3200a.rep new file mode 100755 index 000000000..ed5c97670 --- /dev/null +++ b/ca/ca3200a.rep @@ -0,0 +1,210 @@ + + + Mastrini CA movimentati + +
+ + + + #SYSTEM.RAGSOC + + + #SYSTEM.DATE + + + #REPORT.PAGE + + + + CODCCOSTO + CA_FORMAT_COSTO + + + MESSAGE ISAMREAD,CDC,CODCOSTO=RMOVANA.CODCCOSTO,DESCRIZ + + + + CODCMS + CA_FORMAT_COMMESSA + + + MESSAGE ISAMREAD,COMMESSE,CODCMS=RMOVANA.CODCMS,DESCRIZ + + + + CODFASE + CA_FORMAT_FASE + + + MESSAGE ISAMREAD,FASI,CODFASE=RMOVANA.CODFASE,DESCRIZ + + +
+
+ MESSAGE RESET,F1.101 +MESSAGE RESET,F1.102 + + + +
+
+ CODCONTO + + + + + + + CODCONTO + CA_FORMAT_CONTO + + + + MESSAGE ISAMREAD,PCONANA,CODCONTO=CODCONTO,DESCR + + + + + + + + + + + + + +
+
+
+ + MOVANA.DATACOMP + + + NUMREG + + + + NUMRIG + + + DESCR + + + MOVANA.DATADOC + + + MOVANA.NUMDOC + + + MOVANA.CODCAUS + + + MESSAGE ISAMREAD,CAUS,CODCAUS=MOVANA.CODCAUS,DESCR + + + IMPORTO + "RMOVANA.SEZIONE" @ +"A" = +IF +0 #THIS ! +THEN + + MESSAGE ADD,F1.101 +MESSAGE ADD,F2.131 + + + IMPORTO + "RMOVANA.SEZIONE" @ +"D" = +IF +0 #THIS ! +THEN + + MESSAGE ADD,F1.102 +MESSAGE ADD,F2.132 + + + "RMOVANA.SEZIONE" @ +"D" = +IF +0 #THIS ! +THEN + + MESSAGE ADD,F1.102 +MESSAGE ADD,F2.132 + + + "RMOVANA.SEZIONE" @ +"D" = +IF +0 #THIS ! +THEN + + MESSAGE ADD,F1.102 +MESSAGE ADD,F2.132 + + + "RMOVANA.SEZIONE" @ +"D" = +IF +0 #THIS ! +THEN + + MESSAGE ADD,F1.102 +MESSAGE ADD,F2.132 + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+ USE RMOVANA +BY CODCONTO NUMREG NUMRIG +JOIN MOVANA INTO NUMREG==NUMREG + : SCAMBIA_CAMPI ( F1 F2 -- ) + VARIABLE _X1 \ coordinate del campo F1 + VARIABLE _Y1 + VARIABLE _X2 \ coordinate del campo F2 + VARIABLE _Y2 + + 2DUP \ duplica i campi F1 F2 sullo stack + GET_POS \ prende le coordinate del campo F2 + _Y2 ! \ e le mette in _Y2 e _X2 + _X2 ! + GET_POS \ prende le coordinate del campo F1 + _Y1 ! \ e le mette in _Y1 e _X1 + _X1 ! + + _X1 @ \ legge le coordinate di F1 + _Y1 @ + ROT + SET_POS \ mette le coord in F2 + + _X2 @ + _Y2 @ + ROT + SET_POS +; + + + \ No newline at end of file