mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Merge branch 'maint'
This commit is contained in:
commit
b8c0673526
@ -358,8 +358,8 @@ find_guile_dirs()
|
||||
|
||||
# ############################################################
|
||||
if (WITH_AQBANKING)
|
||||
pkg_check_modules (GWENHYWFAR REQUIRED gwenhywfar>=5.8.0)
|
||||
pkg_check_modules (AQBANKING REQUIRED aqbanking>=6.4.0)
|
||||
pkg_check_modules (GWENHYWFAR REQUIRED gwenhywfar>=5.6.0)
|
||||
pkg_check_modules (AQBANKING REQUIRED aqbanking>=6.2.0)
|
||||
set(CMAKE_REQUIRED_INCLUDES "${AQBANKING_INCLUDE_DIRS}"
|
||||
"${GWENHYWFAR_INCLUDE_DIRS}")
|
||||
set(CMAKE_REQUIRED_LIBRARIES "${AQBANKING_LD_FLAGS}")
|
||||
|
161
NEWS
161
NEWS
@ -1,60 +1,155 @@
|
||||
Version history:
|
||||
------- -------
|
||||
4.13 - 18 December 2022
|
||||
Between 4.12 and 4.13, the following bugfixes were accomplished:
|
||||
|
||||
Bug 760274 - The Statusbar "forgets" when register doesn't have focus
|
||||
Bug 798545 - Crash when updating document link on vendor bill
|
||||
Bug 798614 - Croatia to join the Euro
|
||||
Bug 798629 - gnucash crashes attempting to import OFX file
|
||||
Bug 798633 - 4.12 build failure on 32-bit Linux: "No code for module"
|
||||
Bug 798640 - Segfault when running saved report
|
||||
Bug 798649 - Crash when closing Edit Style Sheets dialog while Style Sheet
|
||||
Properties dialog is still open.
|
||||
Bug 798653 - Schedule Calendar event description pop up window does not
|
||||
track mouse position
|
||||
Bug 798657 - Import Summary language is wrong
|
||||
Bug 798664 - Result of 'gnucash --nofile' is marked dirty
|
||||
Bug 798669 - Multicolumn Balance Sheet not printing exchange rates
|
||||
|
||||
include equity accounts in the exchange rate commodities list.
|
||||
Bug 798672 - Preferences are not saved nor loaded,
|
||||
ERROR <GLib-GIO> g_settings_new_full: assertion
|
||||
'schema != NULL' failed
|
||||
Bug 798680 - Not able to match a reverse transaction of a previously
|
||||
matched transaction.
|
||||
Bug 798681 - Previously imported investment income transactions may not
|
||||
be filtered.
|
||||
Bug 798694 - Cursor in the wrong place after pasting with auto-completion
|
||||
|
||||
The following fixes and improvements were not associated with bug reports:
|
||||
|
||||
Don't normalize text when pasting from the clipboard or appending
|
||||
descriptions or notes during imports.
|
||||
[register] Delay post-ime reset of the selection to works around bug 798587.
|
||||
[ofx import] Clean up importing investment transactions for smoother
|
||||
workflow and better UI behavior.
|
||||
[account-piecharts] drill-down piechart: tree-depth is at most 6
|
||||
Fix numerous memory leaks.
|
||||
[ifrs-report] From Bug 798004 allow Cr cash to offset Dr fee and remove
|
||||
invalid "dividend reinvestment" during short.
|
||||
[gtest-qofevent.cpp] Add comprehensive tests for qofevent
|
||||
[test-qofbook] Test that gnc_features_test_unknown returns a suitable
|
||||
error message
|
||||
[test-qofbook.c] add test for gnc_features_set_unused
|
||||
[gnc-features.cpp] backport gnc_features_set_unused from master
|
||||
[qofbook.cpp] backport qof_book_unset_feature from master
|
||||
Move gnc-euro.[ch] to engine and unit test it.
|
||||
[test-qofbook] basic features test: Sets a feature and tests it's set.
|
||||
It's impossible to design a book with unknown features using the API.
|
||||
po/README: Remove relics from ancient context forms
|
||||
[test-ifrs-cost-basis] amend tests to accommodate extra column.
|
||||
[ifrs-cost-basis] compare register vs calculated capgain per transaction.
|
||||
Accomodate WebKit package version update to webkit2gtk-4.1.
|
||||
[assistant-stock-transaction] input positive capgains for Credit income account.
|
||||
|
||||
New API: None.
|
||||
|
||||
Deprecations:
|
||||
|
||||
qof_book_get_features
|
||||
|
||||
New and Updated Translations: Chinese (Simplified), Croatian, English
|
||||
(Australia), English (New Zealand), English (United Kingdom), French,
|
||||
Hungarian, Indonesian, Japanese, Korean, Macedonian, Polish, Spanish,
|
||||
Urdu
|
||||
|
||||
4.12 - 25 September 2022
|
||||
Between 4.11 and 4.12, the following bugfixes were accomplished:
|
||||
|
||||
Bug 794584 - Register not updated when scheduled transactions created
|
||||
Bug 798262 - Scheduled transactions with blank amounts do not get created.
|
||||
Bug 798385 - Description to often only "Landesbank Hessen-Thuringen Girozentrale"
|
||||
|
||||
Prepend the Ulitimate Creditor or Ultimate Debtor to the transaction description.
|
||||
Bug 798565 - Import map editor: deletion of a map does not mark gnucash document as dirty
|
||||
Bug 798385 - Description to often only
|
||||
"Landesbank Hessen-Thuringen Girozentrale"
|
||||
Prepend the Ulitimate Creditor or Ultimate Debtor to the
|
||||
transaction description.
|
||||
Bug 798565 - Import map editor: deletion of a map does not mark gnucash
|
||||
document as dirty
|
||||
Bug 798573 - Tab Width Behaviour
|
||||
|
||||
Formerly when the notebook tabs on the left or right, the space used fluctuated depending on tab label width. This change sets the label width to the preference setting when the tabs are on the left or right but when top or bottom the width is set to the number of characters when shorter than the preference setting so they take up less room.
|
||||
Bug 798578 - MT940 imports broken - all transactions have date of first transaction
|
||||
Bug 798585 - segfault running sample script
|
||||
|
||||
simple_business_create.py.
|
||||
Formerly when the notebook tabs on the left or right,
|
||||
the space used fluctuated depending on tab label
|
||||
width. This change sets the label width to the
|
||||
preference setting when the tabs are on the left or
|
||||
right but when top or bottom the width is set to the
|
||||
number of characters when shorter than the preference
|
||||
setting so they take up less room.
|
||||
Bug 798578 - MT940 imports broken - all transactions have date of first
|
||||
transaction
|
||||
Bug 798585 - segfault running sample script simple_business_create.py.
|
||||
Bug 798588 - sx scrubbing was using incorrect free function
|
||||
Bug 798590 - Transaction report: wrong type argument in position 1
|
||||
Bug 798598 - Selecting a line in a Vendor Credit Note changes display of Subtotal cell to 0.00
|
||||
Bug 798598 - Selecting a line in a Vendor Credit Note changes display of
|
||||
Subtotal cell to 0.00
|
||||
Bug 798611 - Date changing when changing timezone by one hour
|
||||
|
||||
When getting a date from the date editor anywhere in the program set the time to neutral time instead of the beginning of the day unless get_date_internal is called with GNC_DATE_EDIT_SHOW_TIME in which case the user-provided time is used.
|
||||
When getting a date from the date editor anywhere in
|
||||
the program set the time to neutral time instead of
|
||||
the beginning of the day unless get_date_internal is
|
||||
called with GNC_DATE_EDIT_SHOW_TIME in which case the
|
||||
user-provided time is used.
|
||||
Bug 798616 - Can't register amount greater than 9,000,000,000
|
||||
|
||||
Because when loading the value the split in the xml backend doesn't yet have a parent so the code tried to convert to GNC_COMMODITY_MAX_FRACTION and if the numerator was larger than 10^10 that would overflow. To fix it this changes the "don't know" response in get_currency_denom and get_commodity_denom to GNC_DENOM_AUTO which will normally leave the denominator alone.
|
||||
Because when loading the value the split in the xml
|
||||
backend doesn't yet have a parent so the code tried
|
||||
to convert to GNC_COMMODITY_MAX_FRACTION and if the
|
||||
numerator was larger than 10^10 that would
|
||||
overflow. To fix it this changes the "don't know"
|
||||
response in get_currency_denom and
|
||||
get_commodity_denom to GNC_DENOM_AUTO which will
|
||||
normally leave the denominator alone.
|
||||
|
||||
The following fixes and improvements were not associated with bug reports:
|
||||
|
||||
It is now possible to edit the description, notes, and memo fields of new transactions in the import matcher and to do so for multiple transactions. The option is accessed via a context menu on selected import lines.
|
||||
Show GnuCash's installation and configuration configuration paths in the About dialog. List the same from the command line with a --paths option.
|
||||
It is now possible to edit the description, notes, and memo fields of
|
||||
new transactions in the import matcher and to do so for multiple
|
||||
transactions. The option is accessed via a context menu on selected
|
||||
import lines.
|
||||
Show GnuCash's installation and configuration configuration paths in the
|
||||
About dialog. List the same from the command line with a --paths option.
|
||||
Add account hierarchy templates for locale es_AR
|
||||
Continued work on the Stock Transaction Assistant. If you want to try out this new way of recording your investment transactions start GnuCash with the --extra option. The stock assistant is available on the toolbar and from the Actions menu when a register for a STOCK or FUND account is focused.
|
||||
Replace the very obsolete ghelp: URI scheme with help: and install the documentation according to the XDG documentation spec on non-Mac Linux systems. This ensures that the Help menu documentation items work with Gnome 42 and later.
|
||||
Conforming to the XDG documentation spec, rename the root page of the Help manual to index from help. This has the happy side effect of removing some special-case code from the macOS documentation links.
|
||||
Standardize the top-level Equity and Assets account names in the French templates to "Capitaux propres" and "Actif" respectively.
|
||||
Continued work on the Stock Transaction Assistant. If you want to try out
|
||||
this new way of recording your investment transactions start GnuCash
|
||||
with the --extra option. The stock assistant is available on the
|
||||
toolbar and from the Actions menu when a register for a STOCK or FUND
|
||||
account is focused.
|
||||
Replace the very obsolete ghelp: URI scheme with help and install the
|
||||
documentation according to the XDG documentation spec on non-Mac Linux
|
||||
systems. This ensures that the Help menu documentation items work with
|
||||
Gnome 42 and later.
|
||||
Conforming to the XDG documentation spec, rename the root page of the Help
|
||||
manual to index from help. This has the happy side effect of removing
|
||||
some special-case code from the macOS documentation links.
|
||||
Standardize the top-level Equity and Assets account names in the French
|
||||
templates to "Capitaux propres" and "Actif" respectively.
|
||||
[gnc-ab-utils] concise string accumulator
|
||||
[gnc-glib-utils] gnc_g_list_stringjoin skips NULL data
|
||||
[ifrs-cost-basis] identify sale/purchase according to truth table instead of via flawed heuristics
|
||||
[ifrs-cost-basis] identify sale/purchase according to truth table instead
|
||||
of via flawed heuristics
|
||||
[ifrs-cost-basis] add options used as a report footer
|
||||
[lot-viewer] Show Open & Close dates only when they have a value.
|
||||
Fix use-after-free crash in gnc_set_busy_cursor.
|
||||
Create Swiss SMB account chart acctchrt_pme-19.gnucash-xea.
|
||||
[date-utilities] avoid report crash if start > end date
|
||||
[html-chart] add percent formatter for numbers for older javascript.
|
||||
[trial-balance] set default price-source to average-cost
|
||||
|
||||
to minimise complaints (see Bug 798550)
|
||||
[trial-balance] set default price-source to average-cost to minimise
|
||||
complaints (see Bug 798550)
|
||||
Use macos-latest github runner for mac tests.
|
||||
[dialog-price] Price Database: Insert help buttons
|
||||
Disable transaction type (i.e. Bill or Invoice) in Invoice/Bill Registers, determining the type by inspecting the money flow.
|
||||
Fix python tests dependencies
|
||||
|
||||
So that ninja check works from a clean build directory with Python enabled.
|
||||
Disable transaction type (i.e. Bill or Invoice) in Invoice/Bill Registers,
|
||||
determining the type by inspecting the money flow.
|
||||
Fix python tests dependencies so that ninja check works from a clean build
|
||||
directory with Python enabled.
|
||||
Review of account templates C—missing placeholders, redundancies
|
||||
Fixed a variety of fixed memory leaks, poor list handling, and dangling reference errors.
|
||||
Fixed a variety of fixed memory leaks, poor list handling, and dangling
|
||||
reference errors.
|
||||
|
||||
New API:
|
||||
gnc_tm_get_today_neutral to complement gnc_tm_get_today_begin and
|
||||
@ -64,7 +159,11 @@ New API:
|
||||
|
||||
Deprecations: None.
|
||||
|
||||
New and Updated Translations: Basque, Chinese (Simplified), Croatian, Dutch, English (Australia), English (New Zealand), English (United Kingdom), French, German, Hebrew, Hungarian, Indonesian, Italian, Korean, Marathi, Polish, Portuguese, Portuguese (Brazil), Russian, Swedish, Ukrainian
|
||||
New and Updated Translations: Basque, Chinese (Simplified), Croatian,
|
||||
Dutch, English (Australia), English (New Zealand), English (United
|
||||
Kingdom), French, German, Hebrew, Hungarian, Indonesian, Italian,
|
||||
Korean, Marathi, Polish, Portuguese, Portuguese (Brazil), Russian,
|
||||
Swedish, Ukrainian
|
||||
|
||||
4.11 - 26 June 2022
|
||||
Between 4.10 and 4.11, the following bugfixes were accomplished:
|
||||
|
@ -1049,6 +1049,5 @@
|
||||
(list (vector bank 150 150)
|
||||
(vector aapl -150 0))
|
||||
#:description "spin-off $150")
|
||||
|
||||
account-alist))
|
||||
|
||||
|
@ -75,6 +75,7 @@
|
||||
#include "gnc-prefs.h"
|
||||
#include "gnc-ui.h"
|
||||
#include "gnc-ui-util.h"
|
||||
#include <gnc-session.h>
|
||||
#include "gnc-component-manager.h"
|
||||
#include "dialog-preferences.h"
|
||||
#include "dialog-doclink-utils.h"
|
||||
@ -122,10 +123,14 @@ GSList *add_ins = NULL;
|
||||
static gchar *gnc_account_separator_is_valid (const gchar *separator,
|
||||
gchar **normalized_separator)
|
||||
{
|
||||
QofBook *book = gnc_get_current_book ();
|
||||
QofBook *book;
|
||||
GList *conflict_accts = NULL;
|
||||
gchar *message = NULL;
|
||||
|
||||
if (!gnc_current_session_exist())
|
||||
return NULL;
|
||||
|
||||
book = gnc_get_current_book ();
|
||||
*normalized_separator = gnc_normalize_account_separator (separator);
|
||||
conflict_accts = gnc_account_list_name_violations (book, *normalized_separator);
|
||||
if (conflict_accts)
|
||||
@ -151,7 +156,7 @@ gnc_account_separator_pref_changed_cb (GtkEntry *entry, GtkWidget *dialog)
|
||||
{
|
||||
GtkWidget *label, *image;
|
||||
gchar *sample;
|
||||
gchar *separator;
|
||||
gchar *separator = NULL;
|
||||
|
||||
gchar *conflict_msg = gnc_account_separator_is_valid (gtk_entry_get_text (entry), &separator);
|
||||
|
||||
@ -200,7 +205,7 @@ gnc_account_separator_validate (GtkWidget *dialog)
|
||||
{
|
||||
GtkWidget *entry = g_object_get_data (G_OBJECT(dialog), "account-separator");
|
||||
gboolean ret = TRUE;
|
||||
gchar *separator;
|
||||
gchar *separator = NULL;
|
||||
gchar *conflict_msg = gnc_account_separator_is_valid (gtk_entry_get_text (GTK_ENTRY(entry)), &separator);
|
||||
|
||||
/* Check if the new separator clashes with existing account names */
|
||||
@ -1337,7 +1342,6 @@ gnc_preferences_dialog_create (GtkWindow *parent)
|
||||
GtkTreeIter iter;
|
||||
gnc_commodity *locale_currency;
|
||||
const gchar *currency_name;
|
||||
QofBook *book;
|
||||
GDate fy_end;
|
||||
gboolean date_is_valid = FALSE;
|
||||
|
||||
@ -1396,11 +1400,14 @@ gnc_preferences_dialog_create (GtkWindow *parent)
|
||||
prefs_table, (GDestroyNotify)g_hash_table_destroy);
|
||||
|
||||
|
||||
book = gnc_get_current_book ();
|
||||
g_date_clear (&fy_end, 1);
|
||||
qof_instance_get (QOF_INSTANCE(book),
|
||||
"fy-end", &fy_end,
|
||||
NULL);
|
||||
if (gnc_current_session_exist())
|
||||
{
|
||||
QofBook *book = gnc_get_current_book ();
|
||||
g_date_clear (&fy_end, 1);
|
||||
qof_instance_get (QOF_INSTANCE(book),
|
||||
"fy-end", &fy_end,
|
||||
NULL);
|
||||
}
|
||||
box = GTK_WIDGET(gtk_builder_get_object (builder,
|
||||
"pref/" GNC_PREFS_GROUP_ACCT_SUMMARY "/" GNC_PREF_START_PERIOD));
|
||||
period = gnc_period_select_new (TRUE);
|
||||
|
@ -494,17 +494,20 @@ _gdc_set_cal_min_size_req(GncDenseCal *dcal)
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
gnc_dense_cal_new(void)
|
||||
gnc_dense_cal_new (GtkWindow *parent)
|
||||
{
|
||||
GncDenseCal *dcal;
|
||||
dcal = g_object_new(GNC_TYPE_DENSE_CAL, NULL);
|
||||
GncDenseCal *dcal = g_object_new (GNC_TYPE_DENSE_CAL, NULL);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW(dcal->transPopup),
|
||||
GTK_WINDOW(parent));
|
||||
|
||||
return GTK_WIDGET(dcal);
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
gnc_dense_cal_new_with_model(GncDenseCalModel *model)
|
||||
gnc_dense_cal_new_with_model (GtkWindow *parent, GncDenseCalModel *model)
|
||||
{
|
||||
GncDenseCal *cal = GNC_DENSE_CAL(gnc_dense_cal_new());
|
||||
GncDenseCal *cal = GNC_DENSE_CAL(gnc_dense_cal_new (parent));
|
||||
gnc_dense_cal_set_model(cal, model);
|
||||
return GTK_WIDGET(cal);
|
||||
}
|
||||
|
@ -117,8 +117,9 @@ typedef struct _gdc_mark_data
|
||||
GList *ourMarks;
|
||||
} gdc_mark_data;
|
||||
|
||||
GtkWidget* gnc_dense_cal_new (void);
|
||||
GtkWidget* gnc_dense_cal_new_with_model (GncDenseCalModel *model);
|
||||
GtkWidget* gnc_dense_cal_new (GtkWindow *parent);
|
||||
GtkWidget* gnc_dense_cal_new_with_model (GtkWindow *parent,
|
||||
GncDenseCalModel *model);
|
||||
GType gnc_dense_cal_get_type (void);
|
||||
|
||||
void gnc_dense_cal_set_model(GncDenseCal *cal, GncDenseCalModel *model);
|
||||
|
@ -123,7 +123,6 @@ gnc_ui_new_user_ok_cb (GtkWidget * widget, gpointer data)
|
||||
else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (new_user->tutorial_button)))
|
||||
{
|
||||
gnc_gnome_help (GTK_WINDOW(new_user->window), HF_GUIDE, NULL);
|
||||
gncp_new_user_finish ();
|
||||
}
|
||||
gtk_widget_destroy (new_user->window);
|
||||
}
|
||||
@ -198,7 +197,6 @@ gnc_ui_new_user_cancel_dialog (GtkWindow *parent)
|
||||
keepshowing = (result == GTK_RESPONSE_YES);
|
||||
|
||||
gnc_set_first_startup (keepshowing);
|
||||
gncp_new_user_finish ();
|
||||
|
||||
g_object_unref(G_OBJECT(builder));
|
||||
gtk_widget_destroy(dialog);
|
||||
|
@ -1329,7 +1329,8 @@ schedXact_editor_create_freq_sel (GncSxEditorDialog *sxed)
|
||||
gtk_box_pack_start (GTK_BOX (b), example_cal_scrolled_win, TRUE, TRUE, 0);
|
||||
|
||||
sxed->dense_cal_model = gnc_dense_cal_store_new (EX_CAL_NUM_MONTHS * 31);
|
||||
sxed->example_cal = GNC_DENSE_CAL (gnc_dense_cal_new_with_model (GNC_DENSE_CAL_MODEL (sxed->dense_cal_model)));
|
||||
sxed->example_cal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model (GTK_WINDOW(sxed->dialog),
|
||||
GNC_DENSE_CAL_MODEL(sxed->dense_cal_model)));
|
||||
g_assert (sxed->example_cal);
|
||||
gnc_dense_cal_set_num_months (sxed->example_cal, EX_CAL_NUM_MONTHS);
|
||||
gnc_dense_cal_set_months_per_col (sxed->example_cal, EX_CAL_MO_PER_COL);
|
||||
|
@ -380,7 +380,8 @@ sxftd_init( SXFromTransInfo *sxfti )
|
||||
|
||||
w = GTK_WIDGET(gtk_builder_get_object(sxfti->builder, "ex_cal_frame" ));
|
||||
sxfti->dense_cal_model = gnc_dense_cal_store_new(num_marks);
|
||||
sxfti->example_cal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model(GNC_DENSE_CAL_MODEL(sxfti->dense_cal_model)));
|
||||
sxfti->example_cal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model (GTK_WINDOW(sxfti->dialog),
|
||||
GNC_DENSE_CAL_MODEL(sxfti->dense_cal_model)));
|
||||
g_object_ref_sink(sxfti->example_cal);
|
||||
|
||||
g_assert(sxfti->example_cal);
|
||||
|
@ -463,12 +463,15 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *swin;
|
||||
GtkWindow *window;
|
||||
|
||||
page = GNC_PLUGIN_PAGE_SX_LIST(plugin_page);
|
||||
priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
|
||||
if (priv->widget != NULL)
|
||||
return priv->widget;
|
||||
|
||||
window = GTK_WINDOW(gnc_plugin_page_get_window (GNC_PLUGIN_PAGE(page)));
|
||||
|
||||
/* Create Vpaned widget for top level */
|
||||
widget = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
|
||||
priv->widget = widget;
|
||||
@ -566,7 +569,7 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
|
||||
|
||||
{
|
||||
priv->dense_cal_model = gnc_sx_instance_dense_cal_adapter_new (GNC_SX_INSTANCE_MODEL(priv->instances));
|
||||
priv->gdcal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model (GNC_DENSE_CAL_MODEL(priv->dense_cal_model)));
|
||||
priv->gdcal = GNC_DENSE_CAL(gnc_dense_cal_new_with_model (window, GNC_DENSE_CAL_MODEL(priv->dense_cal_model)));
|
||||
g_object_ref_sink (priv->gdcal);
|
||||
|
||||
gnc_dense_cal_set_months_per_col (priv->gdcal, 4);
|
||||
|
@ -179,7 +179,7 @@ Gnucash::GnucashCli::start ([[maybe_unused]] int argc, [[maybe_unused]] char **a
|
||||
{
|
||||
if (!m_file_to_load || m_file_to_load->empty())
|
||||
{
|
||||
std::cerr << bl::translate("Missing data file parameter") << "\n\n"
|
||||
std::cerr << _("Missing data file parameter") << "\n\n"
|
||||
<< *m_opt_desc_display.get() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
@ -203,7 +203,7 @@ Gnucash::GnucashCli::start ([[maybe_unused]] int argc, [[maybe_unused]] char **a
|
||||
else if (*m_report_cmd == "show")
|
||||
if (!m_report_name || m_report_name->empty())
|
||||
{
|
||||
std::cerr << bl::translate("Missing --name parameter") << "\n\n"
|
||||
std::cerr << _("Missing --name parameter") << "\n\n"
|
||||
<< *m_opt_desc_display.get() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
@ -211,13 +211,13 @@ Gnucash::GnucashCli::start ([[maybe_unused]] int argc, [[maybe_unused]] char **a
|
||||
return Gnucash::report_show (m_file_to_load, m_report_name);
|
||||
else
|
||||
{
|
||||
std::cerr << bl::format (bl::translate("Unknown report command '{1}'")) % *m_report_cmd << "\n\n"
|
||||
<< *m_opt_desc_display.get() << std::endl;
|
||||
std::cerr << bl::format (std::string{_("Unknown report command '{1}'")}) % *m_report_cmd << "\n\n"
|
||||
<< *m_opt_desc_display.get();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
std::cerr << bl::translate("Missing command or option") << "\n\n"
|
||||
std::cerr << _("Missing command or option") << "\n\n"
|
||||
<< *m_opt_desc_display.get() << std::endl;
|
||||
|
||||
return 1;
|
||||
|
@ -78,12 +78,12 @@ gnc_print_unstable_message(void)
|
||||
{
|
||||
if (!is_development_version) return;
|
||||
|
||||
std::cerr << bl::translate ("This is a development version. It may or may not work.") << "\n"
|
||||
<< bl::translate ("Report bugs and other problems to gnucash-devel@gnucash.org") << "\n"
|
||||
std::cerr << _("This is a development version. It may or may not work.") << "\n"
|
||||
<< _("Report bugs and other problems to gnucash-devel@gnucash.org") << "\n"
|
||||
/* Translators: {1} will be replaced with an URL*/
|
||||
<< bl::format (bl::translate ("You can also lookup and file bug reports at {1}")) % PACKAGE_BUGREPORT << "\n"
|
||||
<< bl::format (std::string{_("You can also lookup and file bug reports at {1}")}) % PACKAGE_BUGREPORT << "\n"
|
||||
/* Translators: {1} will be replaced with an URL*/
|
||||
<< bl::format (bl::translate ("To find the last stable version, please refer to {1}")) % PACKAGE_URL << "\n";
|
||||
<< bl::format (std::string{_("To find the last stable version, please refer to {1}")}) % PACKAGE_URL << "\n";
|
||||
}
|
||||
|
||||
static void
|
||||
@ -100,8 +100,8 @@ Gnucash::gnc_load_scm_config (void)
|
||||
if (!is_system_config_loaded)
|
||||
{
|
||||
/* Translators: Guile is the programming language of the reports */
|
||||
auto msg = bl::translate ("Loading system wide Guile extensions…").str (gnc_get_boost_locale());
|
||||
update_message (msg.c_str());
|
||||
auto msg = _("Loading system wide Guile extensions…");
|
||||
update_message (msg);
|
||||
auto system_config_dir = gnc_path_get_pkgsysconfdir ();
|
||||
auto system_config = g_build_filename (system_config_dir, "config", nullptr);
|
||||
is_system_config_loaded = gfec_try_load (system_config);
|
||||
@ -112,8 +112,8 @@ Gnucash::gnc_load_scm_config (void)
|
||||
static auto is_user_config_loaded = false;
|
||||
if (!is_user_config_loaded)
|
||||
{
|
||||
auto msg = bl::translate ("Loading user specific Guile extensions…").str (gnc_get_boost_locale());
|
||||
update_message (msg.c_str());
|
||||
auto msg = _("Loading user specific Guile extensions…");
|
||||
update_message (msg);
|
||||
auto config_filename = g_build_filename (gnc_userconfig_dir (), "config-user.scm", nullptr);
|
||||
is_user_config_loaded = gfec_try_load (config_filename);
|
||||
g_free (config_filename);
|
||||
@ -210,6 +210,7 @@ Gnucash::CoreApp::CoreApp ()
|
||||
|
||||
gnc_init_boost_locale (localedir);
|
||||
std::cerr.imbue (gnc_get_boost_locale());
|
||||
std::cout.imbue (gnc_get_boost_locale());
|
||||
g_free(localedir);
|
||||
}
|
||||
|
||||
@ -221,9 +222,9 @@ Gnucash::CoreApp::CoreApp (const char* app_name)
|
||||
m_app_name = std::string(app_name);
|
||||
|
||||
// Now that gettext is properly initialized, set our help tagline.
|
||||
m_tagline = bl::translate("- GnuCash, accounting for personal and small business finance").str(gnc_get_boost_locale());
|
||||
m_tagline = _("- GnuCash, accounting for personal and small business finance");
|
||||
m_opt_desc_display = std::make_unique<bpo::options_description>
|
||||
((bl::format (bl::gettext ("{1} [options] [datafile]")) % m_app_name).str() + std::string(" ") + m_tagline);
|
||||
((bl::format (std::string{_("{1} [options] [datafile]")}) % m_app_name).str() + std::string(" ") + m_tagline);
|
||||
add_common_program_options();
|
||||
}
|
||||
|
||||
@ -267,15 +268,15 @@ Gnucash::CoreApp::parse_command_line (int argc, char **argv)
|
||||
|
||||
if (m_show_version)
|
||||
{
|
||||
bl::format rel_fmt (bl::translate ("GnuCash {1}"));
|
||||
bl::format dev_fmt (bl::translate ("GnuCash {1} development version"));
|
||||
bl::format rel_fmt (std::string{_("GnuCash {1}")});
|
||||
bl::format dev_fmt (std::string{_("GnuCash {1} development version")});
|
||||
|
||||
if (is_development_version)
|
||||
std::cout << dev_fmt % gnc_version () << "\n";
|
||||
else
|
||||
std::cout << rel_fmt % gnc_version () << "\n";
|
||||
|
||||
std::cout << bl::translate ("Build ID") << ": " << gnc_build_id () << std::endl;
|
||||
std::cout << _("Build ID") << ": " << gnc_build_id () << "\n";
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -177,28 +177,29 @@ scm_run_gnucash (void *data, [[maybe_unused]] int argc, [[maybe_unused]] char **
|
||||
|
||||
try
|
||||
{
|
||||
auto msg = bl::translate ("Checking Finance::Quote...").str(gnc_get_boost_locale());
|
||||
const auto checking = _("Checking Finance::Quote...");
|
||||
gnc_update_splash_screen (checking, GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
GncQuotes quotes;
|
||||
msg = (bl::format (bl::translate("Found Finance::Quote version {1}.")) % quotes.version()).str(gnc_get_boost_locale());
|
||||
auto found = (bl::format (std::string{_("Found Finance::Quote version {1}.")}) % quotes.version()).str().c_str();
|
||||
auto quote_sources = quotes.sources_as_glist();
|
||||
gnc_quote_source_set_fq_installed (quotes.version().c_str(), quote_sources);
|
||||
g_list_free (quote_sources);
|
||||
gnc_update_splash_screen (msg.c_str(), GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
gnc_update_splash_screen (found, GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
}
|
||||
catch (const GncQuoteException& err)
|
||||
{
|
||||
auto msg = bl::translate("Unable to load Finance::Quote.").str(gnc_get_boost_locale());
|
||||
auto msg = _("Unable to load Finance::Quote.");
|
||||
PINFO ("Attempt to load Finance::Quote returned this error message:\n");
|
||||
PINFO ("%s", err.what());
|
||||
gnc_update_splash_screen (msg.c_str(), GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
gnc_update_splash_screen (msg, GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
}
|
||||
|
||||
gnc_hook_run(HOOK_STARTUP, NULL);
|
||||
|
||||
if (!user_file_spec->nofile && (fn = get_file_to_load (user_file_spec->file_to_load)) && *fn )
|
||||
{
|
||||
auto msg = bl::translate ("Loading data...").str(gnc_get_boost_locale());
|
||||
gnc_update_splash_screen (msg.c_str(), GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
auto msg = _("Loading data...");
|
||||
gnc_update_splash_screen (msg, GNC_SPLASH_PERCENTAGE_UNKNOWN);
|
||||
gnc_file_open_file(gnc_get_splash_screen(), fn, /*open_readonly*/ FALSE);
|
||||
g_free(fn);
|
||||
}
|
||||
@ -327,11 +328,11 @@ Gnucash::Gnucash::start ([[maybe_unused]] int argc, [[maybe_unused]] char **argv
|
||||
// Will be removed in 5.0
|
||||
if (m_add_quotes)
|
||||
{
|
||||
std::cerr << bl::translate ("The '--add-price-quotes' option to gnucash has been deprecated and will be removed in GnuCash 5.0. "
|
||||
"Please use 'gnucash-cli --quotes get <datafile>' instead.") << "\n";
|
||||
std::cerr << _("The '--add-price-quotes' option to gnucash has been deprecated and will be removed in GnuCash 5.0. "
|
||||
"Please use 'gnucash-cli --quotes get <datafile>' instead.") << "\n";
|
||||
if (!m_file_to_load || m_file_to_load->empty())
|
||||
{
|
||||
std::cerr << bl::translate("Missing data file parameter") << "\n\n"
|
||||
std::cerr << _("Missing data file parameter") << "\n\n"
|
||||
<< *m_opt_desc_display.get();
|
||||
return 1;
|
||||
}
|
||||
@ -363,10 +364,10 @@ main(int argc, char ** argv)
|
||||
/* We need to initialize gtk before looking up all modules */
|
||||
if(!gtk_init_check (&argc, &argv))
|
||||
{
|
||||
std::cerr << bl::format (bl::translate ("Run '{1} --help' to see a full list of available command line options.")) % *argv[0]
|
||||
std::cerr << bl::format (std::string{("Run '{1} --help' to see a full list of available command line options.")}) % *argv[0]
|
||||
<< "\n"
|
||||
// Translators: Do not translate $DISPLAY! It is an environment variable for X11
|
||||
<< bl::translate ("Error: could not initialize graphical user interface and option add-price-quotes was not set.\n"
|
||||
<< _("Error: could not initialize graphical user interface and option add-price-quotes was not set.\n"
|
||||
"Perhaps you need to set the $DISPLAY environment variable?");
|
||||
return 1;
|
||||
}
|
||||
|
@ -101,6 +101,8 @@ gint gnc_ab_trans_dialog_run_until_ok(GncABTransDialog *td);
|
||||
*/
|
||||
void gnc_ab_trans_dialog_free(GncABTransDialog *td);
|
||||
|
||||
#if (AQBANKING_VERSION_INT >= 60400)
|
||||
|
||||
/**
|
||||
* Retrieve the current list of transaction templates from the dialog @a
|
||||
* td, unless @a changed is a specified location and the templates have
|
||||
@ -114,7 +116,7 @@ void gnc_ab_trans_dialog_free(GncABTransDialog *td);
|
||||
*/
|
||||
GList *gnc_ab_trans_dialog_get_templ(const GncABTransDialog *td,
|
||||
gboolean *changed);
|
||||
|
||||
#endif
|
||||
/**
|
||||
* Retrieve the widget used as parent.
|
||||
*
|
||||
|
@ -153,21 +153,19 @@ gnc_ab_maketrans(GtkWidget *parent, Account *gnc_acc,
|
||||
|
||||
/* Let the user enter the values */
|
||||
result = gnc_ab_trans_dialog_run_until_ok(td);
|
||||
|
||||
templates = gnc_ab_trans_dialog_get_templ(td, &changed);
|
||||
|
||||
#if (AQBANKING_VERSION_INT >= 60400)
|
||||
templates = gnc_ab_trans_dialog_get_templ(td, &changed);
|
||||
if (trans_type != SEPA_INTERNAL_TRANSFER && changed)
|
||||
#else
|
||||
if (changed)
|
||||
#endif
|
||||
{
|
||||
/* Save the templates */
|
||||
save_templates(parent, gnc_acc, templates,
|
||||
(result == GNC_RESPONSE_NOW));
|
||||
}
|
||||
g_list_free(templates);
|
||||
templates = NULL;
|
||||
|
||||
templates = NULL;
|
||||
#endif
|
||||
|
||||
if (result != GNC_RESPONSE_NOW && result != GNC_RESPONSE_LATER)
|
||||
{
|
||||
aborted = TRUE;
|
||||
|
@ -2122,7 +2122,7 @@ CsvImpTransAssist::assist_summary_page_prepare ()
|
||||
try
|
||||
{
|
||||
/* Translators: {1} will be replaced with a filename */
|
||||
text += (bl::format (bl::translate ("The transactions were imported from file '{1}'.")) % m_file_name).str(gnc_get_boost_locale());
|
||||
text += (bl::format (std::string{_("The transactions were imported from file '{1}'.")}) % m_file_name).str();
|
||||
text += "</b></span>";
|
||||
}
|
||||
catch (const bl::conv::conversion_error& err)
|
||||
|
@ -235,16 +235,16 @@ void GncImportPrice::set (GncPricePropType prop_type, const std::string& value,
|
||||
}
|
||||
catch (const std::invalid_argument& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_price_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_price_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
}
|
||||
catch (const std::out_of_range& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_price_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_price_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
|
@ -289,16 +289,16 @@ void GncPreTrans::set (GncTransPropType prop_type, const std::string& value)
|
||||
}
|
||||
catch (const std::invalid_argument& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
}
|
||||
catch (const std::out_of_range& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
@ -508,16 +508,16 @@ void GncPreSplit::set (GncTransPropType prop_type, const std::string& value)
|
||||
}
|
||||
catch (const std::invalid_argument& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
}
|
||||
catch (const std::out_of_range& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
@ -571,16 +571,16 @@ void GncPreSplit::add (GncTransPropType prop_type, const std::string& value)
|
||||
}
|
||||
catch (const std::invalid_argument& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
}
|
||||
catch (const std::out_of_range& e)
|
||||
{
|
||||
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
|
||||
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
|
||||
auto err_str = (bl::format (std::string{_("Column '{1}' could not be understood.\n")}) %
|
||||
std::string{_(gnc_csv_col_type_strs[prop_type])}).str() +
|
||||
e.what();
|
||||
m_errors.emplace(prop_type, err_str);
|
||||
throw std::invalid_argument (err_str);
|
||||
|
@ -859,6 +859,30 @@ notes_append (Transaction* selected_match_trans, gchar* new_notes)
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
static char*
|
||||
maybe_append_string (const char* match_string, const char* imp_string)
|
||||
{
|
||||
char *norm_match_string, *norm_imp_string, *retval = NULL;
|
||||
|
||||
if (!(match_string && *match_string))
|
||||
return g_strdup(imp_string);
|
||||
|
||||
if (!(imp_string && *imp_string))
|
||||
return retval;
|
||||
|
||||
norm_match_string = g_utf8_normalize (match_string, -1, G_NORMALIZE_ALL);
|
||||
norm_imp_string = g_utf8_normalize (imp_string, -1, G_NORMALIZE_ALL);
|
||||
|
||||
if (g_utf8_strlen (norm_imp_string, -1) > g_utf8_strlen (norm_match_string, -1) ||
|
||||
!strstr (norm_match_string, norm_imp_string))
|
||||
retval = g_strconcat(match_string, "|", imp_string, NULL);
|
||||
|
||||
g_free (norm_match_string);
|
||||
g_free (norm_imp_string);
|
||||
return retval;
|
||||
|
||||
}
|
||||
|
||||
/* Append or replace transaction description and notes
|
||||
* depending on the Append checkbox
|
||||
*/
|
||||
@ -868,52 +892,25 @@ update_desc_and_notes (const GNCImportTransInfo* trans_info)
|
||||
GNCImportMatchInfo* selected_match =
|
||||
gnc_import_TransInfo_get_selected_match (trans_info);
|
||||
Transaction* imp_trans = gnc_import_TransInfo_get_trans (trans_info);
|
||||
Transaction* match_trans = selected_match->trans;
|
||||
|
||||
if (trans_info->append_text)
|
||||
{
|
||||
gchar *desc_imported, *desc_matched, *note_imported, *note_matched;
|
||||
const gchar* raw_str = xaccTransGetDescription (imp_trans);
|
||||
gchar *repl_str;
|
||||
|
||||
desc_imported =
|
||||
raw_str ? g_utf8_normalize (raw_str, -1, G_NORMALIZE_ALL) : NULL;
|
||||
raw_str = xaccTransGetDescription (selected_match->trans);
|
||||
desc_matched =
|
||||
raw_str ? g_utf8_normalize (raw_str, -1, G_NORMALIZE_ALL) : NULL;
|
||||
raw_str = xaccTransGetNotes (imp_trans);
|
||||
note_imported =
|
||||
raw_str ? g_utf8_normalize (raw_str, -1, G_NORMALIZE_ALL) : NULL;
|
||||
raw_str = xaccTransGetNotes (selected_match->trans);
|
||||
note_matched =
|
||||
raw_str ? g_utf8_normalize (raw_str, -1, G_NORMALIZE_ALL) : NULL;
|
||||
repl_str =
|
||||
maybe_append_string (xaccTransGetDescription(match_trans),
|
||||
xaccTransGetDescription(imp_trans));
|
||||
if (repl_str)
|
||||
xaccTransSetDescription(match_trans, repl_str);
|
||||
g_free (repl_str);
|
||||
|
||||
// Append if desc_imported not already in desc_matched
|
||||
if (desc_imported &&
|
||||
(!desc_matched ||
|
||||
g_utf8_strlen (desc_imported, -1) > g_utf8_strlen (desc_matched, -1) ||
|
||||
!strstr (desc_matched, desc_imported)))
|
||||
{
|
||||
if (desc_matched && *desc_matched)
|
||||
desc_append (selected_match->trans, desc_imported);
|
||||
else
|
||||
xaccTransSetDescription (selected_match->trans, desc_imported);
|
||||
}
|
||||
|
||||
// Append if note_imported not already in note_matched
|
||||
if (note_imported &&
|
||||
(!note_matched ||
|
||||
g_utf8_strlen (note_imported, -1) > g_utf8_strlen (note_matched, -1) ||
|
||||
!strstr (note_matched, note_imported)))
|
||||
{
|
||||
if (note_matched && *note_matched)
|
||||
notes_append (selected_match->trans, note_imported);
|
||||
else
|
||||
xaccTransSetNotes (selected_match->trans, note_imported);
|
||||
}
|
||||
|
||||
g_free(desc_imported);
|
||||
g_free(desc_matched);
|
||||
g_free(note_imported);
|
||||
g_free(note_matched);
|
||||
repl_str =
|
||||
maybe_append_string (xaccTransGetNotes(match_trans),
|
||||
xaccTransGetNotes(imp_trans));
|
||||
if (repl_str)
|
||||
xaccTransSetNotes (match_trans, repl_str);
|
||||
g_free (repl_str);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1187,6 +1184,22 @@ static gint check_trans_online_id(Transaction *trans1, void *user_data)
|
||||
return retval;
|
||||
}
|
||||
|
||||
static GHashTable*
|
||||
hash_account_online_ids (Account *account)
|
||||
{
|
||||
GHashTable* acct_hash = g_hash_table_new_full
|
||||
(g_str_hash, g_str_equal, g_free, NULL);
|
||||
for (GList *n = xaccAccountGetSplitList (account) ; n; n = n->next)
|
||||
{
|
||||
if (gnc_import_split_has_online_id (n->data))
|
||||
{
|
||||
char *id = gnc_import_get_split_online_id (n->data);
|
||||
g_hash_table_insert (acct_hash, (void*) id, GINT_TO_POINTER (1));
|
||||
}
|
||||
}
|
||||
return acct_hash;
|
||||
}
|
||||
|
||||
/** Checks whether the given transaction's online_id already exists in
|
||||
its parent account. */
|
||||
gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_hash)
|
||||
@ -1210,19 +1223,8 @@ gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_ha
|
||||
// test below will be fast if we have many transactions to import.
|
||||
dest_acct = xaccSplitGetAccount (source_split);
|
||||
if (!g_hash_table_contains (acct_id_hash, dest_acct))
|
||||
{
|
||||
GHashTable* new_hash = g_hash_table_new_full
|
||||
(g_str_hash, g_str_equal, g_free, NULL);
|
||||
g_hash_table_insert (acct_id_hash, dest_acct, new_hash);
|
||||
for (GList *n = xaccAccountGetSplitList (dest_acct) ; n; n=n->next)
|
||||
{
|
||||
if (gnc_import_split_has_online_id (n->data))
|
||||
{
|
||||
char *id = gnc_import_get_split_online_id (n->data);
|
||||
g_hash_table_insert (new_hash, (void*) id, GINT_TO_POINTER (1));
|
||||
}
|
||||
}
|
||||
}
|
||||
g_hash_table_insert (acct_id_hash, dest_acct,
|
||||
hash_account_online_ids (dest_acct));
|
||||
online_id_exists = g_hash_table_contains (g_hash_table_lookup (acct_id_hash, dest_acct),
|
||||
source_online_id);
|
||||
|
||||
|
@ -2189,21 +2189,6 @@ refresh_model_row (GNCImportMainMatcher *gui,
|
||||
gtk_tree_selection_unselect_all (selection);
|
||||
}
|
||||
|
||||
void
|
||||
gnc_gen_trans_list_add_trans (GNCImportMainMatcher *gui, Transaction *trans)
|
||||
{
|
||||
Account* acc = NULL;
|
||||
Split* split = NULL;
|
||||
int i=0;
|
||||
|
||||
split = xaccTransGetSplit (trans, 0);
|
||||
acc = xaccSplitGetAccount (split);
|
||||
defer_bal_computation (gui, acc);
|
||||
|
||||
gnc_gen_trans_list_add_trans_with_ref_id (gui, trans, 0);
|
||||
return;
|
||||
}/* end gnc_import_add_trans() */
|
||||
|
||||
void
|
||||
gnc_gen_trans_list_show_reconcile_after_close_button (GNCImportMainMatcher *info,
|
||||
gboolean reconcile_after_close,
|
||||
@ -2219,6 +2204,22 @@ gnc_gen_trans_list_get_reconcile_after_close_button (GNCImportMainMatcher *info)
|
||||
return info->reconcile_after_close;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
gnc_gen_trans_list_add_trans (GNCImportMainMatcher *gui, Transaction *trans)
|
||||
{
|
||||
Account* acc = NULL;
|
||||
Split* split = NULL;
|
||||
int i=0;
|
||||
|
||||
split = xaccTransGetSplit (trans, 0);
|
||||
acc = xaccSplitGetAccount (split);
|
||||
defer_bal_computation (gui, acc);
|
||||
|
||||
gnc_gen_trans_list_add_trans_with_ref_id (gui, trans, 0);
|
||||
return;
|
||||
}/* end gnc_import_add_trans() */
|
||||
|
||||
void
|
||||
gnc_gen_trans_list_add_trans_with_ref_id (GNCImportMainMatcher *gui, Transaction *trans, guint32 ref_id)
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -239,7 +239,6 @@ gnc_quickfill_cell_modify_verify (BasicCell *_cell,
|
||||
|
||||
*start_selection = newval_chars;
|
||||
*end_selection = -1;
|
||||
*cursor_position += change_chars;
|
||||
|
||||
gnc_basic_cell_set_value_internal (&cell->cell, match_str);
|
||||
}
|
||||
|
@ -1833,6 +1833,13 @@ gnucash_sheet_key_press_event_internal (GtkWidget *widget, GdkEventKey *event)
|
||||
/* Followed by the input method */
|
||||
if (gtk_entry_im_context_filter_keypress (GTK_ENTRY(sheet->entry), event))
|
||||
{
|
||||
#if !(defined(__APPLE__) || defined(__WIN32__))
|
||||
/* There's sometimes a timing issue when running under KDE
|
||||
* Plasma where this call removes the selection. This 1ms
|
||||
* sleep prevents it.
|
||||
*/
|
||||
usleep(1000);
|
||||
#endif
|
||||
/* Restore the saved cursor position in case GtkEntry's IMContext
|
||||
* handlers messed with it after we set it in our insert_cb.
|
||||
*/
|
||||
|
@ -504,7 +504,7 @@ balance at a given time"))
|
||||
(list gnc:pagename-accounts optname-accounts
|
||||
(cons acct subaccts))
|
||||
(list gnc:pagename-accounts optname-levels
|
||||
(+ 1 tree-depth))
|
||||
(min 6 (+ 1 tree-depth)))
|
||||
(list gnc:pagename-general
|
||||
gnc:optname-reportname
|
||||
((if show-fullname?
|
||||
|
@ -43,6 +43,7 @@
|
||||
|
||||
(define (test-average-balance)
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(bank (cdr (assoc "Bank" account-alist)))
|
||||
|
@ -49,7 +49,9 @@
|
||||
(gnc-commodity-get-namespace (gnc-default-report-currency))
|
||||
sym))
|
||||
|
||||
(define USD (gnc-default-report-currency)) ;default currency should be USD because LC_ALL="C"
|
||||
(define USD
|
||||
(let ((book (gnc-get-current-book))) ; ensure the book is set
|
||||
(gnc-default-report-currency))) ;default currency should be USD because LC_ALL="C"
|
||||
(define GBP (mnemonic->commodity "GBP"))
|
||||
(define FUNDS (gnc-commodity-new (gnc-get-current-book)
|
||||
"Funds" ;fullname
|
||||
@ -91,6 +93,7 @@
|
||||
(define (create-test-data)
|
||||
;; This function will perform implementation testing on the transaction report.
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(bank1savings (cdr (assoc "Savings" account-alist)))
|
||||
(bank1bonds (cdr (assoc "Bonds" account-alist)))
|
||||
|
@ -58,7 +58,8 @@
|
||||
|
||||
;; Test two transactions from income to two different assets in two different days
|
||||
(define (test-in-txn)
|
||||
(let* ((options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(env (create-test-env))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||
@ -100,7 +101,8 @@
|
||||
|
||||
;; Test two transactions from two different assets to expense in two different days
|
||||
(define (test-out-txn)
|
||||
(let* ((options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(env (create-test-env))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||
@ -149,7 +151,8 @@
|
||||
;; Test null transaction (transaction between assets)
|
||||
;; This test is identical to test-in-txn but with an extra transaction between assets
|
||||
(define (test-null-txn)
|
||||
(let* ((options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options cashflow-barchart-uuid))
|
||||
(env (create-test-env))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||
|
@ -71,6 +71,7 @@
|
||||
(define (null-test variant)
|
||||
;; This null-test tests for the presence of report.
|
||||
(let* ((uuid (variant->uuid variant))
|
||||
(book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(test-assert (format #f "null-test: ~a" variant)
|
||||
(options->render uuid options "null-test"))))
|
||||
@ -112,7 +113,8 @@
|
||||
(let ((txn (env-transfer env 03 01 1970 equity income 25)))
|
||||
(xaccTransSetIsClosingTxn txn #t))
|
||||
|
||||
(let* ((options (gnc:make-report-options (variant->uuid variant))))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options (variant->uuid variant))))
|
||||
(set-option! options "General" "Start Date" (cons 'absolute (gnc-dmy2time64 1 1 1970)))
|
||||
(set-option! options "General" "End Date" (cons 'absolute (gnc-dmy2time64 15 4 1970)))
|
||||
(set-option! options "Accounts" "Accounts" (list income bank1 bank2 bank3))
|
||||
@ -160,7 +162,8 @@
|
||||
(YEAR (gnc:time64-get-year (gnc:get-today))))
|
||||
|
||||
(define (default-testing-options)
|
||||
(let ((options (gnc:make-report-options (variant->uuid variant))))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options (variant->uuid variant))))
|
||||
|
||||
(unless (memq variant '(liability-piechart asset-piechart stock-piechart))
|
||||
(set-option! options "General" "Start Date" '(relative . start-cal-year)))
|
||||
@ -182,7 +185,8 @@
|
||||
(env-transfer env 10 07 YEAR expense bank 11)
|
||||
(env-transfer env 10 09 YEAR income bank 8)
|
||||
|
||||
(let* ((options (default-testing-options)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (default-testing-options)))
|
||||
(test-assert (format #f "basic report exists: ~a" variant)
|
||||
(options->render uuid options (format #f "test-null ~a default options" variant))))
|
||||
|
||||
@ -196,7 +200,8 @@
|
||||
(env-create-transaction env date bank income idx)
|
||||
(loop (incdate date DayDelta) (1+ idx))))
|
||||
(when (eq? variant 'net-worth-barchart)
|
||||
(let* ((options (default-testing-options)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (default-testing-options)))
|
||||
(set-option! options "General" "Start Date" (cons 'absolute (gnc-dmy2time64 15 1 1970)))
|
||||
(set-option! options "General" "End Date" (cons 'absolute (gnc-dmy2time64 15 3 1970)))
|
||||
(set-option! options "General" "Step Size" 'DayDelta)
|
||||
@ -214,7 +219,8 @@
|
||||
(sxml->table-row-col sxml 1 -1 #f)))))
|
||||
|
||||
(when (eq? variant 'income-expense-barchart)
|
||||
(let* ((options (default-testing-options)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (default-testing-options)))
|
||||
(set-option! options "General" "Start Date" (cons 'absolute (gnc-dmy2time64 15 1 1970)))
|
||||
(set-option! options "General" "End Date" (cons 'absolute (gnc-dmy2time64 15 3 1970)))
|
||||
(set-option! options "General" "Step Size" 'DayDelta)
|
||||
|
@ -34,7 +34,8 @@
|
||||
|
||||
(define (null-test)
|
||||
;; This null-test tests for the presence of report.
|
||||
(let ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(test-assert "null-test"
|
||||
(options->sxml uuid options "null-test"))))
|
||||
|
||||
|
@ -76,6 +76,7 @@
|
||||
(list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE)))))
|
||||
;; This function will perform implementation testing on the GST report.
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(bank (cdr (assoc "Bank" account-alist)))
|
||||
(income (cdr (assoc "Income" account-alist)))
|
||||
@ -224,6 +225,7 @@
|
||||
(list "EU Reverse VAT Expenses"))))
|
||||
;; This function will perform implementation testing on the VAT report.
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(account-alist (env-create-account-structure-alist env structure))
|
||||
(YEAR (gnc:time64-get-year (gnc:get-today))))
|
||||
|
||||
|
@ -60,7 +60,8 @@
|
||||
|
||||
(define (null-test variant uuid)
|
||||
;; This null-test tests for the presence of report.
|
||||
(let ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(test-assert (format #f "null-test ~a" variant)
|
||||
(options->sxml uuid options "null-test"))))
|
||||
|
||||
@ -97,6 +98,7 @@
|
||||
|
||||
(define (advanced-tests)
|
||||
(test-group-with-cleanup "advanced-portfolio-tests"
|
||||
;; let* required here to ensure that the book is created before creating the options.
|
||||
(let* ((account-alist (create-stock-test-data))
|
||||
(options (gnc:make-report-options advanced-uuid)))
|
||||
(let ((sxml (options->sxml advanced-uuid options "basic average")))
|
||||
|
@ -74,11 +74,13 @@
|
||||
|
||||
;; No real test here, just confirm that no exceptions are thrown
|
||||
(define (null-test uuid)
|
||||
(let ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(gnc:options->render uuid options "test-standard-category-report" "null-test")))
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((income-options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(income-options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -113,7 +115,8 @@
|
||||
(teardown)))
|
||||
|
||||
(define (single-txn-test-average uuid)
|
||||
(let* ((income-options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(income-options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(curr (gnc-default-report-currency))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET curr))
|
||||
@ -206,7 +209,8 @@
|
||||
(teardown))
|
||||
|
||||
(define (multi-acct-test expense-report-uuid)
|
||||
(let* ((expense-options (gnc:make-report-options expense-report-uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(expense-options (gnc:make-report-options expense-report-uuid))
|
||||
(env (create-test-env))
|
||||
(expense-accounts (env-expense-account-structure env))
|
||||
(asset-accounts (env-create-account-structure
|
||||
|
@ -51,11 +51,13 @@
|
||||
|
||||
;; Just prove that the report exists.
|
||||
(define (null-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(gnc:options->render uuid options "test-standard-net-barchart" "null-test")))
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -99,7 +101,8 @@
|
||||
(test-end "single-txn-test"))))
|
||||
|
||||
(define (two-txn-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -151,7 +154,8 @@
|
||||
|
||||
|
||||
(define (two-txn-test-2 uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -199,7 +203,8 @@
|
||||
sxml))))
|
||||
|
||||
(define (two-txn-test-income uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -248,7 +253,8 @@
|
||||
|
||||
|
||||
(define (closing-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
|
@ -48,11 +48,13 @@
|
||||
|
||||
;; Just prove that the report exists.
|
||||
(define (null-test uuid)
|
||||
(let ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(gnc:options->render uuid options "test-standard-net-linechart" "null-test")))
|
||||
|
||||
(define (single-txn-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -94,7 +96,8 @@
|
||||
|
||||
|
||||
(define (two-txn-test uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
@ -147,7 +150,8 @@
|
||||
|
||||
|
||||
(define (two-txn-test-2 uuid)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(env (create-test-env))
|
||||
(my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
|
||||
(gnc-default-report-currency)))
|
||||
|
@ -64,7 +64,8 @@
|
||||
(define optionslist '())
|
||||
(gnc:report-templates-for-each
|
||||
(lambda (report-id template)
|
||||
(let* ((options-generator (gnc:report-template-options-generator template))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options-generator (gnc:report-template-options-generator template))
|
||||
(options (options-generator))
|
||||
(report-options-tested '()))
|
||||
(gnc:options-for-each
|
||||
@ -115,7 +116,8 @@
|
||||
(format #t "[pass] ~a\n" (string-join option-summary ","))))))
|
||||
|
||||
(define (simple-stress-test report-name uuid report-options)
|
||||
(let ((options (gnc:make-report-options uuid)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid)))
|
||||
(test-assert (format #f "basic test ~a" report-name)
|
||||
(gnc:options->render uuid options (string-append "stress-" report-name) "test"))
|
||||
(format #t "Testing SIMPLE combinations for:\n~a" report-name)
|
||||
@ -153,7 +155,8 @@
|
||||
report-options)))))))
|
||||
|
||||
(define (combinatorial-stress-test report-name uuid report-options)
|
||||
(let* ((options (gnc:make-report-options uuid))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(options (gnc:make-report-options uuid))
|
||||
(render #f))
|
||||
|
||||
(test-assert (format #f "basic test ~a" report-name)
|
||||
@ -265,8 +268,9 @@
|
||||
(run-tests "on a populated book" optionslist stress-test-runner))
|
||||
|
||||
(define (run-test)
|
||||
(let ((optionslist (generate-optionslist))
|
||||
(stress-test-runner (get-stress-test-runner)))
|
||||
(let* ((book (gnc-get-current-book))
|
||||
(optionslist (generate-optionslist))
|
||||
(stress-test-runner (get-stress-test-runner)))
|
||||
(test-runner-factory gnc:test-runner)
|
||||
(test-begin "stress options")
|
||||
(tests optionslist stress-test-runner)
|
||||
|
@ -38,6 +38,7 @@
|
||||
(define (test-account-get-trans-type-splits-interval)
|
||||
(test-group-with-cleanup "test-account-get-trans-type-splits-interval"
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(ts-now (gnc-localtime (current-time)))
|
||||
(test-day (tm:mday ts-now))
|
||||
(test-month (+ 1 (tm:mon ts-now)))
|
||||
@ -287,6 +288,7 @@
|
||||
|
||||
(define (create-test-data)
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(account-alist (env-create-account-structure-alist env (structure)))
|
||||
(asset (cdr (assoc "Asset" account-alist)))
|
||||
(bank (cdr (assoc "Bank" account-alist)))
|
||||
@ -589,6 +591,7 @@
|
||||
(define (test-get-account-at-dates)
|
||||
(test-group-with-cleanup "test-get-balance-at-dates"
|
||||
(let* ((env (create-test-env))
|
||||
(book (gnc-get-current-book))
|
||||
(structure (list "Root" (list (cons 'type ACCT-TYPE-ASSET))
|
||||
(list "Asset"
|
||||
(list "Bank1")
|
||||
|
@ -106,7 +106,7 @@ static GSettings * gnc_gsettings_get_settings_ptr (const gchar *schema_str)
|
||||
{
|
||||
auto schema_source {g_settings_schema_source_get_default()};
|
||||
auto schema {g_settings_schema_source_lookup(schema_source, full_name,
|
||||
FALSE)};
|
||||
TRUE)};
|
||||
gset = g_settings_new_full (schema, nullptr, nullptr);
|
||||
DEBUG ("Created gsettings object %p for schema %s", gset, full_name);
|
||||
if (G_IS_SETTINGS(gset))
|
||||
|
@ -428,7 +428,9 @@ gnc_get_current_root_account (void)
|
||||
gnc_commodity_table *
|
||||
gnc_get_current_commodities (void)
|
||||
{
|
||||
return gnc_commodity_table_get_table (gnc_get_current_book ());
|
||||
if (gnc_current_session_exist())
|
||||
return gnc_commodity_table_get_table (gnc_get_current_book ());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gchar *
|
||||
@ -776,7 +778,8 @@ gnc_default_currency_common (gchar *requested_currency,
|
||||
GNC_COMMODITY_NS_CURRENCY,
|
||||
requested_currency);
|
||||
|
||||
if (gnc_prefs_get_bool (section, GNC_PREF_CURRENCY_CHOICE_OTHER))
|
||||
if (gnc_current_session_exist() &&
|
||||
gnc_prefs_get_bool (section, GNC_PREF_CURRENCY_CHOICE_OTHER))
|
||||
{
|
||||
mnemonic = gnc_prefs_get_string(section, GNC_PREF_CURRENCY_OTHER);
|
||||
currency = gnc_commodity_table_lookup(gnc_get_current_commodities(),
|
||||
@ -788,11 +791,13 @@ gnc_default_currency_common (gchar *requested_currency,
|
||||
|
||||
if (!currency)
|
||||
currency = gnc_locale_default_currency ();
|
||||
|
||||
if (currency)
|
||||
{
|
||||
mnemonic = requested_currency;
|
||||
g_free(mnemonic);
|
||||
}
|
||||
|
||||
return currency;
|
||||
}
|
||||
|
||||
@ -2198,7 +2203,7 @@ unichar_is_cntrl (gunichar uc)
|
||||
gchar *
|
||||
gnc_filter_text_for_control_chars (const gchar *text)
|
||||
{
|
||||
gchar *normal_text, *nt;
|
||||
const char *ch;
|
||||
GString *filtered;
|
||||
gboolean cntrl = FALSE;
|
||||
gboolean text_found = FALSE;
|
||||
@ -2209,20 +2214,18 @@ gnc_filter_text_for_control_chars (const gchar *text)
|
||||
if (!g_utf8_validate (text, -1, NULL))
|
||||
return NULL;
|
||||
|
||||
normal_text = g_utf8_normalize (text, -1, G_NORMALIZE_ALL_COMPOSE);
|
||||
filtered = g_string_sized_new (strlen (text) + 1);
|
||||
|
||||
filtered = g_string_sized_new (strlen (normal_text) + 1);
|
||||
ch = text;
|
||||
|
||||
nt = normal_text;
|
||||
|
||||
while (*nt)
|
||||
while (*ch)
|
||||
{
|
||||
gunichar uc = g_utf8_get_char (nt);
|
||||
gunichar uc = g_utf8_get_char (ch);
|
||||
|
||||
// check for starting with control characters
|
||||
if (unichar_is_cntrl (uc) && !text_found)
|
||||
{
|
||||
nt = g_utf8_next_char (nt);
|
||||
ch = g_utf8_next_char (ch);
|
||||
continue;
|
||||
}
|
||||
// check for alpha, num and punctuation
|
||||
@ -2235,18 +2238,17 @@ gnc_filter_text_for_control_chars (const gchar *text)
|
||||
if (unichar_is_cntrl (uc))
|
||||
cntrl = TRUE;
|
||||
|
||||
nt = g_utf8_next_char (nt);
|
||||
ch = g_utf8_next_char (ch);
|
||||
|
||||
if (cntrl) // if control characters in text replace with space
|
||||
{
|
||||
gunichar uc2 = g_utf8_get_char (nt);
|
||||
gunichar uc2 = g_utf8_get_char (ch);
|
||||
|
||||
if (!unichar_is_cntrl (uc2))
|
||||
filtered = g_string_append_unichar (filtered, ' ');
|
||||
}
|
||||
cntrl = FALSE;
|
||||
}
|
||||
g_free (normal_text);
|
||||
return g_string_free (filtered, FALSE);
|
||||
}
|
||||
|
||||
|
@ -671,35 +671,35 @@ static std::string migrate_gnc_datahome()
|
||||
|
||||
/* Step 3: inform the user of additional changes */
|
||||
if (full_copy || !succeeded.empty() || !conf_exist_vec.empty() || !failed.empty())
|
||||
migration_msg << bl::translate ("Notice") << std::endl << std::endl;
|
||||
migration_msg << _("Notice") << std::endl << std::endl;
|
||||
|
||||
if (full_copy)
|
||||
{
|
||||
migration_msg
|
||||
<< bl::translate ("Your gnucash metadata has been migrated.") << std::endl << std::endl
|
||||
<< _("Your gnucash metadata has been migrated.") << std::endl << std::endl
|
||||
/* Translators: this refers to a directory name. */
|
||||
<< bl::translate ("Old location:") << " " << old_dir.string() << std::endl
|
||||
<< _("Old location:") << " " << old_dir.string() << std::endl
|
||||
/* Translators: this refers to a directory name. */
|
||||
<< bl::translate ("New location:") << " " << gnc_userdata_home.string() << std::endl << std::endl
|
||||
<< _("New location:") << " " << gnc_userdata_home.string() << std::endl << std::endl
|
||||
// Translators {1} will be replaced with the package name (typically Gnucash) at runtime
|
||||
<< bl::format (bl::translate ("If you no longer intend to run {1} 2.6.x or older on this system you can safely remove the old directory."))
|
||||
<< bl::format (std::string{_("If you no longer intend to run {1} 2.6.x or older on this system you can safely remove the old directory.")})
|
||||
% PACKAGE_NAME;
|
||||
}
|
||||
|
||||
if (full_copy &&
|
||||
(!succeeded.empty() || !conf_exist_vec.empty() || !failed.empty()))
|
||||
migration_msg << std::endl << std::endl
|
||||
<< bl::translate ("In addition:");
|
||||
<< _("In addition:");
|
||||
|
||||
if (!succeeded.empty())
|
||||
{
|
||||
migration_msg << std::endl << std::endl;
|
||||
if (full_copy)
|
||||
migration_msg << bl::format (bl::translate ("The following file has been copied to {1} instead:",
|
||||
migration_msg << bl::format (std::string{ngettext("The following file has been copied to {1} instead:",
|
||||
"The following files have been copied to {1} instead:",
|
||||
succeeded.size())) % gnc_userconfig_home.string().c_str();
|
||||
succeeded.size())}) % gnc_userconfig_home.string().c_str();
|
||||
else
|
||||
migration_msg << bl::format (bl::translate ("The following file in {1} has been renamed:"))
|
||||
migration_msg << bl::format (std::string{_("The following file in {1} has been renamed:")})
|
||||
% gnc_userconfig_home.string().c_str();
|
||||
|
||||
migration_msg << std::endl;
|
||||
@ -708,8 +708,8 @@ static std::string migrate_gnc_datahome()
|
||||
}
|
||||
if (!conf_exist_vec.empty())
|
||||
{
|
||||
migration_msg << std::endl << std::endl
|
||||
<< bl::translate ("The following file has become obsolete and will be ignored:",
|
||||
migration_msg << "\n\n"
|
||||
<< ngettext("The following file has become obsolete and will be ignored:",
|
||||
"The following files have become obsolete and will be ignored:",
|
||||
conf_exist_vec.size())
|
||||
<< std::endl;
|
||||
@ -719,9 +719,9 @@ static std::string migrate_gnc_datahome()
|
||||
if (!failed.empty())
|
||||
{
|
||||
migration_msg << std::endl << std::endl
|
||||
<< bl::format (bl::translate ("The following file could not be moved to {1}:",
|
||||
<< bl::format (std::string{ngettext("The following file could not be moved to {1}:",
|
||||
"The following files could not be moved to {1}:",
|
||||
failed.size())) % gnc_userconfig_home.string().c_str()
|
||||
failed.size())}) % gnc_userconfig_home.string().c_str()
|
||||
<< std::endl;
|
||||
for (auto failed_file : failed)
|
||||
migration_msg << "- " << failed_file << std::endl;
|
||||
|
@ -624,6 +624,8 @@ void
|
||||
xaccSplitCopyKvp (const Split *from, Split *to)
|
||||
{
|
||||
qof_instance_copy_kvp (QOF_INSTANCE (to), QOF_INSTANCE (from));
|
||||
/* But not the online-id */
|
||||
qof_instance_set (QOF_INSTANCE (to), "online-id", NULL, NULL);
|
||||
}
|
||||
|
||||
/*################## Added for Reg2 #################*/
|
||||
|
@ -693,6 +693,9 @@ xaccTransClone (const Transaction *from)
|
||||
xaccTransBeginEdit (to);
|
||||
qof_instance_copy_kvp (QOF_INSTANCE (to), QOF_INSTANCE (from));
|
||||
|
||||
/* But not the online-id! */
|
||||
qof_instance_set (QOF_INSTANCE (to), "online-id", NULL, NULL);
|
||||
|
||||
for (GList* lfrom = from->splits, *lto = to->splits; lfrom && lto;
|
||||
lfrom = g_list_next (lfrom), lto = g_list_next (lto))
|
||||
xaccSplitCopyKvp (lfrom->data, lto->data);
|
||||
|
490
po/en_AU.po
490
po/en_AU.po
File diff suppressed because it is too large
Load Diff
490
po/en_GB.po
490
po/en_GB.po
File diff suppressed because it is too large
Load Diff
490
po/en_NZ.po
490
po/en_NZ.po
File diff suppressed because it is too large
Load Diff
484
po/es_NI.po
484
po/es_NI.po
File diff suppressed because it is too large
Load Diff
484
po/kok@latin.po
484
po/kok@latin.po
File diff suppressed because it is too large
Load Diff
116
po/mk.po
116
po/mk.po
@ -6,10 +6,10 @@
|
||||
# Vesna Micajkova <vmicajkova@institutpraktikum.mk>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GnuCash 4.12\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
||||
"cgi?product=GnuCash&component=Translations\n"
|
||||
"POT-Creation-Date: 2022-11-08 02:22+0100\n"
|
||||
"Project-Id-Version: GnuCash 4.13-pre1\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
|
||||
"product=GnuCash&component=Translations\n"
|
||||
"POT-Creation-Date: 2022-12-04 19:47-0800\n"
|
||||
"PO-Revision-Date: 2022-11-25 16:48+0000\n"
|
||||
"Last-Translator: Vesna Micajkova <vmicajkova@institutpraktikum.mk>\n"
|
||||
"Language-Team: Macedonian <https://hosted.weblate.org/projects/gnucash/"
|
||||
@ -1031,7 +1031,7 @@ msgstr ""
|
||||
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3000
|
||||
#: gnucash/gtkbuilder/dialog-bi-import-gui.glade:147
|
||||
#: gnucash/report/reports/standard/invoice.scm:774
|
||||
#: libgnucash/engine/Account.cpp:176 libgnucash/engine/gncInvoice.c:1116
|
||||
#: libgnucash/engine/Account.cpp:176 libgnucash/engine/gncInvoice.c:1119
|
||||
msgid "Bill"
|
||||
msgstr ""
|
||||
|
||||
@ -1062,7 +1062,7 @@ msgstr ""
|
||||
#: gnucash/report/reports/standard/taxinvoice.scm:165
|
||||
#: gnucash/report/reports/support/receipt.eguile.scm:91
|
||||
#: gnucash/report/reports/support/taxinvoice.eguile.scm:106
|
||||
#: libgnucash/engine/Account.cpp:157 libgnucash/engine/gncInvoice.c:1114
|
||||
#: libgnucash/engine/Account.cpp:157 libgnucash/engine/gncInvoice.c:1117
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
@ -1562,7 +1562,7 @@ msgstr ""
|
||||
msgid "Address Not Found"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-doclink.c:597 gnucash/gnome/dialog-imap-editor.c:883
|
||||
#: gnucash/gnome/dialog-doclink.c:597 gnucash/gnome/dialog-imap-editor.c:885
|
||||
msgid "Total Entries"
|
||||
msgstr ""
|
||||
|
||||
@ -1688,8 +1688,8 @@ msgstr ""
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-employee.c:720 gnucash/gnome/dialog-sx-editor2.c:1755
|
||||
#: gnucash/gnome/dialog-sx-editor.c:1823 gnucash/gnome/dialog-tax-info.c:1200
|
||||
#: gnucash/gnome/dialog-employee.c:720 gnucash/gnome/dialog-sx-editor2.c:1756
|
||||
#: gnucash/gnome/dialog-sx-editor.c:1824 gnucash/gnome/dialog-tax-info.c:1200
|
||||
#: gnucash/gnome-utils/gnc-dense-cal.c:350
|
||||
#: gnucash/gnome-utils/gnc-tree-model-budget.c:96
|
||||
#: gnucash/gnome-utils/gnc-tree-view-commodity.c:368
|
||||
@ -2033,7 +2033,7 @@ msgid "To see the invalid mappings, use a filter of '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:368
|
||||
#: gnucash/gnome/dialog-imap-editor.c:605
|
||||
#: gnucash/gnome/dialog-imap-editor.c:607
|
||||
msgid "Map Account NOT found"
|
||||
msgstr ""
|
||||
|
||||
@ -2041,28 +2041,28 @@ msgstr ""
|
||||
msgid "(Note, if there is a large number, it may take a while)"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:704
|
||||
#: gnucash/gnome/dialog-imap-editor.c:706
|
||||
#: gnucash/gtkbuilder/dialog-imap-editor.glade:123
|
||||
msgid "Bayesian"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:719
|
||||
#: gnucash/gnome/dialog-imap-editor.c:721
|
||||
msgid "Description Field"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:722
|
||||
#: gnucash/gnome/dialog-imap-editor.c:724
|
||||
msgid "Memo Field"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:725
|
||||
#: gnucash/gnome/dialog-imap-editor.c:727
|
||||
msgid "CSV Account Map"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:765
|
||||
#: gnucash/gnome/dialog-imap-editor.c:767
|
||||
msgid "Online Id"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-imap-editor.c:791
|
||||
#: gnucash/gnome/dialog-imap-editor.c:793
|
||||
msgid "Online HBCI"
|
||||
msgstr ""
|
||||
|
||||
@ -2158,7 +2158,7 @@ msgstr ""
|
||||
#: gnucash/gnome/dialog-invoice.c:1904 gnucash/gnome/dialog-payment.c:1366
|
||||
#: gnucash/gtkbuilder/dialog-invoice.glade:857
|
||||
#: gnucash/report/reports/standard/invoice.scm:780
|
||||
#: libgnucash/engine/gncInvoice.c:1122
|
||||
#: libgnucash/engine/gncInvoice.c:1125
|
||||
msgid "Credit Note"
|
||||
msgstr ""
|
||||
|
||||
@ -2705,9 +2705,9 @@ msgstr ""
|
||||
#: gnucash/gnome/dialog-payment.c:1457
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You have no valid \"Post To\" accounts. Please create an account of type "
|
||||
"\"%s\" before you continue to process this payment. Perhaps you want to "
|
||||
"create an Invoice or Bill first?"
|
||||
"You have no valid \"Post To\" accounts. Please create an account of type \"%s"
|
||||
"\" before you continue to process this payment. Perhaps you want to create "
|
||||
"an Invoice or Bill first?"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-payment.c:1610
|
||||
@ -2990,23 +2990,23 @@ msgid ""
|
||||
"Do you really want to do this?"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1301
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1302
|
||||
msgid ""
|
||||
"Note: If you have already accepted changes to the Template, Cancel will not "
|
||||
"revoke them."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1347 gnucash/gnome/dialog-sx-editor.c:1412
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1348 gnucash/gnome/dialog-sx-editor.c:1413
|
||||
msgid "(never)"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1515 gnucash/gnome/dialog-sx-editor.c:1574
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1516 gnucash/gnome/dialog-sx-editor.c:1575
|
||||
msgid ""
|
||||
"The current template transaction has been changed. Would you like to record "
|
||||
"the changes?"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1782 gnucash/gnome/dialog-sx-editor.c:1850
|
||||
#: gnucash/gnome/dialog-sx-editor2.c:1783 gnucash/gnome/dialog-sx-editor.c:1851
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:246
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:252
|
||||
msgid "Scheduled Transactions"
|
||||
@ -3046,13 +3046,13 @@ msgstr ""
|
||||
msgid "Split with memo %s has an unparsable Debit Formula."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-from-trans.c:557
|
||||
#: gnucash/gnome/dialog-sx-from-trans.c:558
|
||||
msgid ""
|
||||
"The Scheduled Transaction is unbalanced. You are strongly encouraged to "
|
||||
"correct this situation."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/dialog-sx-from-trans.c:789
|
||||
#: gnucash/gnome/dialog-sx-from-trans.c:790
|
||||
msgid ""
|
||||
"Cannot create a Scheduled Transaction from a Transaction currently being "
|
||||
"edited. Please Enter the Transaction before Scheduling."
|
||||
@ -3236,7 +3236,7 @@ msgstr ""
|
||||
msgid "Remaining to Budget"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/gnc-budget-view.c:1662 gnucash/gnome/window-reconcile2.c:1094
|
||||
#: gnucash/gnome/gnc-budget-view.c:1660 gnucash/gnome/window-reconcile2.c:1094
|
||||
#: gnucash/gnome/window-reconcile.c:1167
|
||||
#: gnucash/gnome-utils/gnc-tree-view-account.c:924
|
||||
#: gnucash/report/html-acct-table.scm:803 gnucash/report/reports/aging.scm:544
|
||||
@ -4250,7 +4250,7 @@ msgid "Budget"
|
||||
msgstr "Буџет/План"
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-budget.c:945
|
||||
#: libgnucash/engine/gnc-budget.cpp:111
|
||||
#: libgnucash/engine/gnc-budget.cpp:112
|
||||
msgid "Unnamed Budget"
|
||||
msgstr ""
|
||||
|
||||
@ -5887,17 +5887,17 @@ msgstr ""
|
||||
msgid "Delete the selected scheduled transaction"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:441
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:444
|
||||
#: gnucash/gtkbuilder/dialog-account.glade:553
|
||||
msgid "Transactions"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:501
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:504
|
||||
msgid "Upcoming Transactions"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This is a ngettext(3) message, %d is the number of scheduled transactions deleted
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:865
|
||||
#: gnucash/gnome/gnc-plugin-page-sx-list.c:868
|
||||
#, c-format
|
||||
msgid "Do you really want to delete this scheduled transaction?"
|
||||
msgid_plural "Do you really want to delete %d scheduled transactions?"
|
||||
@ -7226,8 +7226,8 @@ msgstr ""
|
||||
|
||||
#: gnucash/gnome-utils/dialog-commodity.c:1345
|
||||
msgid ""
|
||||
"You must enter a non-empty \"Full name\", \"Symbol/abbreviation\", and "
|
||||
"\"Type\" for the commodity."
|
||||
"You must enter a non-empty \"Full name\", \"Symbol/abbreviation\", and \"Type"
|
||||
"\" for the commodity."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome-utils/dialog-doclink-utils.c:237
|
||||
@ -7786,7 +7786,7 @@ msgstr ""
|
||||
msgid "Frequency"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gnome-utils/gnc-dense-cal.c:1238
|
||||
#: gnucash/gnome-utils/gnc-dense-cal.c:1241
|
||||
msgid "(unnamed)"
|
||||
msgstr ""
|
||||
|
||||
@ -9519,7 +9519,7 @@ msgstr ""
|
||||
#: gnucash/report/reports/standard/net-charts.scm:374
|
||||
#: gnucash/report/reports/standard/net-charts.scm:422
|
||||
#: libgnucash/engine/Account.cpp:155 libgnucash/engine/Account.cpp:4503
|
||||
#: libgnucash/engine/gncInvoice.c:1118
|
||||
#: libgnucash/engine/gncInvoice.c:1121
|
||||
msgid "Expense"
|
||||
msgstr ""
|
||||
|
||||
@ -10420,8 +10420,8 @@ msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in:220
|
||||
msgid ""
|
||||
"If active, the \"New Hierarchy\" window will be shown whenever the \"New "
|
||||
"File\" menu item is chosen. Otherwise it will not be shown."
|
||||
"If active, the \"New Hierarchy\" window will be shown whenever the \"New File"
|
||||
"\" menu item is chosen. Otherwise it will not be shown."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.dialogs.gschema.xml.in:227
|
||||
@ -10658,8 +10658,8 @@ msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in:27
|
||||
msgid ""
|
||||
"Set \"Review Created Transactions\" as the default for the \"since last "
|
||||
"run\" dialog."
|
||||
"Set \"Review Created Transactions\" as the default for the \"since last run"
|
||||
"\" dialog."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in:28
|
||||
@ -10759,8 +10759,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"This setting determines the character that will be used between components "
|
||||
"of an account name. Possible values are any single non-alphanumeric unicode "
|
||||
"character, or any of the following strings: \"colon\", \"slash\", "
|
||||
"\"backslash\", \"dash\" and \"period\"."
|
||||
"character, or any of the following strings: \"colon\", \"slash\", \"backslash"
|
||||
"\", \"dash\" and \"period\"."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:25
|
||||
@ -11126,8 +11126,8 @@ msgstr ""
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:221
|
||||
msgid ""
|
||||
"This setting determines the edge at which the summary bar for various pages "
|
||||
"is drawn. Possible values are \"top\" and \"bottom\". It defaults to "
|
||||
"\"bottom\"."
|
||||
"is drawn. Possible values are \"top\" and \"bottom\". It defaults to \"bottom"
|
||||
"\"."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:220
|
||||
@ -11436,14 +11436,15 @@ msgid "PDF export file name format"
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:380
|
||||
#, c-format
|
||||
msgid ""
|
||||
"This setting chooses the file name for PDF export. This is a sprintf(3) "
|
||||
"string with three arguments: \"%1$s\" is the report name such as "
|
||||
"\"Invoice\". \"%2$s\" is the number of the report, which for an invoice "
|
||||
"report is the invoice number. \"%3$s\" is the date of the report, formatted "
|
||||
"according to the filename-date-format setting. Note: Any characters that are "
|
||||
"not allowed in filenames, such as '/', will be replaced with underscores '_' "
|
||||
"in the resulting file name."
|
||||
"string with three arguments: \"%1$s\" is the report name such as \"Invoice"
|
||||
"\". \"%2$s\" is the number of the report, which for an invoice report is the "
|
||||
"invoice number. \"%3$s\" is the date of the report, formatted according to "
|
||||
"the filename-date-format setting. Note: Any characters that are not allowed "
|
||||
"in filenames, such as '/', will be replaced with underscores '_' in the "
|
||||
"resulting file name."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:384
|
||||
@ -12588,6 +12589,7 @@ msgstr ""
|
||||
|
||||
#. %s is an account template
|
||||
#: gnucash/gtkbuilder/assistant-hierarchy.glade:377
|
||||
#, c-format
|
||||
msgid "Accounts in %s"
|
||||
msgstr ""
|
||||
|
||||
@ -19014,8 +19016,8 @@ msgstr ""
|
||||
#: gnucash/import-export/csv-exp/assistant-csv-export.c:109
|
||||
#, c-format
|
||||
msgid ""
|
||||
"The account tree will be exported to the file '%s' when you click "
|
||||
"\"Apply\".\n"
|
||||
"The account tree will be exported to the file '%s' when you click \"Apply"
|
||||
"\".\n"
|
||||
"\n"
|
||||
"You can also verify your selections by clicking on \"Back\" or \"Cancel\" to "
|
||||
"abort the export.\n"
|
||||
@ -20997,9 +20999,9 @@ msgstr ""
|
||||
|
||||
#: gnucash/register/register-gnome/datecell-gnome.c:104
|
||||
msgid ""
|
||||
"The entered date of the transaction is older than the \"Read-Only "
|
||||
"Threshold\" set for this book. This setting can be changed in File-"
|
||||
">Properties->Accounts, resetting to the threshold."
|
||||
"The entered date of the transaction is older than the \"Read-Only Threshold"
|
||||
"\" set for this book. This setting can be changed in File->Properties-"
|
||||
">Accounts, resetting to the threshold."
|
||||
msgstr ""
|
||||
|
||||
#: gnucash/register/register-gnome/gnucash-item-list.c:534
|
||||
@ -27936,15 +27938,15 @@ msgid ""
|
||||
"features:"
|
||||
msgstr ""
|
||||
|
||||
#: libgnucash/engine/gncInvoice.c:1746
|
||||
#: libgnucash/engine/gncInvoice.c:1749
|
||||
msgid "Extra to Charge Card"
|
||||
msgstr ""
|
||||
|
||||
#: libgnucash/engine/gncInvoice.c:1786
|
||||
#: libgnucash/engine/gncInvoice.c:1789
|
||||
msgid "Generated from an invoice. Try unposting the invoice."
|
||||
msgstr ""
|
||||
|
||||
#: libgnucash/engine/gncInvoice.c:2216
|
||||
#: libgnucash/engine/gncInvoice.c:2219
|
||||
msgid " (posted)"
|
||||
msgstr ""
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
488
po/pt_BR.po
488
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user