diff --git a/ca/ca1100.cpp b/ca/ca1100.cpp index b4a873934..844df592e 100755 --- a/ca/ca1100.cpp +++ b/ca/ca1100.cpp @@ -3,14 +3,66 @@ #include #include "ca1.h" +#include "calib01.h" #include "calib02.h" +/////////////////////////////////////////////////////////// +// TEthero_rep +/////////////////////////////////////////////////////////// + class TEthero_rep : public TAnal_report { protected: virtual bool use_mask() { return true; } + virtual bool get_usr_val(const TString& name, TVariant& var) const; }; +bool TEthero_rep::get_usr_val(const TString& name, TVariant& var) const +{ + // Ricava informazioni sulla struttura dei livelli di analitica + // es. CA_LEVEL_CDC_LEN_1 ricava la lunghezza del primo livello dei centri di costo + if (name.starts_with("#CA_INFO_")) + { + TToken_string tok(name, '_'); + + TString8 filename; tok.get(2, filename); + const int logicnum = table2logic(filename); + + TString16 info; tok.get(3, info); + + int level = 1; tok.get(4, level); + if (level > 0) level--; + + const TMultilevel_code_info& code = ca_multilevel_code_info(logicnum); + + if (info.starts_with("TOTAL")) + { + var.set(code.total_len(level)); + return true; + } else + if (info.starts_with("LEN")) + { + var.set(code.len(level)); + return true; + } + } else + if (name.starts_with("CODCCOSTO_1")) // shortcut for CODCCOSTO[1,#CA_LEVEL_CDC_LEN_1] + { + if (get_record_field("CODCCOSTO", var)) + { + const TMultilevel_code_info& code = ca_multilevel_code_info(LF_CDC); + const TString& cdc = var.as_string().left(code.len(0)); + var.set(cdc); + return true; + } + } + return TAnal_report::get_usr_val(name, var); +} + +/////////////////////////////////////////////////////////// +// TPrint_ca +/////////////////////////////////////////////////////////// + class TPrint_ca : public TSkeleton_application { protected: @@ -24,7 +76,7 @@ void TPrint_ca::print_rep(const TFilename& n) const { TEthero_rep rep; if (rep.load(n)) - rep.print_or_preview(); + while(rep.print_or_preview()); } void TPrint_ca::main_loop() diff --git a/ca/ca1100a.rep b/ca/ca1100a.rep index a825edc83..e544db458 100644 --- a/ca/ca1100a.rep +++ b/ca/ca1100a.rep @@ -5,12 +5,11 @@
- "BILANCIO " + YEAR(#DATAFIN) + " - SITUAZIONE AL " + #DATASTA
- CODCCOSTO + CODCCOSTO_1 MESSAGE RESET,F2 @@ -34,16 +33,35 @@ - - CODCCOSTO + + CODCCOSTO_1 - + MESSAGE ISAMREAD,CDC,CODCOSTO=CODCCOSTO,DESCRIZ
- CODCONTO + CODCCOSTO MESSAGE RESET,F3 + + + + + + + + + + CODCCOSTO + + + + MESSAGE ISAMREAD,CDC,CODCOSTO=CODCCOSTO,DESCRIZ + +
+
+ CODCONTO + MESSAGE RESET,F4 @@ -62,8 +80,8 @@ ELSE #THIS ! \ al campo corrente THEN #THIS @ \ Prende il valore attuale con segno - "F3." #THIS GET_ID + \ Costruisce la stringa F3.101 - +! \ Somma il campo corrente al corrispondente in F3 + "F4." #THIS GET_ID + \ Costruisce la stringa F4.101 + +! \ Somma il campo corrente al corrispondente in F4 THEN @@ -82,8 +100,8 @@ ELSE #THIS ! \ al campo corrente THEN #THIS @ \ Prende il valore attuale con segno - "F3." #THIS GET_ID + \ Costruisce la stringa F3.101 - +! \ Somma il campo corrente al corrispondente in F3 + "F4." #THIS GET_ID + \ Costruisce la stringa F4.101 + +! \ Somma il campo corrente al corrispondente in F4 THEN @@ -102,8 +120,8 @@ ELSE #THIS ! \ al campo corrente THEN #THIS @ \ Prende il valore attuale con segno - "F3." #THIS GET_ID + \ Costruisce la stringa F3.101 - +! \ Somma il campo corrente al corrispondente in F3 + "F4." #THIS GET_ID + \ Costruisce la stringa F4.101 + +! \ Somma il campo corrente al corrispondente in F4 THEN @@ -122,8 +140,8 @@ ELSE #THIS ! \ al campo corrente THEN #THIS @ \ Prende il valore attuale con segno - "F3." #THIS GET_ID + \ Costruisce la stringa F3.101 - +! \ Somma il campo corrente al corrispondente in F3 + "F4." #THIS GET_ID + \ Costruisce la stringa F4.101 + +! \ Somma il campo corrente al corrispondente in F4 THEN @@ -268,7 +286,7 @@ THEN - + #H2.101 @@ -416,6 +434,7 @@ THEN
+ @@ -428,11 +447,10 @@ THEN #H3.101 - #H3.101 - CA_FORMAT_CONTO_DESCR + #H3.102 - #THIS @ 0 C; IF + #THIS @ 0 C; IF #THIS @ -1 * #THIS ! @@ -448,7 +466,7 @@ ELSE THEN #THIS GET_ID_NEXT ! - #THIS @ \ Legge il valore del campo corrente + #THIS @ \ Legge il valore del campo corrente #THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo "A" = IF \ Se vale Avere -1 * \ Cambia segno @@ -458,7 +476,7 @@ THEN - #THIS @ 0 C; IF + #THIS @ 0 C; IF #THIS @ -1 * #THIS ! @@ -474,7 +492,7 @@ ELSE THEN #THIS GET_ID_NEXT ! - #THIS @ \ Legge il valore del campo corrente + #THIS @ \ Legge il valore del campo corrente #THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo "A" = IF \ Se vale Avere -1 * \ Cambia segno @@ -485,12 +503,12 @@ THEN - 201 @ + 201 @ 203 @ - . - 201 @ + 201 @ 0 = IF 0 ELSE @@ -503,7 +521,7 @@ THEN - #THIS @ 0 C; IF + #THIS @ 0 C; IF #THIS @ -1 * #THIS ! @@ -519,7 +537,7 @@ ELSE THEN #THIS GET_ID_NEXT ! - #THIS @ \ Legge il valore del campo corrente + #THIS @ \ Legge il valore del campo corrente #THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo "A" = IF \ Se vale Avere -1 * \ Cambia segno @@ -530,7 +548,7 @@ THEN - #THIS @ 0 C; IF + #THIS @ 0 C; IF #THIS @ -1 * #THIS ! @@ -546,7 +564,7 @@ ELSE THEN #THIS GET_ID_NEXT ! - #THIS @ \ Legge il valore del campo corrente + #THIS @ \ Legge il valore del campo corrente #THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo "A" = IF \ Se vale Avere -1 * \ Cambia segno @@ -557,12 +575,172 @@ THEN - 301 @ + 301 @ 303 @ - . - 301 @ + 301 @ +0 = IF + 0 +ELSE + 305 @ + 301 @ + F; 100 * + 0 ROUND +THEN +. + + +
+
+ + + + + + + + + + #H4.101 + + + #H4.101 + CA_FORMAT_CONTO_DESCR + + + #THIS @ 0 C; IF + #THIS @ + -1 * + #THIS ! + #THIS GET_ID_NEXT + "A" +ELSE + #THIS @ + 0 = IF + "" + ELSE + "D" + THEN +THEN + #THIS GET_ID_NEXT ! + + #THIS @ \ Legge il valore del campo corrente +#THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo +"A" = IF \ Se vale Avere + -1 * \ Cambia segno +THEN +"F3." #THIS GET_ID + \ Costruisce la stringa F3.201 ++! \ Somma il valore corrente al corrispondente in F3 + + + + #THIS @ 0 C; IF + #THIS @ + -1 * + #THIS ! + #THIS GET_ID_NEXT + "A" +ELSE + #THIS @ + 0 = IF + "" + ELSE + "D" + THEN +THEN + #THIS GET_ID_NEXT ! + + #THIS @ \ Legge il valore del campo corrente +#THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo +"A" = IF \ Se vale Avere + -1 * \ Cambia segno +THEN +"F3." #THIS GET_ID + \ Costruisce la stringa F3.203 ++! \ Somma il valore corrente al corrispondente in F3 + + + + + 201 @ +203 @ +- . + + + 201 @ +0 = IF + 0 +ELSE + 205 @ + 201 @ + F; 100 * + 0 ROUND +THEN +. + + + + #THIS @ 0 C; IF + #THIS @ + -1 * + #THIS ! + #THIS GET_ID_NEXT + "A" +ELSE + #THIS @ + 0 = IF + "" + ELSE + "D" + THEN +THEN + #THIS GET_ID_NEXT ! + + #THIS @ \ Legge il valore del campo corrente +#THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo +"A" = IF \ Se vale Avere + -1 * \ Cambia segno +THEN +"F3." #THIS GET_ID + \ Costruisce la stringa F3.301 ++! \ Somma il valore corrente al corrispondente in F3 + + + + + #THIS @ 0 C; IF + #THIS @ + -1 * + #THIS ! + #THIS GET_ID_NEXT + "A" +ELSE + #THIS @ + 0 = IF + "" + ELSE + "D" + THEN +THEN + #THIS GET_ID_NEXT ! + + #THIS @ \ Legge il valore del campo corrente +#THIS GET_ID_NEXT @ \ Legge la sezione dal campo successivo +"A" = IF \ Se vale Avere + -1 * \ Cambia segno +THEN +"F3." #THIS GET_ID + \ Costruisce la stringa F3.303 ++! \ Somma il valore corrente al corrispondente in F3 + + + + + 301 @ +303 @ +- . + + + 301 @ 0 = IF 0 ELSE