diff --git a/src/ve/ve6300.cpp b/src/ve/ve6300.cpp index fff7b5ca2..ff07bbfa5 100755 --- a/src/ve/ve6300.cpp +++ b/src/ve/ve6300.cpp @@ -515,19 +515,31 @@ void TGenerazioneEffetti_app::generate() else if (sort_by_cli) { - cursor_key = 4; + cursor_key = 2; + + const long codcfini = _msk->get_long(F_CODCF_INI); + const long codcffin = _msk->get_long(F_CODCF_FIN); const TDate dataini = _msk->get_date(F_DATA_INI); const TDate datafin = _msk->get_date(F_DATA_FIN); da.put(DOC_TIPOCF, "C"); - da.put(DOC_CODCF, _msk->get(F_CODCF_INI)); + da.put(DOC_CODCF, codcfini); da.put(DOC_ANNO, dataini.year()); + da.put(DOC_DATADOC, dataini); da.put(DOC_CODNUM, codnum); a.put(DOC_TIPOCF, "C"); - a.put(DOC_CODCF, _msk->get(F_CODCF_FIN)); + a.put(DOC_CODCF, codcffin); a.put(DOC_ANNO, datafin.year()); + a.put(DOC_DATADOC, datafin); a.put(DOC_CODNUM, codnum); - filt_expr << "BETWEEN(" << DOC_DATADOC << ",\"" << dataini.string() << "\",\"" << datafin.string() << "\")"; + filt_expr.cut(0); + if (codcfini != codcffin) + filt_expr << "(BETWEEN(" << DOC_ANNO << "," << dataini.year() << "," << datafin.year() << "))"; + if (codcfini != codcffin || dataini != datafin) + filt_expr << (filt_expr.blank() ? "" : "&&") << "(BETWEEN(" << DOC_DATADOC << "," << dataini.date2ansi() << "," << datafin.date2ansi() << ")"; + if (filt_expr.full()) + filt_expr << ")"; + }