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
9eaa3eb23a
@ -32,6 +32,7 @@
|
|||||||
(use-modules (srfi srfi-26))
|
(use-modules (srfi srfi-26))
|
||||||
(use-modules (ice-9 match))
|
(use-modules (ice-9 match))
|
||||||
(use-modules (ice-9 i18n))
|
(use-modules (ice-9 i18n))
|
||||||
|
(use-modules (ice-9 regex))
|
||||||
|
|
||||||
(export N_)
|
(export N_)
|
||||||
(export G_)
|
(export G_)
|
||||||
@ -41,6 +42,7 @@
|
|||||||
(export gnc:string-locale<?)
|
(export gnc:string-locale<?)
|
||||||
(export gnc:string-locale>?)
|
(export gnc:string-locale>?)
|
||||||
(export gnc:version)
|
(export gnc:version)
|
||||||
|
(export gnc:format)
|
||||||
|
|
||||||
;; loads modules and re-exports all its public interface into the
|
;; loads modules and re-exports all its public interface into the
|
||||||
;; current module
|
;; current module
|
||||||
@ -107,3 +109,16 @@
|
|||||||
(_ (default-printer))))
|
(_ (default-printer))))
|
||||||
|
|
||||||
(set-exception-printer! 'unbound-variable print-unbound-variable-error)
|
(set-exception-printer! 'unbound-variable print-unbound-variable-error)
|
||||||
|
|
||||||
|
;; format.
|
||||||
|
(define %regex (make-regexp "[$][{]([[:alnum:]]+)[}]"))
|
||||||
|
(define (gnc:format str . bindings)
|
||||||
|
(define hash (make-hash-table))
|
||||||
|
(define (substitute m)
|
||||||
|
(or (hashq-ref hash (string->symbol (match:substring m 1)))
|
||||||
|
(warn "invalid identifier" (match:substring m 0))))
|
||||||
|
(let lp ((bindings bindings))
|
||||||
|
(match bindings
|
||||||
|
(() (regexp-substitute/global #f %regex str 'pre substitute 'post))
|
||||||
|
(((? symbol? k) v . rest) (hashq-set! hash k (format #f "~a" v)) (lp rest))
|
||||||
|
(_ (error "gnc:format syntax error")))))
|
||||||
|
@ -331,15 +331,10 @@ gnc_scm2guid_glist (SCM guids_scm)
|
|||||||
return g_list_reverse (guids);
|
return g_list_reverse (guids);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
gnc_guid_glist_free (GList *guids)
|
gnc_guid_glist_free (GList *guids)
|
||||||
{
|
{
|
||||||
GList *node;
|
g_list_free_full (guids, (GDestroyNotify)guid_free);
|
||||||
|
|
||||||
for (node = guids; node; node = node->next)
|
|
||||||
guid_free (node->data);
|
|
||||||
|
|
||||||
g_list_free (guids);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static SCM
|
static SCM
|
||||||
|
@ -25,7 +25,6 @@ gnc_add_test_with_guile(test-scm-query test-scm-query.cpp ENGINE_TEST_INCLUDE_DI
|
|||||||
|
|
||||||
|
|
||||||
set(bindings_test_SCHEME
|
set(bindings_test_SCHEME
|
||||||
test-core-utils.scm
|
|
||||||
test-create-account.scm
|
test-create-account.scm
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -46,10 +45,13 @@ gnc_add_scheme_test_targets(scm-test-engine
|
|||||||
OUTPUT_DIR "tests"
|
OUTPUT_DIR "tests"
|
||||||
DEPENDS "${GUILE_DEPENDS};scm-test-engine-extras")
|
DEPENDS "${GUILE_DEPENDS};scm-test-engine-extras")
|
||||||
|
|
||||||
|
gnc_add_scheme_tests("${bindings_test_SCHEME}")
|
||||||
|
|
||||||
add_dependencies(check scm-test-engine)
|
add_dependencies(check scm-test-engine)
|
||||||
gnc_add_scheme_tests("${engine_test_SCHEME}")
|
gnc_add_scheme_tests("${engine_test_SCHEME}")
|
||||||
|
|
||||||
set (scm_tests_with_srfi64_SOURCES
|
set (scm_tests_with_srfi64_SOURCES
|
||||||
|
test-core-utils.scm
|
||||||
test-business-core.scm
|
test-business-core.scm
|
||||||
test-scm-engine.scm
|
test-scm-engine.scm
|
||||||
)
|
)
|
||||||
|
@ -1,17 +1,49 @@
|
|||||||
(define exit-code 0)
|
|
||||||
(setenv "GNC_UNINSTALLED" "1")
|
(setenv "GNC_UNINSTALLED" "1")
|
||||||
|
|
||||||
|
(use-modules (srfi srfi-64))
|
||||||
|
(use-modules (tests srfi64-extras))
|
||||||
(use-modules (gnucash core-utils))
|
(use-modules (gnucash core-utils))
|
||||||
|
|
||||||
(if (macro? (module-ref (current-module) 'N_))
|
(define (N_-tests)
|
||||||
(display "Macro N_ defined\n")
|
|
||||||
(begin
|
|
||||||
(display "Failed - macro N_ not defined\n")
|
|
||||||
(set! exit-code -1)))
|
|
||||||
|
|
||||||
(if (string=? (N_ "foobar") "foobar")
|
(test-assert "N_ defined"
|
||||||
(display "Macro N_ works properly\n")
|
(module-ref (current-module) 'N_))
|
||||||
(begin
|
|
||||||
(display "Failed - macro N_ doesn't work\n")
|
|
||||||
(set! exit-code -1)))
|
|
||||||
|
|
||||||
(exit exit-code)
|
(test-equal "N_ works properly"
|
||||||
|
"foobar"
|
||||||
|
(N_ "foobar")))
|
||||||
|
|
||||||
|
(define (gnc-format-tests)
|
||||||
|
(test-equal "null"
|
||||||
|
""
|
||||||
|
(gnc:format ""))
|
||||||
|
|
||||||
|
(test-equal "basic"
|
||||||
|
"basic"
|
||||||
|
(gnc:format "basic"))
|
||||||
|
|
||||||
|
(test-equal "basic with unused symbols"
|
||||||
|
"basic"
|
||||||
|
(gnc:format "basic" 'task "testing"))
|
||||||
|
|
||||||
|
(test-equal "one substitution"
|
||||||
|
"basic test"
|
||||||
|
(gnc:format "basic ${job}" 'job "test"))
|
||||||
|
|
||||||
|
(test-equal "two substitutions out of order"
|
||||||
|
"basic test"
|
||||||
|
(gnc:format "${difficulty} ${job}" 'job "test" 'difficulty "basic"))
|
||||||
|
|
||||||
|
(test-equal "trying to reference invalid symbol"
|
||||||
|
"${symbol} does not exist"
|
||||||
|
(gnc:format "${symbol} does not exist" 'existence "none"))
|
||||||
|
|
||||||
|
(test-error "gnc:format syntax error"
|
||||||
|
(gnc:format "${symbol} does not exist" 'existence)))
|
||||||
|
|
||||||
|
(define (run-test)
|
||||||
|
(test-runner-factory gnc:test-runner)
|
||||||
|
(test-begin "test-core-utils")
|
||||||
|
(N_-tests)
|
||||||
|
(gnc-format-tests)
|
||||||
|
(test-end "test-core-utils"))
|
||||||
|
@ -268,7 +268,7 @@ gnc_gnome_help_yelp_anchor_fix (GtkWindow *parent, const char *file_name, const
|
|||||||
gchar *filename = g_build_filename (help_path, *langs, help_file, NULL);
|
gchar *filename = g_build_filename (help_path, *langs, help_file, NULL);
|
||||||
if (g_file_test (filename, G_FILE_TEST_EXISTS))
|
if (g_file_test (filename, G_FILE_TEST_EXISTS))
|
||||||
{
|
{
|
||||||
full_path = g_strdup (filename);
|
full_path = filename;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
|
@ -80,6 +80,7 @@ typedef struct _CustomReportDialog
|
|||||||
|
|
||||||
} CustomReportDialog;
|
} CustomReportDialog;
|
||||||
|
|
||||||
|
void custom_report_dialog_destroy_cb (GtkWidget* widget, gpointer data);
|
||||||
void custom_report_dialog_close_cb(GtkWidget* widget, gpointer data);
|
void custom_report_dialog_close_cb(GtkWidget* widget, gpointer data);
|
||||||
void custom_report_help_cb(GtkWidget* widget, gpointer data);
|
void custom_report_help_cb(GtkWidget* widget, gpointer data);
|
||||||
void close_custom_report_clicked_cb(GtkWidget* widget, gpointer data);
|
void close_custom_report_clicked_cb(GtkWidget* widget, gpointer data);
|
||||||
@ -94,6 +95,31 @@ gboolean custom_report_query_tooltip_cb (GtkTreeView *view,
|
|||||||
GtkTooltip *tooltip,
|
GtkTooltip *tooltip,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
tree_model_free (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GncGUID *guid;
|
||||||
|
gtk_tree_model_get (model, iter, COL_NUM, &guid, -1);
|
||||||
|
guid_free (guid);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
empty_tree_model (GtkTreeModel *model)
|
||||||
|
{
|
||||||
|
gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc)tree_model_free, NULL);
|
||||||
|
gtk_list_store_clear (GTK_LIST_STORE (model));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
custom_report_dialog_destroy_cb (GtkWidget* widget, gpointer data)
|
||||||
|
{
|
||||||
|
CustomReportDialog *crd = data;
|
||||||
|
empty_tree_model (gtk_tree_view_get_model (GTK_TREE_VIEW(crd->reportview)));
|
||||||
|
g_free (crd);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
custom_report_dialog_close_cb(GtkWidget* widget, gpointer data)
|
custom_report_dialog_close_cb(GtkWidget* widget, gpointer data)
|
||||||
{
|
{
|
||||||
@ -101,7 +127,6 @@ custom_report_dialog_close_cb(GtkWidget* widget, gpointer data)
|
|||||||
gnc_save_window_size(GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog));
|
gnc_save_window_size(GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog));
|
||||||
|
|
||||||
gtk_widget_destroy(crd->dialog);
|
gtk_widget_destroy(crd->dialog);
|
||||||
g_free(crd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -133,26 +158,13 @@ update_report_list(GtkListStore *store, CustomReportDialog *crd)
|
|||||||
int i;
|
int i;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkTreeModel *model = GTK_TREE_MODEL (store);
|
GtkTreeModel *model = GTK_TREE_MODEL (store);
|
||||||
gboolean valid_iter;
|
|
||||||
|
|
||||||
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), COL_NAME, GTK_SORT_ASCENDING);
|
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), COL_NAME, GTK_SORT_ASCENDING);
|
||||||
|
|
||||||
crd->reportlist = scm_call_0(get_rpt_guids);
|
crd->reportlist = scm_call_0(get_rpt_guids);
|
||||||
rpt_guids = crd->reportlist;
|
rpt_guids = crd->reportlist;
|
||||||
|
|
||||||
/* Empty current liststore */
|
empty_tree_model (model);
|
||||||
valid_iter = gtk_tree_model_get_iter_first (model, &iter);
|
|
||||||
while (valid_iter)
|
|
||||||
{
|
|
||||||
GValue value = { 0, };
|
|
||||||
GncGUID *row_guid;
|
|
||||||
gtk_tree_model_get_value (model, &iter, COL_NUM, &value);
|
|
||||||
row_guid = (GncGUID *) g_value_get_pointer (&value);
|
|
||||||
guid_free (row_guid);
|
|
||||||
g_value_unset (&value);
|
|
||||||
valid_iter = gtk_tree_model_iter_next (model, &iter);
|
|
||||||
}
|
|
||||||
gtk_list_store_clear(store);
|
|
||||||
|
|
||||||
if (scm_is_list(rpt_guids))
|
if (scm_is_list(rpt_guids))
|
||||||
{
|
{
|
||||||
@ -343,25 +355,24 @@ get_custom_report_selection(CustomReportDialog *crd,
|
|||||||
GtkTreeSelection *sel;
|
GtkTreeSelection *sel;
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GncGUID *guid = guid_malloc ();
|
GncGUID *guid;
|
||||||
gchar *guid_str;
|
gchar *guid_str;
|
||||||
|
SCM scm_guid;
|
||||||
|
|
||||||
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(crd->reportview));
|
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(crd->reportview));
|
||||||
|
|
||||||
if (gtk_tree_selection_get_selected(sel, &model, &iter))
|
if (!gtk_tree_selection_get_selected(sel, &model, &iter))
|
||||||
{
|
|
||||||
gtk_tree_model_get(model, &iter, COL_NUM, &guid, -1);
|
|
||||||
guid_str = g_new0 (gchar, GUID_ENCODING_LENGTH+1 );
|
|
||||||
guid_to_string_buff (guid, guid_str);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/* no selection, notify user */
|
/* no selection, notify user */
|
||||||
gnc_error_dialog (GTK_WINDOW (crd->dialog), "%s", message);
|
gnc_error_dialog (GTK_WINDOW (crd->dialog), "%s", message);
|
||||||
return SCM_EOL;
|
return SCM_EOL;
|
||||||
|
|
||||||
}
|
}
|
||||||
return scm_from_utf8_string (guid_str);
|
|
||||||
|
gtk_tree_model_get (model, &iter, COL_NUM, &guid, -1);
|
||||||
|
guid_str = guid_to_string (guid);
|
||||||
|
scm_guid = scm_from_utf8_string (guid_str);
|
||||||
|
g_free (guid_str);
|
||||||
|
return scm_guid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************
|
/**************************************************************
|
||||||
@ -385,7 +396,7 @@ custom_report_list_view_row_activated_cb(GtkTreeView *view, GtkTreePath *path,
|
|||||||
{
|
{
|
||||||
if (column == crd->namecol)
|
if (column == crd->namecol)
|
||||||
{
|
{
|
||||||
GncGUID *guid = guid_malloc ();
|
GncGUID *guid;
|
||||||
gchar *guid_str;
|
gchar *guid_str;
|
||||||
|
|
||||||
gtk_tree_model_get(model, &iter, COL_NUM, &guid, -1);
|
gtk_tree_model_get(model, &iter, COL_NUM, &guid, -1);
|
||||||
@ -393,6 +404,7 @@ custom_report_list_view_row_activated_cb(GtkTreeView *view, GtkTreePath *path,
|
|||||||
guid_to_string_buff (guid, guid_str);
|
guid_to_string_buff (guid, guid_str);
|
||||||
|
|
||||||
custom_report_run_report(scm_from_utf8_string (guid_str), crd);
|
custom_report_run_report(scm_from_utf8_string (guid_str), crd);
|
||||||
|
g_free (guid_str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -503,6 +515,19 @@ custom_report_query_tooltip_cb (GtkTreeView *view,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
custom_report_event_cb (GtkWidget *widget, GdkEventKey *event,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
if (event->keyval == GDK_KEY_Escape)
|
||||||
|
{
|
||||||
|
custom_report_dialog_close_cb (widget, user_data);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Internal function that builds the dialog */
|
/* Internal function that builds the dialog */
|
||||||
static CustomReportDialog *
|
static CustomReportDialog *
|
||||||
gnc_ui_custom_report_internal(GncMainWindow * window)
|
gnc_ui_custom_report_internal(GncMainWindow * window)
|
||||||
@ -548,6 +573,10 @@ gnc_ui_custom_report_internal(GncMainWindow * window)
|
|||||||
|
|
||||||
gtk_widget_show_all(crd->dialog);
|
gtk_widget_show_all(crd->dialog);
|
||||||
|
|
||||||
|
// Use this event to capture the escape key being pressed
|
||||||
|
g_signal_connect (crd->dialog, "key_press_event",
|
||||||
|
G_CALLBACK(custom_report_event_cb), crd);
|
||||||
|
|
||||||
/* check if there are currently saved reports available
|
/* check if there are currently saved reports available
|
||||||
* by checking if there is a first element */
|
* by checking if there is a first element */
|
||||||
model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview));
|
model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview));
|
||||||
@ -611,10 +640,8 @@ gnc_ui_custom_report_edit_name (GncMainWindow * window, SCM scm_guid)
|
|||||||
|
|
||||||
while (valid_iter)
|
while (valid_iter)
|
||||||
{
|
{
|
||||||
GValue value = { 0, };
|
|
||||||
GncGUID *row_guid;
|
GncGUID *row_guid;
|
||||||
gtk_tree_model_get_value (model, &iter, COL_NUM, &value);
|
gtk_tree_model_get (model, &iter, COL_NUM, &row_guid, -1);
|
||||||
row_guid = (GncGUID *) g_value_get_pointer (&value);
|
|
||||||
|
|
||||||
if (guid_equal (guid, row_guid))
|
if (guid_equal (guid, row_guid))
|
||||||
{
|
{
|
||||||
@ -630,13 +657,14 @@ gnc_ui_custom_report_edit_name (GncMainWindow * window, SCM scm_guid)
|
|||||||
gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (crd->reportview),
|
gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (crd->reportview),
|
||||||
path, crd->namecol,
|
path, crd->namecol,
|
||||||
crd->namerenderer, TRUE);
|
crd->namerenderer, TRUE);
|
||||||
|
gtk_tree_path_free (path);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_value_unset (&value);
|
|
||||||
valid_iter = gtk_tree_model_iter_next (model, &iter);
|
valid_iter = gtk_tree_model_iter_next (model, &iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
guid_free (guid);
|
guid_free (guid);
|
||||||
|
g_free (guid_str);
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ initialize_getters (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_tax_type_info (gpointer data, gpointer user_data)
|
destroy_tax_type_info (gpointer data)
|
||||||
{
|
{
|
||||||
TaxTypeInfo *tax_type = data;
|
TaxTypeInfo *tax_type = data;
|
||||||
|
|
||||||
@ -187,15 +187,14 @@ destroy_tax_type_info (gpointer data, gpointer user_data)
|
|||||||
g_free (tax_type);
|
g_free (tax_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
destroy_tax_type_infos (GList *types)
|
destroy_tax_type_infos (GList *types)
|
||||||
{
|
{
|
||||||
g_list_foreach (types, destroy_tax_type_info, NULL);
|
g_list_free_full (types, destroy_tax_type_info);
|
||||||
g_list_free (types);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_txf_info (gpointer data, gpointer user_data)
|
destroy_txf_info (gpointer data)
|
||||||
{
|
{
|
||||||
TXFInfo *txf_info = data;
|
TXFInfo *txf_info = data;
|
||||||
|
|
||||||
@ -217,11 +216,10 @@ destroy_txf_info (gpointer data, gpointer user_data)
|
|||||||
g_free (txf_info);
|
g_free (txf_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static inline void
|
||||||
destroy_txf_infos (GList *infos)
|
destroy_txf_infos (GList *infos)
|
||||||
{
|
{
|
||||||
g_list_foreach (infos, destroy_txf_info, NULL);
|
g_list_free_full (infos, destroy_txf_info);
|
||||||
g_list_free (infos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -313,6 +313,7 @@ gnc_reconcile_view_new (Account *account, GNCReconcileViewType type,
|
|||||||
GList *accounts = NULL;
|
GList *accounts = NULL;
|
||||||
GList *splits;
|
GList *splits;
|
||||||
Query *query;
|
Query *query;
|
||||||
|
QofNumericMatch sign;
|
||||||
|
|
||||||
g_return_val_if_fail (account, NULL);
|
g_return_val_if_fail (account, NULL);
|
||||||
g_return_val_if_fail ((type == RECLIST_DEBIT) ||
|
g_return_val_if_fail ((type == RECLIST_DEBIT) ||
|
||||||
@ -345,15 +346,11 @@ gnc_reconcile_view_new (Account *account, GNCReconcileViewType type,
|
|||||||
|
|
||||||
g_list_free (accounts);
|
g_list_free (accounts);
|
||||||
|
|
||||||
/* limit the matches to CREDITs and DEBITs only, depending on the type */
|
sign = (type == RECLIST_CREDIT) ?
|
||||||
if (type == RECLIST_CREDIT)
|
QOF_NUMERIC_MATCH_CREDIT : QOF_NUMERIC_MATCH_DEBIT;
|
||||||
xaccQueryAddValueMatch(query, gnc_numeric_zero (),
|
|
||||||
QOF_NUMERIC_MATCH_CREDIT,
|
xaccQueryAddNumericMatch (query, gnc_numeric_zero (), sign, QOF_COMPARE_GTE,
|
||||||
QOF_COMPARE_GTE, QOF_QUERY_AND);
|
QOF_QUERY_AND, SPLIT_AMOUNT, NULL);
|
||||||
else
|
|
||||||
xaccQueryAddValueMatch(query, gnc_numeric_zero (),
|
|
||||||
QOF_NUMERIC_MATCH_DEBIT,
|
|
||||||
QOF_COMPARE_GTE, QOF_QUERY_AND);
|
|
||||||
|
|
||||||
/* limit the matches only to Cleared and Non-reconciled splits */
|
/* limit the matches only to Cleared and Non-reconciled splits */
|
||||||
xaccQueryAddClearedMatch (query, CLEARED_NO | CLEARED_CLEARED, QOF_QUERY_AND);
|
xaccQueryAddClearedMatch (query, CLEARED_NO | CLEARED_CLEARED, QOF_QUERY_AND);
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<property name="skip_taskbar_hint">True</property>
|
<property name="skip_taskbar_hint">True</property>
|
||||||
<property name="skip_pager_hint">True</property>
|
<property name="skip_pager_hint">True</property>
|
||||||
|
<signal name="destroy" handler="custom_report_dialog_destroy_cb" swapped="no"/>
|
||||||
<signal name="close" handler="custom_report_dialog_close_cb" swapped="no"/>
|
<signal name="close" handler="custom_report_dialog_close_cb" swapped="no"/>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox" id="dialog-vbox1">
|
<object class="GtkBox" id="dialog-vbox1">
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include "import-main-matcher.h"
|
#include "import-main-matcher.h"
|
||||||
|
|
||||||
#include "dialog-utils.h"
|
#include "dialog-utils.h"
|
||||||
|
#include "gnc-glib-utils.h"
|
||||||
#include "gnc-ui.h"
|
#include "gnc-ui.h"
|
||||||
#include "gnc-ui-util.h"
|
#include "gnc-ui-util.h"
|
||||||
#include "gnc-engine.h"
|
#include "gnc-engine.h"
|
||||||
@ -1421,6 +1422,29 @@ update_child_row (GNCImportMatchInfo *sel_match, GtkTreeModel *model, GtkTreeIte
|
|||||||
g_free (text);
|
g_free (text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
get_peer_acct_names (Split *split)
|
||||||
|
{
|
||||||
|
GList *names = NULL, *accounts_seen = NULL;
|
||||||
|
gchar *retval, *name;
|
||||||
|
for (GList *n = xaccTransGetSplitList (xaccSplitGetParent (split)); n; n = n->next)
|
||||||
|
{
|
||||||
|
Account *account = xaccSplitGetAccount (n->data);
|
||||||
|
if ((n->data == split) ||
|
||||||
|
(xaccAccountGetType (account) == ACCT_TYPE_TRADING) ||
|
||||||
|
(g_list_find (accounts_seen, account)))
|
||||||
|
continue;
|
||||||
|
name = gnc_account_get_full_name (account);
|
||||||
|
names = g_list_prepend (names, g_strdup_printf ("\"%s\"", name));
|
||||||
|
accounts_seen = g_list_prepend (accounts_seen, account);
|
||||||
|
g_free (name);
|
||||||
|
}
|
||||||
|
retval = gnc_g_list_stringjoin (names, ", ");
|
||||||
|
g_list_free_full (names, g_free);
|
||||||
|
g_list_free (accounts_seen);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
refresh_model_row (GNCImportMainMatcher *gui,
|
refresh_model_row (GNCImportMainMatcher *gui,
|
||||||
GtkTreeModel *model,
|
GtkTreeModel *model,
|
||||||
@ -1550,15 +1574,19 @@ refresh_model_row (GNCImportMainMatcher *gui,
|
|||||||
|
|
||||||
if (sel_match)
|
if (sel_match)
|
||||||
{
|
{
|
||||||
|
gchar *full_names = get_peer_acct_names (sel_match->split);
|
||||||
color = get_required_color (int_not_required_class);
|
color = get_required_color (int_not_required_class);
|
||||||
if (gnc_import_TransInfo_get_match_selected_manually (info))
|
if (gnc_import_TransInfo_get_match_selected_manually (info))
|
||||||
{
|
{
|
||||||
ro_text = _("Reconcile (manual) match");
|
text = g_strdup_printf (_("Reconcile (manual) match to %s"),
|
||||||
|
full_names);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ro_text = _("Reconcile (auto) match");
|
text = g_strdup_printf (_("Reconcile (auto) match to %s"),
|
||||||
|
full_names);
|
||||||
}
|
}
|
||||||
|
g_free (full_names);
|
||||||
update_child_row (sel_match, model, iter);
|
update_child_row (sel_match, model, iter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1576,15 +1604,19 @@ refresh_model_row (GNCImportMainMatcher *gui,
|
|||||||
|
|
||||||
if (sel_match)
|
if (sel_match)
|
||||||
{
|
{
|
||||||
|
gchar *full_names = get_peer_acct_names (sel_match->split);
|
||||||
color = get_required_color (int_not_required_class);
|
color = get_required_color (int_not_required_class);
|
||||||
if (gnc_import_TransInfo_get_match_selected_manually (info))
|
if (gnc_import_TransInfo_get_match_selected_manually (info))
|
||||||
{
|
{
|
||||||
ro_text = _("Update and reconcile (manual) match");
|
text = g_strdup_printf (_("Update and reconcile (manual) match to %s"),
|
||||||
|
full_names);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ro_text = _("Update and reconcile (auto) match");
|
text = g_strdup_printf (_("Update and reconcile (auto) match to %s"),
|
||||||
|
full_names);
|
||||||
}
|
}
|
||||||
|
g_free (full_names);
|
||||||
update_child_row (sel_match, model, iter);
|
update_child_row (sel_match, model, iter);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1130,7 +1130,11 @@ gnc_ofx_match_done (GtkDialog *dialog, gpointer user_data)
|
|||||||
/* The the user did not click OK, don't process the rest of the
|
/* The the user did not click OK, don't process the rest of the
|
||||||
* transaction, don't go to the next of xfile.
|
* transaction, don't go to the next of xfile.
|
||||||
*/
|
*/
|
||||||
if (info->response != GTK_RESPONSE_OK) return;
|
if (info->response != GTK_RESPONSE_OK)
|
||||||
|
{
|
||||||
|
g_free (info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (info->trans_list)
|
if (info->trans_list)
|
||||||
{
|
{
|
||||||
@ -1209,9 +1213,11 @@ runMatcher(ofx_info* info, char * selected_filename, gboolean go_to_next_file)
|
|||||||
if (info->num_trans_processed)
|
if (info->num_trans_processed)
|
||||||
{
|
{
|
||||||
gchar* acct_name = gnc_get_account_name_for_register (first_account);
|
gchar* acct_name = gnc_get_account_name_for_register (first_account);
|
||||||
gnc_info_dialog (parent, _("OFX file '%s', imported transactions for account '%s'\n%d transactions processed, no transactions to match"),
|
gnc_info_dialog (parent, _("While importing transactions from OFX file '%s' into account '%s', found %d previously imported transactions, no new transactions."),
|
||||||
selected_filename, acct_name, info->num_trans_processed);
|
selected_filename, acct_name, info->num_trans_processed);
|
||||||
g_free (acct_name);
|
g_free (acct_name);
|
||||||
|
// This is required to ensure we don't mistakenly assume the user canceled.
|
||||||
|
info->response = GTK_RESPONSE_OK;
|
||||||
gnc_ofx_match_done (NULL,info);
|
gnc_ofx_match_done (NULL,info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "gnc-prefs.h"
|
#include "gnc-prefs.h"
|
||||||
#include "gnc-ui.h"
|
#include "gnc-ui.h"
|
||||||
#include "gnc-uri-utils.h"
|
#include "gnc-uri-utils.h"
|
||||||
|
#include "gnc-glib-utils.h"
|
||||||
#include "gnc-filepath-utils.h"
|
#include "gnc-filepath-utils.h"
|
||||||
#include "gnc-warnings.h"
|
#include "gnc-warnings.h"
|
||||||
#include "doclinkcell.h"
|
#include "doclinkcell.h"
|
||||||
@ -89,7 +90,7 @@ gnc_split_register_get_rbaln (VirtualLocation virt_loc, gpointer user_data,
|
|||||||
if (subaccounts)
|
if (subaccounts)
|
||||||
{
|
{
|
||||||
children = gnc_account_get_descendants (account);
|
children = gnc_account_get_descendants (account);
|
||||||
children = g_list_append (children, account);
|
children = g_list_prepend (children, account);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the row number we're on, then start with the first row. */
|
/* Get the row number we're on, then start with the first row. */
|
||||||
@ -1388,11 +1389,12 @@ gnc_split_register_get_price_entry (VirtualLocation virt_loc,
|
|||||||
|
|
||||||
split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
|
split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
|
||||||
|
|
||||||
price = xaccSplitGetSharePrice (split);
|
if (gnc_numeric_zero_p (xaccSplitGetAmount(split)) ||
|
||||||
curr = xaccTransGetCurrency (xaccSplitGetParent (split));
|
gnc_numeric_zero_p (xaccSplitGetValue(split)))
|
||||||
if (gnc_numeric_zero_p (price))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
price = xaccSplitGetSharePrice (split);
|
||||||
|
curr = xaccTransGetCurrency (xaccSplitGetParent (split));
|
||||||
return xaccPrintAmount (price, gnc_default_price_print_info (curr));
|
return xaccPrintAmount (price, gnc_default_price_print_info (curr));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1601,7 +1603,7 @@ get_trans_total_value_subaccounts (SplitRegister* reg, Transaction* trans)
|
|||||||
return total;
|
return total;
|
||||||
|
|
||||||
children = gnc_account_get_descendants (parent);
|
children = gnc_account_get_descendants (parent);
|
||||||
children = g_list_append (children, parent);
|
children = g_list_prepend (children, parent);
|
||||||
|
|
||||||
for (child = children; child; child = child->next)
|
for (child = children; child; child = child->next)
|
||||||
{
|
{
|
||||||
@ -2191,37 +2193,27 @@ gnc_split_register_confirm (VirtualLocation virt_loc, gpointer user_data)
|
|||||||
|
|
||||||
if (protected_trans_cell)
|
if (protected_trans_cell)
|
||||||
{
|
{
|
||||||
GList* node;
|
GList* acc_g_list = NULL;
|
||||||
gchar* acc_list = NULL;
|
gchar* acc_list = NULL;
|
||||||
gchar* message_format;
|
gchar* message_format;
|
||||||
|
|
||||||
for (node = xaccTransGetSplitList (trans); node; node = node->next)
|
for (GList *node = xaccTransGetSplitList (trans); node; node = node->next)
|
||||||
{
|
{
|
||||||
Split* split = node->data;
|
Split* split = node->data;
|
||||||
|
|
||||||
if (xaccSplitGetReconcile (split) == YREC)
|
if (xaccSplitGetReconcile (split) == YREC)
|
||||||
{
|
{
|
||||||
Account* acc = xaccSplitGetAccount (split);
|
gchar* name = gnc_account_get_full_name (xaccSplitGetAccount (split));
|
||||||
gchar* name = gnc_account_get_full_name (acc);
|
acc_g_list = g_list_prepend (acc_g_list, name);
|
||||||
|
|
||||||
if (acc_list == NULL)
|
|
||||||
acc_list = g_strconcat ("\n", name, NULL);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gchar* acc_list_copy = g_strdup (acc_list);
|
|
||||||
g_free (acc_list);
|
|
||||||
acc_list = g_strconcat (acc_list_copy, "\n", name, NULL);
|
|
||||||
g_free (acc_list_copy);
|
|
||||||
}
|
|
||||||
g_free (name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
acc_list = gnc_g_list_stringjoin (acc_g_list, "\n");
|
||||||
title = _ ("Change transaction containing a reconciled split?");
|
title = _ ("Change transaction containing a reconciled split?");
|
||||||
message_format =
|
message_format =
|
||||||
_ ("The transaction you are about to change contains reconciled splits in the following accounts:\n%s"
|
_ ("The transaction you are about to change contains reconciled splits in the following accounts:\n%s"
|
||||||
"\n\nAre you sure you want to continue with this change?");
|
"\n\nAre you sure you want to continue with this change?");
|
||||||
|
|
||||||
message = g_strdup_printf (message_format, acc_list);
|
message = g_strdup_printf (message_format, acc_list);
|
||||||
|
g_list_free_full (acc_g_list, g_free);
|
||||||
g_free (acc_list);
|
g_free (acc_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,11 +194,6 @@ commissions in cumulative average cost and gain/loss after commission")
|
|||||||
(define cap-purch-costs? (opt-val gnc:pagename-general optname-cap-purch-costs))
|
(define cap-purch-costs? (opt-val gnc:pagename-general optname-cap-purch-costs))
|
||||||
(define document (gnc:make-html-document))
|
(define document (gnc:make-html-document))
|
||||||
|
|
||||||
(define (elt->cell split)
|
|
||||||
(gnc:html-markup-anchor
|
|
||||||
(gnc:split-anchor-text split)
|
|
||||||
(amount->monetary (xaccSplitGetAmount split))))
|
|
||||||
|
|
||||||
(define large 10000000)
|
(define large 10000000)
|
||||||
(define (get-fx db from to time)
|
(define (get-fx db from to time)
|
||||||
(/ (gnc-pricedb-convert-balance-nearest-price-t64 db large from to time)
|
(/ (gnc-pricedb-convert-balance-nearest-price-t64 db large from to time)
|
||||||
@ -232,7 +227,9 @@ commissions in cumulative average cost and gain/loss after commission")
|
|||||||
(let ((query (qof-query-create-for-splits)))
|
(let ((query (qof-query-create-for-splits)))
|
||||||
(qof-query-set-book query (gnc-get-current-book))
|
(qof-query-set-book query (gnc-get-current-book))
|
||||||
(xaccQueryAddSingleAccountMatch query stock-acct QOF-QUERY-AND)
|
(xaccQueryAddSingleAccountMatch query stock-acct QOF-QUERY-AND)
|
||||||
(xaccQueryGetSplitsUniqueTrans query))))
|
(let ((result (xaccQueryGetSplitsUniqueTrans query)))
|
||||||
|
(qof-query-destroy query)
|
||||||
|
result))))
|
||||||
|
|
||||||
(define (to-commodity amt)
|
(define (to-commodity amt)
|
||||||
(if format-cells
|
(if format-cells
|
||||||
|
@ -108,7 +108,9 @@
|
|||||||
query (logand CLEARED-ALL (lognot CLEARED-VOIDED)) QOF-QUERY-AND)
|
query (logand CLEARED-ALL (lognot CLEARED-VOIDED)) QOF-QUERY-AND)
|
||||||
(xaccQueryAddSingleAccountMatch query account QOF-QUERY-AND)
|
(xaccQueryAddSingleAccountMatch query account QOF-QUERY-AND)
|
||||||
(xaccQueryAddDateMatchTT query #t from-date #t to-date QOF-QUERY-AND)
|
(xaccQueryAddDateMatchTT query #t from-date #t to-date QOF-QUERY-AND)
|
||||||
(filter desc-filter? (qof-query-run query))))
|
(let ((result (filter desc-filter? (qof-query-run query))))
|
||||||
|
(qof-query-destroy query)
|
||||||
|
result)))
|
||||||
(transactions
|
(transactions
|
||||||
(sort-and-delete-duplicates
|
(sort-and-delete-duplicates
|
||||||
(map xaccSplitGetParent splits)
|
(map xaccSplitGetParent splits)
|
||||||
|
@ -63,7 +63,8 @@
|
|||||||
(qof-query-set-book query (gnc-get-current-book))
|
(qof-query-set-book query (gnc-get-current-book))
|
||||||
(xaccQueryAddAccountMatch query (list bank)
|
(xaccQueryAddAccountMatch query (list bank)
|
||||||
QOF-GUID-MATCH-ANY QOF-QUERY-AND)
|
QOF-GUID-MATCH-ANY QOF-QUERY-AND)
|
||||||
(set-option options "__reg" "query" (gnc-query2scm query)))
|
(set-option options "__reg" "query" (gnc-query2scm query))
|
||||||
|
(qof-query-destroy query))
|
||||||
|
|
||||||
(let ((sxml (options->sxml options "basic")))
|
(let ((sxml (options->sxml options "basic")))
|
||||||
;; this is a simplistic test - counts the number of populated
|
;; this is a simplistic test - counts the number of populated
|
||||||
|
@ -378,19 +378,19 @@
|
|||||||
(set! options (default-testing-options))
|
(set! options (default-testing-options))
|
||||||
(set-option! options "General" "Start Date" (cons 'absolute (gnc-dmy2time64 01 01 1969)))
|
(set-option! options "General" "Start Date" (cons 'absolute (gnc-dmy2time64 01 01 1969)))
|
||||||
(set-option! options "General" "End Date" (cons 'absolute (gnc-dmy2time64 31 12 1970)))
|
(set-option! options "General" "End Date" (cons 'absolute (gnc-dmy2time64 31 12 1970)))
|
||||||
(set-option! options "Filter" "Reconcile Status" 'unreconciled)
|
(set-option! options "Filter" "Reconciled Status" 'unreconciled)
|
||||||
(let ((sxml (options->sxml options "unreconciled")))
|
(let ((sxml (options->sxml options "unreconciled")))
|
||||||
(test-equal "filter unreconciled only, sum = -$20.00"
|
(test-equal "filter unreconciled only, sum = -$20.00"
|
||||||
'("-$20.00")
|
'("-$20.00")
|
||||||
(get-row-col sxml -1 -1)))
|
(get-row-col sxml -1 -1)))
|
||||||
|
|
||||||
(set-option! options "Filter" "Reconcile Status" 'cleared)
|
(set-option! options "Filter" "Reconciled Status" 'cleared)
|
||||||
(let ((sxml (options->sxml options "cleared")))
|
(let ((sxml (options->sxml options "cleared")))
|
||||||
(test-equal "filter cleared only, sum = $29.00"
|
(test-equal "filter cleared only, sum = $29.00"
|
||||||
'("$29.00")
|
'("$29.00")
|
||||||
(get-row-col sxml -1 -1)))
|
(get-row-col sxml -1 -1)))
|
||||||
|
|
||||||
(set-option! options "Filter" "Reconcile Status" 'reconciled)
|
(set-option! options "Filter" "Reconciled Status" 'reconciled)
|
||||||
(let ((sxml (options->sxml options "reconciled")))
|
(let ((sxml (options->sxml options "reconciled")))
|
||||||
(test-equal "filter reconciled only, sum = -$8.00"
|
(test-equal "filter reconciled only, sum = -$8.00"
|
||||||
'("-$8.00")
|
'("-$8.00")
|
||||||
|
@ -71,10 +71,10 @@ cashobjects_register(void)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail(gnc_commodity_table_register(), FALSE);
|
g_return_val_if_fail(gnc_commodity_table_register(), FALSE);
|
||||||
g_return_val_if_fail(xaccAccountRegister(), FALSE);
|
g_return_val_if_fail(xaccAccountRegister(), FALSE);
|
||||||
g_return_val_if_fail ( xaccTransRegister(), FALSE);
|
|
||||||
g_return_val_if_fail ( xaccSplitRegister(), FALSE);
|
|
||||||
g_return_val_if_fail ( gnc_sxtt_register(), FALSE);
|
g_return_val_if_fail ( gnc_sxtt_register(), FALSE);
|
||||||
g_return_val_if_fail ( SXRegister (), FALSE);
|
g_return_val_if_fail ( SXRegister (), FALSE);
|
||||||
|
g_return_val_if_fail ( xaccTransRegister(), FALSE);
|
||||||
|
g_return_val_if_fail ( xaccSplitRegister(), FALSE);
|
||||||
g_return_val_if_fail(gnc_pricedb_register(), FALSE);
|
g_return_val_if_fail(gnc_pricedb_register(), FALSE);
|
||||||
g_return_val_if_fail (gnc_budget_register(), FALSE);
|
g_return_val_if_fail (gnc_budget_register(), FALSE);
|
||||||
g_return_val_if_fail ( gnc_lot_register (), FALSE);
|
g_return_val_if_fail ( gnc_lot_register (), FALSE);
|
||||||
|
@ -12,3 +12,6 @@ gnucash/import-export/qif/qif-parse.c
|
|||||||
# These files are autogenerated, and hence not distributed
|
# These files are autogenerated, and hence not distributed
|
||||||
gnucash/gnome-utils/gnc-warnings.c
|
gnucash/gnome-utils/gnc-warnings.c
|
||||||
libgnucash/engine/iso-4217-currencies.c
|
libgnucash/engine/iso-4217-currencies.c
|
||||||
|
|
||||||
|
# This file containing @PROJECT_NAME@ shouldn't be translated.
|
||||||
|
gnucash/gschemas/org.gnucash.GnuCash.deprecated.gschema.xml.in
|
||||||
|
66
po/it.po
66
po/it.po
@ -52,10 +52,10 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GnuCash 4.7-pre2\n"
|
"Project-Id-Version: GnuCash 4.7-pre2\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
|
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
||||||
"product=GnuCash&component=Translations\n"
|
"cgi?product=GnuCash&component=Translations\n"
|
||||||
"POT-Creation-Date: 2021-09-20 22:29+0200\n"
|
"POT-Creation-Date: 2021-09-20 22:29+0200\n"
|
||||||
"PO-Revision-Date: 2021-08-30 15:32+0000\n"
|
"PO-Revision-Date: 2021-10-02 06:36+0000\n"
|
||||||
"Last-Translator: Giuseppe Foti <foti.giuseppe@gmail.com>\n"
|
"Last-Translator: Giuseppe Foti <foti.giuseppe@gmail.com>\n"
|
||||||
"Language-Team: Italian <https://hosted.weblate.org/projects/gnucash/gnucash/"
|
"Language-Team: Italian <https://hosted.weblate.org/projects/gnucash/gnucash/"
|
||||||
"it/>\n"
|
"it/>\n"
|
||||||
@ -64,7 +64,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.8.1-dev\n"
|
"X-Generator: Weblate 4.9-dev\n"
|
||||||
|
|
||||||
#: bindings/guile/commodity-table.scm:44
|
#: bindings/guile/commodity-table.scm:44
|
||||||
msgid "ALL NON-CURRENCY"
|
msgid "ALL NON-CURRENCY"
|
||||||
@ -4415,6 +4415,10 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Move the subaccounts or delete them before attempting to delete this account."
|
"Move the subaccounts or delete them before attempting to delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Il conto «%s» ha più di un sottoconto.\n"
|
||||||
|
"\n"
|
||||||
|
"Sposta i sottoconti o eliminali prima di tentare l'eliminazione di questo "
|
||||||
|
"conto."
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1728
|
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1728
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -10477,16 +10481,12 @@ msgid "To find the last stable version, please refer to {1}"
|
|||||||
msgstr "Per ottenere l'ultima versione stabile, fare riferimento a {1}"
|
msgstr "Per ottenere l'ultima versione stabile, fare riferimento a {1}"
|
||||||
|
|
||||||
#: gnucash/gnucash-core-app.cpp:102
|
#: gnucash/gnucash-core-app.cpp:102
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Load report configuration"
|
|
||||||
msgid "Loading system scm configuration..."
|
msgid "Loading system scm configuration..."
|
||||||
msgstr "Carica configurazione del resoconto"
|
msgstr "Sto caricando la configurazione scm di sistema..."
|
||||||
|
|
||||||
#: gnucash/gnucash-core-app.cpp:114
|
#: gnucash/gnucash-core-app.cpp:114
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Load report configuration"
|
|
||||||
msgid "Loading user scm configuration..."
|
msgid "Loading user scm configuration..."
|
||||||
msgstr "Carica configurazione del resoconto"
|
msgstr "Sto caricando la configurazione scm dell'utente..."
|
||||||
|
|
||||||
#: gnucash/gnucash-core-app.cpp:223
|
#: gnucash/gnucash-core-app.cpp:223
|
||||||
msgid "- GnuCash, accounting for personal and small business finance"
|
msgid "- GnuCash, accounting for personal and small business finance"
|
||||||
@ -18706,22 +18706,16 @@ msgid "R_emind in advance"
|
|||||||
msgstr "_Ricorda in anticipo di"
|
msgstr "_Ricorda in anticipo di"
|
||||||
|
|
||||||
#: gnucash/gtkbuilder/dialog-sx.glade:724
|
#: gnucash/gtkbuilder/dialog-sx.glade:724
|
||||||
#, fuzzy
|
|
||||||
#| msgid "_Review created transactions"
|
|
||||||
msgid "Re_view created transactions"
|
msgid "Re_view created transactions"
|
||||||
msgstr "_Controlla le transazioni create"
|
msgstr "_Controlla le transazioni create"
|
||||||
|
|
||||||
#: gnucash/gtkbuilder/dialog-sx.glade:728
|
#: gnucash/gtkbuilder/dialog-sx.glade:728
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "Set \"Review Created Transactions\" as the default for the \"since last "
|
|
||||||
#| "run\" dialog."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Set 'Review created transactions' as the default in the \"since last run\" "
|
"Set 'Review created transactions' as the default in the \"since last run\" "
|
||||||
"dialog."
|
"dialog."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Imposta «Controlla le transazioni create» come impostazione predefinita per "
|
"Imposta «Controlla le transazioni create» come impostazione predefinita "
|
||||||
"la finestra «dall'ultimo avvio»."
|
"nella finestra «dall'ultimo avvio»."
|
||||||
|
|
||||||
#: gnucash/gtkbuilder/dialog-sx.glade:765
|
#: gnucash/gtkbuilder/dialog-sx.glade:765
|
||||||
msgid "Edit Scheduled Transaction"
|
msgid "Edit Scheduled Transaction"
|
||||||
@ -19968,31 +19962,6 @@ msgstr ""
|
|||||||
|
|
||||||
#. See https://wiki.gnucash.org/wiki/AqBanking for the used terminology and replace the link, if a localized version exists.
|
#. See https://wiki.gnucash.org/wiki/AqBanking for the used terminology and replace the link, if a localized version exists.
|
||||||
#: gnucash/import-export/aqb/assistant-ab-initial.glade:47
|
#: gnucash/import-export/aqb/assistant-ab-initial.glade:47
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "The requirements for Online Banking vary between the different supported "
|
|
||||||
#| "AqBanking backends, but usually you will need:\n"
|
|
||||||
#| "* Your bank needs to grant you online access. See on their website or ask "
|
|
||||||
#| "their customer service for how to obtain it.\n"
|
|
||||||
#| "They should also tell you:\n"
|
|
||||||
#| "* Your user ID that identifies you to their server, often your base "
|
|
||||||
#| "account number;\n"
|
|
||||||
#| "* The URL of their Online Banking server;\n"
|
|
||||||
#| "* In some cases the routing number of your bank's branch is useful in "
|
|
||||||
#| "this assistant;\n"
|
|
||||||
#| "* Authentication methods vary by backend and choosen method:\n"
|
|
||||||
#| " * FinTS PIN/TAN: Some methods require a specific gadget like a card "
|
|
||||||
#| "reader or a mobile;\n"
|
|
||||||
#| " * FinTS HBCI: You have to exchange the public parts of asymmetric keys "
|
|
||||||
#| "with your bank (\"Ini-Letter\").\n"
|
|
||||||
#| " * PayPal: registered email address, password, API signature;\n"
|
|
||||||
#| "\n"
|
|
||||||
#| "See https://wiki.gnucash.org/wiki/AqBanking for more details.\n"
|
|
||||||
#| "\n"
|
|
||||||
#| "Note: NO WARRANTIES FOR ANYTHING. Some banks run a poorly implemented "
|
|
||||||
#| "Online Banking server. You should not rely on time-critical transfers "
|
|
||||||
#| "through Online Banking, because sometimes the bank does not give you "
|
|
||||||
#| "correct feedback when a transfer is rejected."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The requirements for Online Banking vary between the different supported "
|
"The requirements for Online Banking vary between the different supported "
|
||||||
"AqBanking backends, but usually you will need:\n"
|
"AqBanking backends, but usually you will need:\n"
|
||||||
@ -22393,16 +22362,13 @@ msgid "Unknown OFX investment account"
|
|||||||
msgstr "Conto investimento OFX sconosciuto"
|
msgstr "Conto investimento OFX sconosciuto"
|
||||||
|
|
||||||
#: gnucash/import-export/ofx/gnc-ofx-import.c:1201
|
#: gnucash/import-export/ofx/gnc-ofx-import.c:1201
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
#| msgid ""
|
|
||||||
#| "OFX file '%s' imported, %d transactions processed, no transactions to "
|
|
||||||
#| "match"
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"OFX file '%s', imported transactions for account '%s'\n"
|
"OFX file '%s', imported transactions for account '%s'\n"
|
||||||
"%d transactions processed, no transactions to match"
|
"%d transactions processed, no transactions to match"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"File OFX '%s' importato, processate %d transazioni, nessuna transazione da "
|
"File OFX «%s», transazioni importate per il conto «%s», \n"
|
||||||
"incrociare"
|
"processate %d transazioni, nessuna transazione da incrociare"
|
||||||
|
|
||||||
#: gnucash/import-export/ofx/gnc-ofx-import.c:1302
|
#: gnucash/import-export/ofx/gnc-ofx-import.c:1302
|
||||||
msgid "Open/Quicken Financial Exchange file (*.ofx, *.qfx)"
|
msgid "Open/Quicken Financial Exchange file (*.ofx, *.qfx)"
|
||||||
@ -28317,6 +28283,8 @@ msgstr "Totali periodo"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"* Amounts denoted thus are derived from, and do not match the transaction."
|
"* Amounts denoted thus are derived from, and do not match the transaction."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"* Gli importi così indicati sono derivati e non corrispondono alla "
|
||||||
|
"transazione."
|
||||||
|
|
||||||
#: gnucash/report/reports/standard/new-owner-report.scm:868
|
#: gnucash/report/reports/standard/new-owner-report.scm:868
|
||||||
#: gnucash/report/reports/standard/owner-report.scm:535
|
#: gnucash/report/reports/standard/owner-report.scm:535
|
||||||
|
45
po/zh_CN.po
45
po/zh_CN.po
@ -17,13 +17,14 @@
|
|||||||
# TianXing_Yi <ytx.cash@gmail.com>, 2021.
|
# TianXing_Yi <ytx.cash@gmail.com>, 2021.
|
||||||
# cjh <cjh@cjh0613.com>, 2021.
|
# cjh <cjh@cjh0613.com>, 2021.
|
||||||
# Eric <spice2wolf@gmail.com>, 2021.
|
# Eric <spice2wolf@gmail.com>, 2021.
|
||||||
|
# J0kWang <lianjiefly@gmail.com>, 2021.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GnuCash 4.7-pre2\n"
|
"Project-Id-Version: GnuCash 4.7-pre2\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
||||||
"cgi?product=GnuCash&component=Translations\n"
|
"cgi?product=GnuCash&component=Translations\n"
|
||||||
"POT-Creation-Date: 2021-09-20 22:29+0200\n"
|
"POT-Creation-Date: 2021-09-20 22:29+0200\n"
|
||||||
"PO-Revision-Date: 2021-09-28 05:36+0000\n"
|
"PO-Revision-Date: 2021-10-10 06:03+0000\n"
|
||||||
"Last-Translator: TianXing_Yi <ytx.cash@gmail.com>\n"
|
"Last-Translator: TianXing_Yi <ytx.cash@gmail.com>\n"
|
||||||
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
|
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
|
||||||
"gnucash/gnucash/zh_Hans/>\n"
|
"gnucash/gnucash/zh_Hans/>\n"
|
||||||
@ -2716,7 +2717,7 @@ msgstr "预付"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The transfer and post accounts are associated with different currencies. "
|
"The transfer and post accounts are associated with different currencies. "
|
||||||
"Please specify the conversion rate."
|
"Please specify the conversion rate."
|
||||||
msgstr "转出和入账的科目被指定了不同的币种。请指定转换汇率。"
|
msgstr "转出和入账科目币种不同,请设置汇率。"
|
||||||
|
|
||||||
#: gnucash/gnome/dialog-payment.c:1307 gnucash/gnome/search-owner.c:211
|
#: gnucash/gnome/dialog-payment.c:1307 gnucash/gnome/search-owner.c:211
|
||||||
#: gnucash/gnome-search/dialog-search.c:1077
|
#: gnucash/gnome-search/dialog-search.c:1077
|
||||||
@ -2769,9 +2770,7 @@ msgid ""
|
|||||||
"You have no valid \"Post To\" accounts. Please create an account of type \"%s"
|
"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 "
|
"\" before you continue to process this payment. Perhaps you want to create "
|
||||||
"an Invoice or Bill first?"
|
"an Invoice or Bill first?"
|
||||||
msgstr ""
|
msgstr "尚无有效的“入账”科目,请先创建一个、类型为“%s”;也许应先创建一个发票或账单?"
|
||||||
"您没有有效的“入账”科目。请在继续处理此付款前创建一个类型为“%s”的科目。也许您"
|
|
||||||
"希望先创建一个发票或账单?"
|
|
||||||
|
|
||||||
#: gnucash/gnome/dialog-payment.c:1621
|
#: gnucash/gnome/dialog-payment.c:1621
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -4175,11 +4174,13 @@ msgid ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Move the subaccounts or delete them before attempting to delete this account."
|
"Move the subaccounts or delete them before attempting to delete this account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\"%s\"有一个或多个子科目。\n"
|
||||||
|
"删除该科目前请先删除所有的子科目。"
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1728
|
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1728
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The account %s will be deleted."
|
msgid "The account %s will be deleted."
|
||||||
msgstr "将删除 %s,"
|
msgstr "将删除 %s,"
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1737
|
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1737
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -4199,7 +4200,7 @@ msgstr "将它的所有子科目转移到科目 %s 中。"
|
|||||||
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1759
|
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1759
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Its subaccount will be deleted."
|
msgid "Its subaccount will be deleted."
|
||||||
msgstr "同时删除所有子科目,"
|
msgstr "删除所有子科目。"
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1763
|
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1763
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -5755,9 +5756,7 @@ msgstr "更新当前报表的已保存配置。报表配置将保存在文件%s
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Add the current report's configuration to the 'Reports->Saved Report "
|
"Add the current report's configuration to the 'Reports->Saved Report "
|
||||||
"Configurations' menu. The report configuration will be saved in the file %s."
|
"Configurations' menu. The report configuration will be saved in the file %s."
|
||||||
msgstr ""
|
msgstr "添加当前报表配置到\"报表 -> 已保存模板\",配置将被保存在文件%s中。"
|
||||||
"将当前报表的配置添加到'报表->已保存的自定义报表'菜单中。报表配置将被保存在文"
|
|
||||||
"件%s中。"
|
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-report.c:1205
|
#: gnucash/gnome/gnc-plugin-page-report.c:1205
|
||||||
msgid "_Print Report..."
|
msgid "_Print Report..."
|
||||||
@ -5773,7 +5772,7 @@ msgstr "导出为 PDF(_D)..."
|
|||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-report.c:1211
|
#: gnucash/gnome/gnc-plugin-page-report.c:1211
|
||||||
msgid "Export the current report as a PDF document"
|
msgid "Export the current report as a PDF document"
|
||||||
msgstr "将当前报告导出为 PDF 文档"
|
msgstr "将当前报表导出为 PDF 文档"
|
||||||
|
|
||||||
#: gnucash/gnome/gnc-plugin-page-report.c:1236
|
#: gnucash/gnome/gnc-plugin-page-report.c:1236
|
||||||
msgid "Save _Report Configuration"
|
msgid "Save _Report Configuration"
|
||||||
@ -7184,7 +7183,7 @@ msgstr "启动余额的算帐已以指定的货币存在。"
|
|||||||
|
|
||||||
#: gnucash/gnome-utils/dialog-account.c:1329
|
#: gnucash/gnome-utils/dialog-account.c:1329
|
||||||
msgid "Cannot change currency"
|
msgid "Cannot change currency"
|
||||||
msgstr "无法更改货币"
|
msgstr "无法更改币种"
|
||||||
|
|
||||||
#: gnucash/gnome-utils/dialog-account.c:1418
|
#: gnucash/gnome-utils/dialog-account.c:1418
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -8310,7 +8309,7 @@ msgstr "GnuCash 无法找到帮助文件。"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"This is likely because the \"gnucash-docs\" package is not properly "
|
"This is likely because the \"gnucash-docs\" package is not properly "
|
||||||
"installed."
|
"installed."
|
||||||
msgstr "GnuCash 无法找到帮助文件。这很可能是因为没有安装“gnucash-docs”这个包。"
|
msgstr "这可能是因为 \"gnucash-docs \"软件包没有正确安装。"
|
||||||
|
|
||||||
#. Translators: URI of missing help files
|
#. Translators: URI of missing help files
|
||||||
#: gnucash/gnome-utils/gnc-gnome-utils.c:74
|
#: gnucash/gnome-utils/gnc-gnome-utils.c:74
|
||||||
@ -8634,7 +8633,7 @@ msgstr ""
|
|||||||
"Aron Xu <happyaron.xu@gmail.com>, 2010\n"
|
"Aron Xu <happyaron.xu@gmail.com>, 2010\n"
|
||||||
"Tao Wang <dancefire@gmail.com>, 2010\n"
|
"Tao Wang <dancefire@gmail.com>, 2010\n"
|
||||||
"Boyuan Yang <073plan@gmail.com>, 2019\n"
|
"Boyuan Yang <073plan@gmail.com>, 2019\n"
|
||||||
"TianXing_Yi <ytx.cash@gmail.com>, 2021\n"
|
"YTX <ytx.cash@gmail.com>, 2021\n"
|
||||||
"CJH <c@cjh0613.com>, 2021"
|
"CJH <c@cjh0613.com>, 2021"
|
||||||
|
|
||||||
#: gnucash/gnome-utils/gnc-main-window.c:4740
|
#: gnucash/gnome-utils/gnc-main-window.c:4740
|
||||||
@ -10052,8 +10051,8 @@ msgid ""
|
|||||||
"removed in GnuCash 5.0. Please use 'gnucash-cli --quotes get <datafile>' "
|
"removed in GnuCash 5.0. Please use 'gnucash-cli --quotes get <datafile>' "
|
||||||
"instead."
|
"instead."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"gnucash的'--add-price-quotes'选项已被弃用,并将在GnuCash 5.0中删除。请改"
|
"GnuCash 5.0 将删除已弃选项'--add-price-quotes',请改用'gnucash-cli --quotes get "
|
||||||
"用'gnucash-cli --quotes get <datafile>'。"
|
"<datafile>'。"
|
||||||
|
|
||||||
#: gnucash/gnucash.cpp:348
|
#: gnucash/gnucash.cpp:348
|
||||||
msgid "Run '{1} --help' to see a full list of available command line options."
|
msgid "Run '{1} --help' to see a full list of available command line options."
|
||||||
@ -21639,7 +21638,7 @@ msgstr "sample:(x + 0.33 * y + (x+y) )"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"Could not determine the account currency. Using the default currency "
|
"Could not determine the account currency. Using the default currency "
|
||||||
"provided by your system."
|
"provided by your system."
|
||||||
msgstr "无法确定帐户币种。将使用系统的默认货币。"
|
msgstr "无法确定科目币种,将使用系统默认的选项。"
|
||||||
|
|
||||||
#: gnucash/register/ledger-core/split-register-model.c:253
|
#: gnucash/register/ledger-core/split-register-model.c:253
|
||||||
msgid "Ref"
|
msgid "Ref"
|
||||||
@ -22090,7 +22089,7 @@ msgstr "按科目名称的字母顺序排列"
|
|||||||
|
|
||||||
#: gnucash/report/options-utilities.scm:205
|
#: gnucash/report/options-utilities.scm:205
|
||||||
msgid "Numerical by descending amount"
|
msgid "Numerical by descending amount"
|
||||||
msgstr ""
|
msgstr "按金额数字递减排列"
|
||||||
|
|
||||||
#: gnucash/report/options-utilities.scm:223
|
#: gnucash/report/options-utilities.scm:223
|
||||||
msgid "How to show the balances of parent accounts."
|
msgid "How to show the balances of parent accounts."
|
||||||
@ -24182,7 +24181,7 @@ msgstr "在左侧显示资产,右侧显示负债和所有者权益"
|
|||||||
|
|
||||||
#: gnucash/report/reports/standard/balsheet-eg.scm:224
|
#: gnucash/report/reports/standard/balsheet-eg.scm:224
|
||||||
msgid "Sign: -$10.00"
|
msgid "Sign: -$10.00"
|
||||||
msgstr ""
|
msgstr "符号: -$10.00"
|
||||||
|
|
||||||
#: gnucash/report/reports/standard/balsheet-eg.scm:225
|
#: gnucash/report/reports/standard/balsheet-eg.scm:225
|
||||||
msgid "Brackets: ($10.00)"
|
msgid "Brackets: ($10.00)"
|
||||||
@ -26203,7 +26202,7 @@ msgstr "期间开始"
|
|||||||
#: gnucash/report/reports/standard/new-owner-report.scm:510
|
#: gnucash/report/reports/standard/new-owner-report.scm:510
|
||||||
msgid ""
|
msgid ""
|
||||||
"* Amounts denoted thus are derived from, and do not match the transaction."
|
"* Amounts denoted thus are derived from, and do not match the transaction."
|
||||||
msgstr ""
|
msgstr "这些金额所表示的是由推算得出,与交易不匹配。"
|
||||||
|
|
||||||
#: gnucash/report/reports/standard/new-owner-report.scm:868
|
#: gnucash/report/reports/standard/new-owner-report.scm:868
|
||||||
#: gnucash/report/reports/standard/owner-report.scm:535
|
#: gnucash/report/reports/standard/owner-report.scm:535
|
||||||
@ -26267,7 +26266,7 @@ msgstr "显示文件链接?"
|
|||||||
|
|
||||||
#: gnucash/report/reports/standard/new-owner-report.scm:1068
|
#: gnucash/report/reports/standard/new-owner-report.scm:1068
|
||||||
msgid "No valid account found"
|
msgid "No valid account found"
|
||||||
msgstr "找不到匹配的"
|
msgstr "没有有效的科目"
|
||||||
|
|
||||||
#: gnucash/report/reports/standard/new-owner-report.scm:1069
|
#: gnucash/report/reports/standard/new-owner-report.scm:1069
|
||||||
msgid "This report requires a valid AP/AR account to be available."
|
msgid "This report requires a valid AP/AR account to be available."
|
||||||
@ -26785,7 +26784,7 @@ msgstr "表格头边框颜色"
|
|||||||
|
|
||||||
#: gnucash/report/reports/standard/taxinvoice.scm:92
|
#: gnucash/report/reports/standard/taxinvoice.scm:92
|
||||||
msgid "table-cell-border-color"
|
msgid "table-cell-border-color"
|
||||||
msgstr "table-cell-border-color"
|
msgstr "单元格边框颜色"
|
||||||
|
|
||||||
#: gnucash/report/reports/standard/taxinvoice.scm:93
|
#: gnucash/report/reports/standard/taxinvoice.scm:93
|
||||||
msgid "Embedded CSS"
|
msgid "Embedded CSS"
|
||||||
@ -27888,7 +27887,7 @@ msgstr "指定详细显示事务的数量。"
|
|||||||
|
|
||||||
#: gnucash/report/trep-engine.scm:978
|
#: gnucash/report/trep-engine.scm:978
|
||||||
msgid "One split per line"
|
msgid "One split per line"
|
||||||
msgstr ""
|
msgstr "每个子交易一行"
|
||||||
|
|
||||||
#: gnucash/report/trep-engine.scm:979
|
#: gnucash/report/trep-engine.scm:979
|
||||||
msgid "One transaction per line"
|
msgid "One transaction per line"
|
||||||
|
Loading…
Reference in New Issue
Block a user