-GDate *date;
-guint month, year, qnum;
-
- if(refdate > *maxdate)
- refdate = *maxdate;
-
- date = g_date_new_julian(refdate);
- month = g_date_get_month(date);
- year = g_date_get_year(date);
- qnum = ((month-1)/3)+1;
-
- DB( g_print("m=%d, y=%d, qnum=%d\n", month, year, qnum) );
-
- switch( range )
- {
- case 0: // this month
- g_date_set_day(date, 1);
- *mindate = g_date_get_julian(date);
- g_date_add_days(date, g_date_get_days_in_month(month, year)-1);
- *maxdate = g_date_get_julian(date);
- break;
-
- case 1: // last month
- g_date_set_day(date, 1);
- g_date_subtract_months(date, 1);
- *mindate = g_date_get_julian(date);
- month = g_date_get_month(date);
- year = g_date_get_year(date);
- g_date_add_days(date, g_date_get_days_in_month(month, year)-1);
- *maxdate = g_date_get_julian(date);
- break;
-
- case 2: // this quarter
- g_date_set_day(date, 1);
- g_date_set_month(date, (qnum-1)*3+1);
- *mindate = g_date_get_julian(date);
- g_date_add_months(date, 3);
- g_date_subtract_days(date, 1);
- *maxdate = g_date_get_julian(date);
- break;
-
- case 3: // last quarter
- g_date_set_day(date, 1);
- g_date_set_month(date, (qnum-1)*3+1);
- g_date_subtract_months(date, 3);
- *mindate = g_date_get_julian(date);
- g_date_add_months(date, 3);
- g_date_subtract_days(date, 1);
- *maxdate = g_date_get_julian(date);
- break;
-
- case 4: // this year
- g_date_set_dmy(date, 1, 1, year);
- *mindate = g_date_get_julian(date);
- g_date_set_dmy(date, 31, 12, year);
- *maxdate = g_date_get_julian(date);
- break;
-
- // separator
-
- case 6: // last 30 days
- *mindate = refdate - 30;
- *maxdate = refdate;
- break;
-
- case 7: // last 60 days
- *mindate = refdate - 60;
- *maxdate = refdate;
- break;
-
- case 8: // last 90 days
- *mindate = refdate - 90;
- *maxdate = refdate;
- break;
-
- case 9: // last 12 months
- g_date_subtract_months(date, 12);
- *mindate = g_date_get_julian(date);
- *maxdate = refdate;
- break;