diff --git a/ca/ca3200.uml b/ca/ca3200.uml index 248ffa9d1..480b6523e 100755 --- a/ca/ca3200.uml +++ b/ca/ca3200.uml @@ -24,9 +24,95 @@ ENDPAGE PAGE "Selezioni" 0 0 0 2 +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 0 "@bDitta" +END + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 2 1 "Ditta " + FLAGS "FRD" + USE LF_NDITTE KEY 1 + CHECKTYPE REQUIRED + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale @50" RAGSOC + OUTPUT F_CODDITTA CODDITTA + OUTPUT F_RAGSOC RAGSOC +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 19 1 "" + FLAGS "D" +END + +DATE F_DATASTAMPA +BEGIN + PROMPT 2 3 "Data di stampa " + FLAGS "A" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 52 3 "Esercizio " + USE ESC + INPUT CODTAB F_ANNO + DISPLAY "Codice Esercizio" CODTAB + DISPLAY "Data inizio esercizio" D0 + DISPLAY "Data fine esercizio " D1 + OUTPUT F_ANNO CODTAB + CHECKTYPE NORMAL + CHECKTYPE NORMAL + FLAGS "RZ" + ADD NONE +END + +GROUPBOX DLG_NULL 78 6 +BEGIN + PROMPT 1 5 "@bOpzioni stampa" +END + +TEXT 96 +BEGIN + PROMPT 2 6 "Dalla data competenza " +END + +TEXT 97 +BEGIN + PROMPT 40 6 "Alla data competenza " +END + +DATE F_DATAINI +BEGIN + PROMPT 26 6 "" +END + +DATE F_DATAFIN +BEGIN + PROMPT 62 6 "" +END + +LIST F_TIPOCONTI 24 +BEGIN + PROMPT 2 8 "Selezione conti " + ITEM "1|Movimentati nel periodo" + ITEM "2|Con saldo diverso da 0" + ITEM "3|Tutti" +END + +LIST F_TIPIMOV 24 +BEGIN + PROMPT 2 9 "Selezione movimenti " + ITEM " |Qualsiasi" + ITEM "N|Normale" + ITEM "P|Preventivo e variazione" +END + SPREADSHEET F_RIGHE -1 -1 BEGIN - PROMPT 0 2 "" + PROMPT 0 11 "" ITEM "Cdc1" ITEM "Cdc2" ITEM "Cdc3" @@ -43,47 +129,7 @@ END ENDPAGE -PAGE "Parametri stampa" -1 -1 78 20 - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 1 1 "Ditta " - FLAGS "FRD" - USE LF_NDITTE KEY 1 - CHECKTYPE REQUIRED - INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale @50" RAGSOC - OUTPUT F_CODDITTA CODDITTA - OUTPUT F_RAGSOC RAGSOC -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 15 1 "" - FLAGS "D" -END - -DATE F_DATASTAMPA -BEGIN - PROMPT 1 2 "Data di stampa " - FLAGS "A" -END - -NUMBER F_ANNO 4 -BEGIN - PROMPT 49 2 "Esercizio " - USE ESC - INPUT CODTAB F_ANNO - DISPLAY "Codice Esercizio" CODTAB - DISPLAY "Data inizio esercizio" D0 - DISPLAY "Data fine esercizio " D1 - OUTPUT F_ANNO CODTAB - CHECKTYPE NORMAL - CHECKTYPE NORMAL - FLAGS "RZ" - ADD NONE -END +PAGE "Conti" -1 -1 78 20 GROUPBOX DLG_NULL 76 6 BEGIN @@ -95,47 +141,6 @@ BEGIN PROMPT 1 9 "@bA:" END -GROUPBOX DLG_NULL 76 7 -BEGIN - PROMPT 1 15 "@bOpzioni stampa" -END - -TEXT 96 -BEGIN - PROMPT 2 16 "Dalla data competenza " -END - -TEXT 97 -BEGIN - PROMPT 40 16 "Alla data competenza " -END - -DATE F_DATAINI -BEGIN - PROMPT 26 16 "" -END - -DATE F_DATAFIN -BEGIN - PROMPT 62 16 "" -END - -LIST F_TIPOCONTI 24 -BEGIN - PROMPT 2 18 "Selezione conti " - ITEM "1|Movimentati nel periodo" - ITEM "2|Con saldo diverso da 0" - ITEM "3|Tutti" -END - -LIST F_TIPIMOV 24 -BEGIN - PROMPT 2 19 "Selezione movimenti " - ITEM " |Qualsiasi" - ITEM "N|Normale" - ITEM "P|Preventivo e variazione" -END - ENDPAGE ENDMASK diff --git a/ca/ca3300.cpp b/ca/ca3300.cpp index f74412a6e..e667057f9 100755 --- a/ca/ca3300.cpp +++ b/ca/ca3300.cpp @@ -18,7 +18,7 @@ // MASCHERA //////////////////////////////////////////////////////// -class TPrint_bilancio_ca_mask : public TAutomask +class TPrint_bilancio_ca_mask : public TAnal_report_mask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); @@ -26,8 +26,6 @@ protected: bool test_compatible_report(); bool esistono_riclassificazioni() const; - void create_sheet(); - int create_sheet_fields(int lf, int& y, short& dlg, bool required); public: TPrint_bilancio_ca_mask(); virtual ~TPrint_bilancio_ca_mask() {} @@ -101,6 +99,7 @@ bool TPrint_bilancio_ca_mask::on_field_event(TOperable_field& o, TField_event e, case F_ANNO: case F_BILANCIO: case F_STAMPA: + case F_TIPOSTAMPA: if (e == fe_modify || (e == fe_init && o.dlg() == F_ANNO)) { test_compatible_report(); @@ -186,146 +185,40 @@ bool TPrint_bilancio_ca_mask::on_field_event(TOperable_field& o, TField_event e, default: break; } - return true; -} - -int TPrint_bilancio_ca_mask::create_sheet_fields(int lf, int& y, short& dlg, bool required) -{ - TSheet_field& sf = sfield(F_RIGHE); - TMask& sm = sf.sheet_mask(); - - const int h = ca_create_fields(sm, 0, lf, 1, y, dlg, dlg+50); - - for (int i = 0; i < h; i++) - { - TEdit_field& fld = sm.efield(dlg+i); - int logic = lf; - if (logic == LF_FASI) - { - const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); - if (fasinfo.parent() != 0) - { - const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent()); - if (i < parinfo.levels()) - logic = fasinfo.parent(); - } - } - - const char* fieldname = NULL; - switch(logic) - { - case LF_CDC : fieldname = RMOVANA_CODCCOSTO; break; - case LF_COMMESSE: fieldname = RMOVANA_CODCMS; break; - case LF_FASI : fieldname = RMOVANA_CODFASE; break; - default : fieldname = RMOVANA_CODCONTO; break; - } - TFieldref* f = (TFieldref*)fld.field(); - f->set_name(fieldname); - - fld.check_type(required ? CHECK_REQUIRED : CHECK_NORMAL); - - TEdit_field& dfld = sm.efield(dlg+50+i); - dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output! - } - - y += h+1; - dlg += h; - - return h; -} - -void TPrint_bilancio_ca_mask::create_sheet() -{ - TSheet_field& sf = sfield(F_RIGHE); - TMask& sm = sf.sheet_mask(); - sm.hide(-1); - - const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); - - TConfig& ini = ca_config(); - const bool fsc_req = ini.get_bool("FscRequired"); - - int y = 1; - short dlg = S_CDC1 + 100; // id del primo campo da generare - - for (int i = 0; i < 2; i++) - { - const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2 - if (level == "CDC") // Crea centro di costo - { - if (fasinfo.parent() == LF_CDC) - create_sheet_fields(LF_FASI, y, dlg, fsc_req); - else - { - const bool cdc_req = ini.get_bool("CdcRequired"); - create_sheet_fields(LF_CDC, y, dlg, cdc_req); - } - } else - if (level == "CMS") // Crea commessa - { - if (fasinfo.parent() == LF_COMMESSE) - create_sheet_fields(LF_FASI, y, dlg, fsc_req); - else - { - const bool cms_req = ini.get_bool("CmsRequired"); - create_sheet_fields(LF_COMMESSE, y, dlg, cms_req); - } - } - } - - if (fasinfo.levels() > 0 && fasinfo.parent() <= 0) - create_sheet_fields(LF_FASI, y, dlg, fsc_req); - - for (short id = S_CDC12+100; id >= S_CDC1+100; id--) - { - const int pos = sm.id2pos(id); - if (pos >= 0) - { - TMask_field& f = sm.fld(pos); - const int size = f.size(); - const TString& prompt = f.prompt(); - sf.set_column_header(id, prompt); - sf.set_column_justify(id, f.is_kind_of(CLASS_REAL_FIELD)); - sf.set_column_width(id, (max(3+size, prompt.len()+1)) * CHARX); - } - else - sf.delete_column(id); - } + return TAnal_report_mask::on_field_event(o, e, jolly); } TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask() - :TAutomask("ca3300") + :TAnal_report_mask("ca3300") { TConfig& cfg = ca_config(); - const bool use_pdcc = cfg.get_bool("UsePdcc"); const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA); const int pconana_levels = pconana_info.levels(); - int pconana_prefix = cfg.get_int("PdcPrefix"); - if (pconana_prefix >= pconana_levels) - pconana_prefix = pconana_levels-1; + int prefix = cfg.get_int("PdcPrefix"); + if (prefix >= pconana_levels) + prefix = pconana_levels-1; disable(F_PIANO); set(F_PIANO, use_pdcc ? "C" : "A"); // Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile - const int pref = cfg.get_int("PdcPrefix"); - if (use_pdcc && pref > 0) + if (use_pdcc && prefix > 0) { const TMultilevel_code_info& info = ca_multilevel_code_info(LF_PCONANA); const int levels = info.levels(); - if (levels >= 2 && pref < levels && esistono_riclassificazioni()) + if (levels >= 2 && prefix < levels && esistono_riclassificazioni()) { enable(F_PIANO); - ca_create_fields(*this, 1, LF_PCONANA, 2, 2, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO); + ca_create_fields(*this, 1, LF_PCONANA, 2, 4, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO); // Nascondi i campi che non fanno parte del prefisso for (int i = 0; i < levels; i++) { - if (i < pref) + if (i < prefix) { field(F_PRE1 + i).check_type(CHECK_REQUIRED); field(F_PRE1 + i).set_group(6); @@ -348,8 +241,8 @@ TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask() const short a_dlg = g == 5 ? F_PDC1_FIN : F_PAN1_FIN; const short a_des = g == 5 ? F_PDCDES1_FIN : F_PANDES1_FIN; - const int nfields = ca_create_fields(*this, 1, logicnum, 2, 8, da_dlg, da_des, 0x0, PCONANA_CODCONTO); - ca_create_fields(*this, 1, logicnum, 2, 14, a_dlg, a_des, 0x0, PCONANA_CODCONTO); + const int nfields = ca_create_fields(*this, 1, logicnum, 2, 10, da_dlg, da_des, 0x0, PCONANA_CODCONTO); + ca_create_fields(*this, 1, logicnum, 2, 16, a_dlg, a_des, 0x0, PCONANA_CODCONTO); for (int i = 0; i < nfields; i++) { @@ -374,7 +267,7 @@ TPrint_bilancio_ca_mask::TPrint_bilancio_ca_mask() } // creazione dei campi della seconda pagina della maschera - create_sheet(); + create_sheet(F_RIGHE); set_handlers(); // Setta l'andler universale a tutti i nuovi campi } @@ -533,6 +426,7 @@ protected: void add_conto(int indbil, const TString& b); void calcola_totali(); void get_section(const TImporto& imp, TVariant& var) const; + char get_tipo_livello(const TSaldo_contrapposto& sc, int& livello, int& livelli) const; public: virtual TRecnotype items() const; @@ -796,12 +690,36 @@ void TRecordset_sezioni_contrapposte::get_section(const TImporto& imp, TVariant& } } + +char TRecordset_sezioni_contrapposte::get_tipo_livello(const TSaldo_contrapposto& sc, int& livello, int& livelli) const +{ + const int len = sc._conto.len(); + const char tipo = tipo_piano(); + if (tipo == 'C') + { + livello = len <= 3 ? 1 : (len <= 6 ? 2 : 3); + livelli = 3; + } + else + { + const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA); + livelli = pconana_info.levels(); + for (livello = livelli; livello > 1; livello--) + { + if (len >= pconana_info.total_len(livello-1)) + break; + } + } + return tipo; +} + + const TVariant& TRecordset_sezioni_contrapposte::get_fld(const TArray& a, int r, const char* field) const { + const TFixed_string fld(field); TVariant& var = get_tmp_var(); if (r >= 0 && r < a.items()) { - const TFixed_string fld(field); const TSaldo_contrapposto& sc = (const TSaldo_contrapposto&)a[r]; if (fld == "CONTO") var = sc._conto; else @@ -845,17 +763,39 @@ const TVariant& TRecordset_sezioni_contrapposte::get_fld(const TArray& a, int r, } else if (fld == "LIVELLO") { - const int len = sc._conto.len(); - if (tipo_piano() == 'C') - var = len <= 3 ? 1 : (len <= 6 ? 2 : 3); - else - { - var = 1; // facile esercizio per gli studenti :-) - } + int livello, livelli; + get_tipo_livello(sc, livello, livelli); + var = livello; + } else + if (fld == "BACKCOLOR") + { + int livello, livelli; + get_tipo_livello(sc, livello, livelli); + int rgb = livello * 255 / livelli; + var = long(XVT_MAKE_COLOR(rgb, rgb, rgb) & 0xFFFFFF); + } else + if (fld == "TEXTCOLOR") + { + int livello, livelli; + get_tipo_livello(sc, livello, livelli); + //il foreground color puņ essere solo bianco o nero + int rgb = (livello * 255 / livelli) <= 128 ? 255 : 0; + var = long(XVT_MAKE_COLOR(rgb, rgb, rgb) & 0xFFFFFF); } } else - var = EMPTY_STRING; + { + if (fld == "BACKCOLOR") + { + var = long(XVT_MAKE_COLOR(255, 255, 255)); + } else + if (fld == "TEXTCOLOR") + { + var = long(XVT_MAKE_COLOR(0, 0, 0)); + } + else + var = EMPTY_STRING; + } return var; } diff --git a/ca/ca3300.uml b/ca/ca3300.uml index 197b2360d..aef9219c1 100755 --- a/ca/ca3300.uml +++ b/ca/ca3300.uml @@ -141,32 +141,33 @@ END ENDPAGE -PAGE "Selezioni" -1 -1 74 20 +PAGE "Conti" -1 -1 74 20 LIST F_PIANO 1 20 BEGIN - PROMPT 1 0 "Piano dei conti " + PROMPT 1 1 "Piano dei conti " ITEM "A|Analitico" MESSAGE HIDE,5@|SHOW,6@ ITEM "C|Contabile" MESSAGE SHOW,5@|HIDE,6@ + FLAGS "G" END GROUPBOX F_PRE0 78 6 BEGIN - PROMPT 1 1 "@bPrefisso del piano dei conti analitico:" + PROMPT 1 3 "@bPrefisso del piano dei conti analitico:" GROUP 6 END GROUPBOX F_PDC0_INI 78 6 BEGIN - PROMPT 1 7 "@bDa conto:" + PROMPT 1 9 "@bDa conto:" GROUP 4 END GROUPBOX F_PDC0_FIN 78 6 BEGIN - PROMPT 1 13 "@bA conto:" + PROMPT 1 15 "@bA conto:" GROUP 4 END diff --git a/ca/ca3300c.rep b/ca/ca3300c.rep index d2c6ba101..5df0f8a60 100755 --- a/ca/ca3300c.rep +++ b/ca/ca3300c.rep @@ -4,24 +4,24 @@
- - - - - - - - - - - + + + + + + + + + + +
- - + + - + #TIPOSTAMPA @@ -30,203 +30,171 @@
  • - + #SYSTEM.RAGSOC - + - + #SYSTEM.DATE - + MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,DESCRIZ - + #DATA_INIZIALE - + - + #DATA_FINALE - + - + #COSTO - + MESSAGE ISAMREAD,CDC,CODCOSTO=#COSTO,DESCRIZ - + - + #COMMESSA - + MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,DESCRIZ - + - + #FASE - + MESSAGE ISAMREAD,FASI,CODCMSFAS=#CMSCDC!CODFASE=#FASE,DESCRIZ - +
  • SEZIONE - + IF(SEZIONE=="AP","SITUAZIONE CONTO ECONOMICO","SITUAZIONE CONTI PATRIMONIALI") - + IF(SEZIONE=="AP","ATTIVITA'","COSTI") - + IF(SEZIONE=="AP","PASSIVITA'","RICAVI") - +
    - -
    - - - + + + #REPORT.PAGE
    diff --git a/ca/ca3300d.rep b/ca/ca3300d.rep index b12d49416..7382e963c 100755 --- a/ca/ca3300d.rep +++ b/ca/ca3300d.rep @@ -4,21 +4,21 @@
    - - - - - - - + + + + + + +
    - - + + - + #TIPOSTAMPA @@ -27,111 +27,95 @@
  • - + #SYSTEM.RAGSOC - - + + #SYSTEM.DATE - + MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,DESCRIZ - + #DATA_INIZIALE - - + + #DATA_FINALE - - + + #COSTO - + MESSAGE ISAMREAD,CDC,CODCOSTO=#COSTO,DESCRIZ - - + + #COMMESSA - + MESSAGE ISAMREAD,COMMESSE,CODCMS=#COMMESSA,DESCRIZ - - + + #FASE - + MESSAGE ISAMREAD,FASI,CODCMSFAS=#CMSCDC!CODFASE=#FASE,DESCRIZ - +
  • SEZIONE MESSAGE RESET,F2 - + IF(SEZIONE=="AP","SITUAZIONE CONTO ECONOMICO","SITUAZIONE CONTI PATRIMONIALI") -
    - -
    - - - + + + #REPORT.PAGE
    - - - -