void ap_assistant_finish (GtkAssistant *assistant, gpointer user_data) { AcctPeriodInfo *info = user_data; GtkTextBuffer * buffer; GtkTextIter startiter, enditer; gint len; const char *btitle; char *bnotes; Timespec closing_date; ENTER("info=%p", info); btitle = gtk_entry_get_text (GTK_ENTRY(info->book_title)); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(info->book_notes)); len = gtk_text_buffer_get_char_count (buffer); gtk_text_buffer_get_iter_at_offset(buffer, &startiter, 0); gtk_text_buffer_get_iter_at_offset(buffer, &enditer, len); bnotes = gtk_text_buffer_get_text(buffer, &startiter, &enditer , 0); PINFO("Book title is - %s\n", btitle); timespecFromTime64 (&closing_date, gnc_time64_get_day_end_gdate (&info->closing_date)); g_free(bnotes); /* Report the status back to the user. */ info->close_status = 0; /* XXX fixme success or failure? */ /* Find the next closing date ... */ info->prev_closing_date = info->closing_date; recurrenceListNextInstance (info->period, &info->prev_closing_date, &info->closing_date); /* FIXME Test for valid closing date, not sure why it won't be!!! */ if (g_date_valid(&info->closing_date) == TRUE) { /* If the next closing date is in the future, then we are done. */ if (gnc_time (NULL) > gnc_time64_get_day_end_gdate (&info->closing_date)) { /* Load up the GUI for the next closing period. */ gnc_frequency_setup_recurrence (info->period_menu, NULL, &info->closing_date); /* Jump back to the Close Book page. */ gtk_assistant_set_current_page (GTK_ASSISTANT(info->window), 1); } } }
time64 recurrenceGetPeriodTime(const Recurrence *r, guint period_num, gboolean end) { GDate date; recurrenceNthInstance(r, period_num + (end ? 1 : 0), &date); if (end) { g_date_subtract_days(&date, 1); return gnc_time64_get_day_end_gdate(&date); } else { return gnc_time64_get_day_start_gdate(&date); } }
static time64 gnc_accounting_period_end_time64 (GncAccountingPeriod which, const GDate *fy_end, const GDate *contains) { GDate *date; time64 secs; date = gnc_accounting_period_end_gdate(which, fy_end, contains); if (!date) return 0; secs = gnc_time64_get_day_end_gdate(date); g_date_free(date); return secs ; }
void ap_assistant_book_prepare (GtkAssistant *assistant, gpointer user_data) { QofBook *currbook; char close_date_str[MAX_DATE_LENGTH]; char prev_close_date_str[MAX_DATE_LENGTH]; const char *period_text; char *str; const char *cstr; int ntrans, nacc; GtkTextBuffer *buffer; AcctPeriodInfo *info = user_data; ENTER ("info=%p", info); /* Tell user about how the previous book closing went. */ cstr = get_close_status_str (info); gtk_label_set_text (GTK_LABEL(info->close_results), cstr); info->close_status = -1; /* Pull info from widget, push into freq spec */ //gnc_frequency_save_state (info->period_menu, info->period, &info->closing_date); recurrenceListFree(&info->period); gnc_frequency_save_to_recurrence(info->period_menu, &info->period, &info->closing_date); qof_print_date_dmy_buff (close_date_str, MAX_DATE_LENGTH, g_date_get_day(&info->closing_date), g_date_get_month(&info->closing_date), g_date_get_year(&info->closing_date)); currbook = gnc_get_current_book(); ntrans = get_num_xactions_before_date(currbook, gnc_time64_get_day_end_gdate (&info->closing_date)); nacc = gnc_account_n_descendants (gnc_book_get_root_account (currbook)); /* Display the book info */ period_text = /* Translators: Run the assistent in your language to see GTK's translation of the button labels. */ _("You have asked for a book to be created. This book " "will contain all transactions up to midnight %s " "(for a total of %d transactions spread over %d accounts).\n\n " "Amend the Title and Notes or Click on \"Next\" to proceed.\n " "Click on \"Back\" to adjust the dates or \"Cancel\"."); str = g_strdup_printf (period_text, close_date_str, ntrans, nacc); gtk_label_set_text (GTK_LABEL(info->book_details), str); g_free (str); gtk_widget_show (GTK_WIDGET (info->book_details)); /* Create default settings for the title, notes fields */ qof_print_date_dmy_buff (prev_close_date_str, MAX_DATE_LENGTH, g_date_get_day(&info->prev_closing_date), g_date_get_month(&info->prev_closing_date), g_date_get_year(&info->prev_closing_date)); str = g_strdup_printf (_("Period %s - %s"), prev_close_date_str, close_date_str); gtk_entry_set_text (GTK_ENTRY(info->book_title), str); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(info->book_notes)); gtk_text_buffer_set_text(buffer, str, -1); g_free (str); }