diff --git a/cg/cglib01.cpp b/cg/cglib01.cpp index ae9b76ebc..2d26ab433 100755 --- a/cg/cglib01.cpp +++ b/cg/cglib01.cpp @@ -210,11 +210,32 @@ bool TEsercizi_contabili::code2range(int codice, TDate& dal, TDate& al) const } else { - ok = codice > 2000; - if (ok) + const int primo_esercizio = first(); + const int ultimo_esercizio = last(); + if (codice < primo_esercizio) + { + const TEsercizio& e = esercizio(primo_esercizio); + dal = e.inizio(); + al = e.fine(); + dal.addyear(primo_esercizio - codice); + al.addyear(primo_esercizio - codice); + ok = true; + } + if (codice > ultimo_esercizio) + { + const TEsercizio& e = esercizio(ultimo_esercizio); + dal = e.inizio(); + al = e.fine(); + dal.addyear(codice - ultimo_esercizio); + al.addyear(codice - ultimo_esercizio); + ok = true; + } + + if (!ok && codice > 1900) { dal = TDate(1, 1, codice); al = TDate(31, 12, codice); + ok = true; } else dal = al = TDate();