Make the reconcile window close when the session closes, use full version of free

This commit is contained in:
jean 2020-04-21 22:24:09 -07:00
parent 07cbd936c6
commit 2d0d7c40f8
4 changed files with 39 additions and 14 deletions

View File

@ -57,6 +57,7 @@
#include "gnc-window.h"
#include "reconcile-view.h"
#include "window-reconcile.h"
#include "gnc-session.h"
#ifdef MAC_INTEGRATION
#include <gtkmacintegration/gtkosxapplication.h>
#endif
@ -1765,6 +1766,8 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
gnc_register_gui_component (WINDOW_RECONCILE_CM_CLASS,
refresh_handler, close_handler,
recnData);
// This window should close if we close the session.
gnc_gui_component_set_session (recnData->component_id, gnc_get_current_session());
recn_set_watches (recnData);

View File

@ -1133,28 +1133,16 @@ void gnc_file_ofx_import (GtkWindow *parent)
{
if (statement->ledger_balance_valid)
{
// The balance needs to be corrected for credit-card and loan accounts.
float sign = 1;
switch(xaccAccountGetType (account))
{
case ACCT_TYPE_CREDIT:
case ACCT_TYPE_LIABILITY:
sign = -1;
default:
sign = 1;
}
// Grab the balance value and date from the statement and open a reconcile window for this account.
gnc_numeric value = double_to_gnc_numeric (sign*statement->ledger_balance, xaccAccountGetCommoditySCU (account), GNC_HOW_RND_ROUND_HALF_UP);
gnc_numeric value = double_to_gnc_numeric (statement->ledger_balance, xaccAccountGetCommoditySCU (account), GNC_HOW_RND_ROUND_HALF_UP);
recnWindowWithBalance (GTK_WIDGET (parent),
account,
value,
statement->ledger_balance_date);
}
g_free (statement);
}
}
g_free (selected_filename);
g_slist_free (info.statement);
g_slist_free_full (info.statement,g_free);
}
if (ofx_created_commodites)

View File

@ -4391,6 +4391,35 @@ gboolean xaccAccountIsAssetLiabType(GNCAccountType t)
}
}
GNCAccountType
xaccAccountTypeGetFundamental (GNCAccountType t)
{
switch (t)
{
case ACCT_TYPE_BANK:
case ACCT_TYPE_STOCK:
case ACCT_TYPE_MUTUAL:
case ACCT_TYPE_CURRENCY:
case ACCT_TYPE_CASH:
case ACCT_TYPE_ASSET:
case ACCT_TYPE_RECEIVABLE:
return ACCT_TYPE_ASSET;
case ACCT_TYPE_CREDIT:
case ACCT_TYPE_LIABILITY:
case ACCT_TYPE_PAYABLE:
return ACCT_TYPE_LIABILITY;
case ACCT_TYPE_INCOME:
return ACCT_TYPE_INCOME;
case ACCT_TYPE_EXPENSE:
return ACCT_TYPE_EXPENSE;
case ACCT_TYPE_EQUITY:
return ACCT_TYPE_EQUITY;
case ACCT_TYPE_TRADING:
default:
return ACCT_TYPE_NONE;
}
}
gboolean xaccAccountIsAPARType(GNCAccountType t)
{
switch (t)

View File

@ -975,6 +975,11 @@ guint32 xaccAccountTypesValid(void);
* Asset or Liability type, but not a business account type
* (meaning not an Accounts Payable/Accounts Receivable). */
gboolean xaccAccountIsAssetLiabType(GNCAccountType t);
/** Convenience function to return the fundamental type
* asset/liability/income/expense/equity given an account type. */
GNCAccountType xaccAccountTypeGetFundamental (GNCAccountType t);
/** Convenience function to check if the account is a valid
* business account type