diff --git a/ci/ci1300.cpp b/ci/ci1300.cpp index cae151d5b..785de8f14 100755 --- a/ci/ci1300.cpp +++ b/ci/ci1300.cpp @@ -187,7 +187,7 @@ void TRil_ore_ris_mask::elabora_risorsa(const TString& curr_risorsa, TReport& re //..csv_recordset e poi sbatte quest'ultimo (ordinato) nel report //Il tutto nel magico metodo che segue! ci_fill_recset_from_ass(righe, rep); - + //campo a mano per fare scattare la mask2report() rep.recordset()->set_var("#CODRIS", curr_risorsa, true); } diff --git a/ci/ci1350.cpp b/ci/ci1350.cpp index 38ab450c8..1f7f29cf1 100755 --- a/ci/ci1350.cpp +++ b/ci/ci1350.cpp @@ -149,7 +149,7 @@ void ci_fill_recset_from_ass(TAssoc_array& ass, TReport& rep) recset->set("Key1", chiave1); //se ci1300 ->(cms o cdc) se ci1400 ->(A o R) recset->set("Key2", chiave2); //se ci1300 ->(cdc o cms) se ci1400 ->(codris o codattr) - recset->set("Key3", chiave3); + recset->set("Key3", chiave3); //se ci1300 -> fase //report di risorsa / attrezzatura (ci1300) if (per_ris_att) { diff --git a/ci/ci1400.cpp b/ci/ci1400.cpp index 5c3404b79..e17e91c48 100755 --- a/ci/ci1400.cpp +++ b/ci/ci1400.cpp @@ -67,6 +67,7 @@ bool TRil_ore_cms_mask::on_field_event(TOperable_field& o, TField_event e, long bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& rep) const { const TVariant tipo_cms_cdc = get(F_CMSOCDC); + const bool per_commessa = tipo_cms_cdc.as_string() == "C"; //date del mese const int anno = get_int(F_ANNO); @@ -85,7 +86,7 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& //query sul file delle ore in chiave 4 o 5, in base alla scelta di Cdc(4) o Cms(5): TIPO+CODCOSTO+... o TIPO+CODCMS+... TString query; - if (tipo_cms_cdc.as_string() == "C") + if (per_commessa) { const TRectype& rec_cms = cache().get(LF_COMMESSE, curr_commessa); const int durata_cms = ca_durata_commessa(rec_cms, ini_cms, fine_cms); @@ -100,9 +101,6 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& } else { - ini_cms = ini_mese; - fine_cms = fine_mese; - query << "USE RILORE KEY 4"; query << "\nFROM TIPO=#TIPO CODCOSTO=#CODICE"; query << "\nTO TIPO=#TIPO CODCOSTO=#CODICE"; @@ -128,11 +126,25 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& TDate dataini = rilore_recset.get(RILORE_DADATA).as_date(); TDate datafine = rilore_recset.get(RILORE_ADATA).as_date(); + //se esiste la commessa nel record e sta stampando per cdc, la commessa va tenuta in considerazione per.. + //..quanto riguarda l'intervallo di date + if (!per_commessa) + { + const TString& commessa = rilore_recset.get(RILORE_CODCMS).as_string(); + const TRectype& rec_cms = cache().get(LF_COMMESSE, commessa); + const int durata_cms = ca_durata_commessa(rec_cms, ini_cms, fine_cms); + + //se la commessa non "interseca" il mese selezionato -> finisce qui + if (fine_cms < ini_mese || ini_cms > fine_mese) + continue; + } + //adatta le date alla commessa se quest'ultima è contenuta nell'intervallo (può essere più breve.. //..dell'intervallo selezionato, oppure sovrapporsi solo parzialmente) - if (fine_cms < datafine) + //se sta stampando per cdc -> fine_cms e ini_cms sono vuoti se non c'è la cms e non fa la trimmatura + if (fine_cms.ok() && fine_cms < datafine) datafine = fine_cms; - if (ini_cms > dataini) + if (ini_cms.ok() && ini_cms > dataini) dataini = ini_cms; //se la commessa fosse tutta nel futuro o nel passato -> lascia perdere const long giorni_lavorativi = ci_calcola_giorni_lavorativi(dataini, datafine); @@ -140,7 +152,16 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& continue; TDate ini_lav, fine_lav; - const long giorni_lavorativi_cms = ci_calcola_giorni_lavorativi_cms(anno, mese, ini_cms, fine_cms, dataini, datafine, ini_lav, fine_lav); + long giorni_lavorativi_cms = 0; + //se lavora su commessa -> le date ini_cms e fine_cms sono ok + if (ini_cms.ok() && fine_cms.ok()) + giorni_lavorativi_cms = ci_calcola_giorni_lavorativi_cms(anno, mese, ini_cms, fine_cms, dataini, datafine, ini_lav, fine_lav); + else //se ci fosse solo il cdc nel record di rilore, non avendo una durata -> i suoi giorni lavorativi coincidono con quelli del mese + { + giorni_lavorativi_cms = ci_calcola_giorni_lavorativi(ini_mese, fine_mese); + ini_lav = ini_mese; + fine_lav = fine_mese; + } if (giorni_lavorativi_cms > 0) { @@ -184,13 +205,13 @@ bool TRil_ore_cms_mask::elabora_commessa(const TString& curr_commessa, TReport& } //for (bool ok = rilore_recset.move_first()... } //for (int i = 0; i < 2; i++).. + //tenta la mask2report per far apparire sul report i campi di selezione della maschera + rep.mask2report(*this); //finita l'elaborazione che ha riempito l'assoc_array, asegna il medesimo ad un.. //..csv_recordset e poi sbatte quest'ultimo (ordinato) nel report ci_fill_recset_from_ass(righe, rep); - + //campo a mano per fare scattare la mask2report() rep.recordset()->set_var("#CODCMS", curr_commessa, true); - //tenta la mask2report per far apparire sul report i campi di selezione della maschera - rep.mask2report(*this); return true; } diff --git a/ci/ci1400a.rep b/ci/ci1400a.rep index 394f2174a..9d8dd8332 100755 --- a/ci/ci1400a.rep +++ b/ci/ci1400a.rep @@ -1,45 +1,50 @@ - + Rilevazione ore mensili per Commessa - CdC
- + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Des1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -48,8 +53,8 @@ #CMSOCDC -
  • -
  • +
  • +
  • @@ -79,210 +84,216 @@ - + #CMSOCDC
  • MESSAGE HIDE,H1.92|SHOW,H1.91
  • MESSAGE HIDE,H1.91|SHOW,H1.92
  • + + #SYSTEM.DATE - - - + + + - #CODCMSCDC + #CODCMS - + MESSAGE ISAMREAD,COMMESSE,CODCMS=#90,DESCRIZ - + MESSAGE ISAMREAD,CDC,CODCOSTO=#90,DESCRIZ
    - - - A + + + TotPrev + MESSAGE ADD,F1.99 - - B + + TotCons MESSAGE ADD,F1.100 - - C + + G01 MESSAGE ADD,F1.101 - - D + + G02 MESSAGE ADD,F1.102 - - E + + G03 MESSAGE ADD,F1.103 - - F + + G04 MESSAGE ADD,F1.104 - - G + + G05 MESSAGE ADD,F1.105 - - H + + G06 MESSAGE ADD,F1.106 - - I + + G07 MESSAGE ADD,F1.107 - - J + + G08 MESSAGE ADD,F1.108 - - K + + G09 MESSAGE ADD,F1.109 - - L + + G10 MESSAGE ADD,F1.110 - - M + + G11 MESSAGE ADD,F1.111 - - N + + G12 MESSAGE ADD,F1.112 - - O + + G13 MESSAGE ADD,F1.113 - - P + + G14 MESSAGE ADD,F1.114 - - Q + + G15 MESSAGE ADD,F1.115 - - R + + G16 MESSAGE ADD,F1.116 - - S + + G17 MESSAGE ADD,F1.117 - - T + + G18 MESSAGE ADD,F1.118 - - U + + G19 MESSAGE ADD,F1.119 - - V + + G20 MESSAGE ADD,F1.120 - - W + + G21 MESSAGE ADD,F1.121 - - X + + G22 MESSAGE ADD,F1.122 - - Y + + G23 MESSAGE ADD,F1.123 - - Z + + G24 MESSAGE ADD,F1.124 - - AA + + G25 MESSAGE ADD,F1.125 - - AB + + G26 MESSAGE ADD,F1.126 - - AC + + G27 MESSAGE ADD,F1.127 - - AD + + G28 MESSAGE ADD,F1.128 - - AE + + G29 MESSAGE ADD,F1.129 - - AF + + G30 MESSAGE ADD,F1.130 - - AG + + G31 MESSAGE ADD,F1.131 - - AH - MESSAGE ADD,F1.132 + + + Key2 + + + Des2
    - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    \ No newline at end of file