GDate * gnc_accounting_period_end_gdate (GncAccountingPeriod which, const GDate *fy_end, const GDate *contains) { GDate *date; if (contains) { date = g_date_new_dmy(g_date_get_day(contains), g_date_get_month(contains), g_date_get_year(contains)); } else { date = g_date_new (); gnc_gdate_set_today (date); } switch (which) { default: g_message("Undefined relative time constant %d", which); g_date_free(date); return 0; case GNC_ACCOUNTING_PERIOD_TODAY: /* Already have today's date */ break; case GNC_ACCOUNTING_PERIOD_MONTH: gnc_gdate_set_month_end(date); break; case GNC_ACCOUNTING_PERIOD_MONTH_PREV: gnc_gdate_set_prev_month_end(date); break; case GNC_ACCOUNTING_PERIOD_QUARTER: gnc_gdate_set_quarter_end(date); break; case GNC_ACCOUNTING_PERIOD_QUARTER_PREV: gnc_gdate_set_prev_quarter_end(date); break; case GNC_ACCOUNTING_PERIOD_CYEAR: gnc_gdate_set_year_end(date); break; case GNC_ACCOUNTING_PERIOD_CYEAR_PREV: gnc_gdate_set_prev_year_end(date); break; case GNC_ACCOUNTING_PERIOD_FYEAR: if (fy_end == NULL) { g_message("Request for fisal year value but no fiscal year end value provided."); g_date_free(date); return 0; } gnc_gdate_set_fiscal_year_end(date, fy_end); break; case GNC_ACCOUNTING_PERIOD_FYEAR_PREV: if (fy_end == NULL) { g_message("Request for fisal year value but no fiscal year end value provided."); g_date_free(date); return 0; } gnc_gdate_set_prev_fiscal_year_end(date, fy_end); break; } return date; }
void gnc_gdate_set_prev_year_end (GDate *date) { gnc_gdate_set_year_end(date); g_date_subtract_years(date, 1); }