From 7b08573aea4d6ca61a9267822a4daea611275d8a Mon Sep 17 00:00:00 2001 From: luca Date: Wed, 14 May 2008 14:39:56 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento :stampa commesse in formato adolfico; aggiunta segnalazione alla stampa bilancio di commessa per conti analitici riclassificati ma inesistenti git-svn-id: svn://10.65.10.50/trunk@16619 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca1600.cpp | 69 ++++++++++++++++++++++++++++++++- ca/ca1600a.h | 7 +++- ca/ca1600a.rep | 72 +++++++++++++++++++++++------------ ca/ca1600a.uml | 101 +++++++++++++++++++++++++++++++++++++++---------- ca/ca3883.cpp | 6 ++- 5 files changed, 207 insertions(+), 48 deletions(-) diff --git a/ca/ca1600.cpp b/ca/ca1600.cpp index bd495975b..e608cfaaa 100755 --- a/ca/ca1600.cpp +++ b/ca/ca1600.cpp @@ -6,11 +6,14 @@ #include "calib01.h" #include "calib02.h" +/////////////////////////////////// +// Maschera +/////////////////////////////////// class TMask_print_cms : public TAutomask { protected: - bool on_field_event(TOperable_field& o, TField_event e, long jolly) {return true;} + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TMask_print_cms(); virtual ~TMask_print_cms() {} @@ -32,6 +35,33 @@ TMask_print_cms::TMask_print_cms() } } +bool TMask_print_cms::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ +/* switch (o.dlg()) + { + case F_DADATA: + case F_ADATA: + if (e == fe_close) + { + const int anno = get_int(F_ANNO); + if (anno > 0) //se viene selezionato un esercizio.. + { + TEsercizi_contabili esc; //..le date devono essere incluse nell'esercizio selezionato! + const TDate data = o.get(); + if (!data.empty() && esc.date2esc(data) != anno) + return error_box(TR("La data deve appartenere all'anno selezionato")); + } + } + break; + default: + break; + }*/ + return true; +} + +/////////////////////////////////// +// Applicazione +/////////////////////////////////// class TPrint_cms : public TSkeleton_application { bool create(); @@ -63,6 +93,43 @@ void TPrint_cms::main_loop() path = "ca1600a"; rep.load(path); + + //aggiunta con controllo parametri di filtro particolari (Adolf rikiesta) + const int anno = m.get_int(F_ANNO); + const TDate dadata = m.get_date(F_DADATA); + const TDate adata = m.get_date(F_ADATA); + const TString cdc = m.get(F_CDC); + if (anno > 0 || dadata.ok() || adata.ok() || cdc.full()) + { + TString query; + if (anno > 0) + { + if (query.full()) query << "&&"; + query << "(ANNO='" << anno << "')"; + } + if (adata.ok()) + { + if (query.full()) query << "&&"; + query << "(NUM(ANSI(DATAINIZIO))<=" << adata.date2ansi() << ")"; + } + if (dadata.ok()) + { + if (query.full()) query << "&&"; + query << "(NUM(ANSI(DATAFINE))>=" << dadata.date2ansi() << ")"; + } + if (cdc.full()) + { + if (query.full()) query << "&&"; + query << "(CODCOSTO='" << cdc << "')"; + } + + //inserisce la USE e la SELECT all'inizio (tecnica per aggirare il problema degli && ignoti) + query.insert("USE COMMESSE\nSELECT "); + + //cabia la query al report + rep.set_recordset(query); + } + rep.mask2report(m); book.add(rep); book.print_or_preview(); diff --git a/ca/ca1600a.h b/ca/ca1600a.h index 880666487..013025535 100755 --- a/ca/ca1600a.h +++ b/ca/ca1600a.h @@ -1,3 +1,8 @@ #define F_DACMS 101 -#define F_ACMS 110 +#define F_ACMS 105 +#define F_ANNO 109 +#define F_DADATA 110 +#define F_ADATA 111 +#define F_CDC 112 +#define F_DESCDC 113 #define F_REPORT 120 \ No newline at end of file diff --git a/ca/ca1600a.rep b/ca/ca1600a.rep index bd3968d7e..821e8b8dc 100755 --- a/ca/ca1600a.rep +++ b/ca/ca1600a.rep @@ -1,41 +1,65 @@ - - + + Stampa commesse di analitica - -
- - "!RAGSOC" -#REPORT.FIRM + +
+ + + + + + + + + + + + +
+
+ + #SYSTEM.RAGSOC - + #SYSTEM.DATE - - #REPORT.PAGE + + - - - - - - - - - -
-
- + CODCMS MESSAGE_FORMAT_COMMESSA - + DESCRIZ + DESCRAGG + + CODCOSTO + + + DATAINIZIO + + + DATAFINE + + + DATAPROR + + + REGIVA + + + CODATT + +
+
+ + #REPORT.PAGE +
-
USE COMMESSE FROM CODCMS=#DACMS diff --git a/ca/ca1600a.uml b/ca/ca1600a.uml index c3a35d6a2..d04f99f37 100755 --- a/ca/ca1600a.uml +++ b/ca/ca1600a.uml @@ -1,33 +1,92 @@ #include "ca1600a.h" -PAGE "Stampa commesse" -1 -1 80 17 - -GROUPBOX DLG_NULL 77 6 -BEGIN - PROMPT 2 1 "Da commessa" -END - -GROUPBOX DLG_NULL 77 6 -BEGIN - PROMPT 2 7 "A commessa" -END - -STRING F_REPORT 20 -BEGIN - PROMPT 2 14 "Tipo di stampa " - RSELECT "ca1600a" - CHECKTYPE NORMAL -END +TOOLBAR "" 0 -2 0 2 BUTTON DLG_PRINT 10 2 BEGIN - PROMPT -12 -1 "" + PROMPT -12 -11 "" END BUTTON DLG_QUIT 10 2 BEGIN - PROMPT -22 -1 "" -END + PROMPT -22 -11 "" +END + +ENDPAGE + +PAGE "Stampa commesse" 0 0 0 -2 + +GROUPBOX DLG_NULL 77 6 +BEGIN + PROMPT 2 1 "@bDa commessa" +END + +GROUPBOX DLG_NULL 77 6 +BEGIN + PROMPT 2 7 "@bA commessa" +END + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 2 13 "@bParametri" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 3 14 "Anno " + USE ESC + INPUT CODTAB F_ANNO + DISPLAY "Codice Esercizio" CODTAB + DISPLAY "Data inizio esercizio" D0 + DISPLAY "Data fine esercizio " D1 + OUTPUT F_ANNO CODTAB + OUTPUT F_DADATA D0 + OUTPUT F_ADATA D1 + CHECKTYPE NORMAL + FLAGS "RZ" + MESSAGE EMPTY ENABLE,F_DADATA|ENABLE,F_ADATA + MESSAGE CLEAR,F_DADATA|CLEAR,F_ADATA + ADD NONE +END + +DATE F_DADATA +BEGIN + PROMPT 17 14 "Da data " +END + +DATE F_ADATA +BEGIN + PROMPT 40 14 "A data " +END + +STRING F_CDC 20 +BEGIN + PROMPT 3 15 "C. di costo " + USE LF_CDC + INPUT CODCOSTO F_CDC + DISPLAY "Centro di costo@20" CODCOSTO + DISPLAY "Descrizione@50" DESCRIZ + OUTPUT F_CDC CODCOSTO + OUTPUT F_DESCDC DESCRIZ +END + +STRING F_DESCDC 50 37 +BEGIN + PROMPT 38 15 "" + USE LF_CDC KEY 2 + INPUT DESCRIZ F_DESCDC + DISPLAY "Descrizione@50" DESCRIZ + DISPLAY "Centro di costo@20" CODCOSTO + COPY OUTPUT F_CDC +END + +STRING F_REPORT 20 +BEGIN + PROMPT 2 -1 "Report alternativo " + RSELECT "ca1600a" + CHECKTYPE NORMAL +END + ENDPAGE diff --git a/ca/ca3883.cpp b/ca/ca3883.cpp index be21e8453..01eb393d4 100755 --- a/ca/ca3883.cpp +++ b/ca/ca3883.cpp @@ -50,7 +50,11 @@ TObject* TIndbil_cache::key2obj(const char* key) if (found) { conto = panapdrec.get(PANAPDC_CODCONTO); - break; + if (cache().get(LF_PCONANA, conto).empty()) + error_box(FR("Non esiste piu' il conto %s cui era legato %d %d %ld"), + (const char*)conto, gr, co, so); + else + break; } } }