diff --git a/m770/770100.cpp b/m770/770100.cpp index 9814bc89c..3a315df55 100755 --- a/m770/770100.cpp +++ b/m770/770100.cpp @@ -327,6 +327,10 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype& sch, const TDate& pag_dal if (numreg > 0) { +#ifdef DBG + if (numreg == 31723) + int cazzone = 1; +#endif TPartite_array partarr; partarr.add_numreg(numreg); @@ -363,7 +367,7 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype& sch, const TDate& pag_dal if (row >= 0) { TRiga_partite & rigapart = p->riga(row); - int nrate = rigapart.rate(); + const int nrate = rigapart.rate(); TDate datapag; for (int r = 1; r <= nrate; r++) @@ -377,12 +381,15 @@ void TSchedaPercipienti::agg_pagamenti(const TRectype& sch, const TDate& pag_dal for (int rowp = ratapart.last(); rowp > 0; rowp = ratapart.pred(rowp)) { - const TRectype& pag = ratapart.row(rowp); // Riga pagamento - + const TRectype& pag = ratapart.row(rowp); // Riga pagamento const TRiga_partite& sum = p->riga(rowp); // Riga partite - const TDate sum_datapag = pag.get(PART_DATAPAG); - if (sum_datapag < pag_dal) - continue; + + if (pag_dal.ok()) // Filtro opzionale su data pagamento + { + const TDate sum_datapag = sum.get(PART_DATAPAG); + if (sum_datapag < pag_dal) + continue; + } const char sez = sum.sezione(); TImporto imppag(sez, pag.get_real(PAGSCA_IMPORTO)); diff --git a/m770/777100.cpp b/m770/777100.cpp index 6321a760a..bd94f4ae8 100755 --- a/m770/777100.cpp +++ b/m770/777100.cpp @@ -1170,8 +1170,11 @@ bool TRecord770::np_get_real(int pos, TString& key, real& val) const { TString16 str; const bool ok = np_get(pos, key, str); - if (ok && !real::is_null(str)) + if (ok && str.full()) + { + str.replace(',', '.'); val = real(str); + } else val = ZERO; return ok; @@ -1463,6 +1466,17 @@ bool TTrasferimento770::riepiloga_ss(const TRecord770& rec, TArray& riep_ss) con riep_ss.add(r, idx); } *r += val; + } else + if (num >= 43 && num <= 48) + { + const int idx = num-43; + real* r = (real*)riep_ss.objptr(idx); + if (r == NULL) + { + r = new real; + riep_ss.add(r, idx); + } + *r -= val; } } return !riep_ss.empty(); @@ -1621,7 +1635,7 @@ bool TTrasferimento770::split(const char* path) if (val != NULL) { TString8 code; - code.format("SS003%03d", i+1); // i=0 -> SS0003001 -> AUXXX025 + code.format("SS003%03d", i+1); // i=0 -> SS0003001 -> AUXXX026-AUXXX043 rec.np_put(code, *val); } }