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
fcc3b27f92
@ -28,6 +28,7 @@
|
||||
#include <string>
|
||||
#include <numeric>
|
||||
#include <algorithm>
|
||||
#include <optional>
|
||||
|
||||
extern "C" {
|
||||
#include "Transaction.h"
|
||||
@ -58,8 +59,8 @@ static const char* ASSISTANT_STOCK_TRANSACTION_CM_CLASS = "assistant-stock-trans
|
||||
enum assistant_pages
|
||||
{
|
||||
PAGE_INTRO = 0,
|
||||
PAGE_TRANSACTION_DETAILS,
|
||||
PAGE_TRANSACTION_TYPE,
|
||||
PAGE_TRANSATION_DETAILS,
|
||||
PAGE_STOCK_AMOUNT,
|
||||
PAGE_STOCK_VALUE,
|
||||
PAGE_CASH,
|
||||
@ -428,7 +429,7 @@ typedef struct
|
||||
GtkWidget * window;
|
||||
GtkWidget * assistant;
|
||||
|
||||
const TxnTypeVec * txn_types;
|
||||
std::optional<TxnTypeVec> txn_types;
|
||||
Account * acct;
|
||||
gnc_commodity * currency;
|
||||
|
||||
@ -436,7 +437,7 @@ typedef struct
|
||||
GtkWidget * transaction_type_page;
|
||||
GtkWidget * transaction_type_combo;
|
||||
GtkWidget * transaction_type_explanation;
|
||||
const TxnTypeInfo * txn_type;
|
||||
std::optional<TxnTypeInfo> txn_type;
|
||||
|
||||
// transaction details page
|
||||
GtkWidget * transaction_details_page;
|
||||
@ -506,7 +507,10 @@ refresh_page_transaction_type (GtkWidget *widget, gpointer user_data)
|
||||
if (type_idx < 0) // combo isn't initialized yet.
|
||||
return;
|
||||
|
||||
info->txn_type = &(info->txn_types->at (type_idx));
|
||||
if (!info->txn_types)
|
||||
return;
|
||||
|
||||
info->txn_type = info->txn_types->at (type_idx);
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (info->transaction_type_explanation),
|
||||
_(info->txn_type->explanation));
|
||||
@ -692,7 +696,32 @@ refresh_page_finish (StockTransactionInfo *info)
|
||||
|
||||
gnc_numeric debit = gnc_numeric_zero ();
|
||||
gnc_numeric credit = gnc_numeric_zero ();
|
||||
StringVec errors;
|
||||
StringVec errors, warnings;
|
||||
|
||||
// check the stock transaction date. If there are existing stock
|
||||
// transactions dated after the date specified, it is very likely
|
||||
// the later stock transactions will be invalidated. warn the user
|
||||
// to review them.
|
||||
auto new_date = gnc_date_edit_get_date_end (GNC_DATE_EDIT (info->date_edit));
|
||||
auto last_split = static_cast<const Split*> (g_list_last (xaccAccountGetSplitList (info->acct))->data);
|
||||
auto last_split_date = xaccTransGetDate (xaccSplitGetParent (last_split));
|
||||
if (new_date <= last_split_date)
|
||||
{
|
||||
auto last_split_date_str = qof_print_date (last_split_date);
|
||||
auto new_date_str = qof_print_date (new_date);
|
||||
// Translators: the first %s is the new transaction date;
|
||||
// the second %s is the current stock account's latest
|
||||
// transaction date.
|
||||
auto warn_txt = g_strdup_printf (_("You will enter a transaction \
|
||||
with date %s which is earlier than the latest transaction in this account, \
|
||||
dated %s. Doing so may affect the cost basis, and therefore capital gains, \
|
||||
of transactions dated after the new entry. Please review all transactions \
|
||||
to ensure proper recording."), new_date_str, last_split_date_str);
|
||||
warnings.push_back (warn_txt);
|
||||
g_free (warn_txt);
|
||||
g_free (new_date_str);
|
||||
g_free (last_split_date_str);
|
||||
}
|
||||
|
||||
if (info->txn_type->stock_amount != FieldMask::DISABLED)
|
||||
{
|
||||
@ -763,23 +792,24 @@ refresh_page_finish (StockTransactionInfo *info)
|
||||
g_free (debit_str);
|
||||
}
|
||||
|
||||
if (errors.empty())
|
||||
// generate final summary message. Collates a header, the errors
|
||||
// and warnings. Then allow completion if errors is empty.
|
||||
auto header = errors.empty() ?
|
||||
N_("No errors found. Click Apply to create transaction.") :
|
||||
N_("The following errors must be fixed:");
|
||||
auto summary = std::string { _(header) };
|
||||
auto summary_add = [&summary](auto a) { summary += "\n• "; summary += a; };
|
||||
std::for_each (errors.begin(), errors.end(), summary_add);
|
||||
if (!warnings.empty())
|
||||
{
|
||||
auto success_msg = N_("No errors found. Click Apply to create transaction.");
|
||||
gtk_assistant_set_page_complete (GTK_ASSISTANT (info->window),
|
||||
info->finish_page, true);
|
||||
gtk_label_set_text (GTK_LABEL (info->finish_summary), _(success_msg));
|
||||
}
|
||||
else
|
||||
{
|
||||
auto header_str = N_("The following errors must be fixed:");
|
||||
auto header = std::string { _(header_str) };
|
||||
auto fold = [](auto a, auto b) { return std::move(a) + '\n' + std::move(b); };
|
||||
auto errmsg { std::accumulate (errors.begin(), errors.end(), header, fold) };
|
||||
gtk_assistant_set_page_complete (GTK_ASSISTANT (info->window),
|
||||
info->finish_page, false);
|
||||
gtk_label_set_text (GTK_LABEL (info->finish_summary), errmsg.c_str());
|
||||
auto warnings_header = N_ ("The following warnings exist:");
|
||||
summary += "\n\n";
|
||||
summary += _(warnings_header);
|
||||
std::for_each (warnings.begin(), warnings.end(), summary_add);
|
||||
}
|
||||
gtk_label_set_text (GTK_LABEL (info->finish_summary), summary.c_str());
|
||||
gtk_assistant_set_page_complete (GTK_ASSISTANT (info->window),
|
||||
info->finish_page, errors.empty());
|
||||
}
|
||||
|
||||
void
|
||||
@ -791,8 +821,15 @@ stock_assistant_prepare (GtkAssistant *assistant, GtkWidget *page,
|
||||
|
||||
switch (currentpage)
|
||||
{
|
||||
case PAGE_TRANSACTION_TYPE:
|
||||
case PAGE_TRANSACTION_TYPE:;
|
||||
// initialize transaction types.
|
||||
gnc_numeric balance;
|
||||
time64 date;
|
||||
date = gnc_date_edit_get_date_end (GNC_DATE_EDIT (info->date_edit));
|
||||
balance = xaccAccountGetBalanceAsOfDate (info->acct, date);
|
||||
info->txn_types = gnc_numeric_zero_p (balance) ? starting_types
|
||||
: gnc_numeric_positive_p (balance) ? long_types
|
||||
: short_types;
|
||||
gtk_combo_box_text_remove_all (GTK_COMBO_BOX_TEXT (info->transaction_type_combo));
|
||||
for (auto& it : *(info->txn_types))
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (info->transaction_type_combo),
|
||||
@ -1117,11 +1154,6 @@ stock_assistant_create (StockTransactionInfo *info)
|
||||
// Set the name for this assistant so it can be easily manipulated with css
|
||||
gtk_widget_set_name (GTK_WIDGET(info->window), "gnc-id-assistant-stock-transaction");
|
||||
|
||||
auto balance = xaccAccountGetBalance (info->acct);
|
||||
info->txn_types = gnc_numeric_zero_p (balance) ? &starting_types
|
||||
: gnc_numeric_positive_p (balance) ? &long_types
|
||||
: &short_types;
|
||||
|
||||
info->currency = gnc_account_get_currency_or_parent (info->acct);
|
||||
|
||||
/* Transaction Page Widgets */
|
||||
|
@ -28,88 +28,6 @@
|
||||
<property name="complete">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="transaction_type_page">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="border-width">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_page_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<property name="label" translatable="yes">Select the type of stock activity that you wish to record. The available types depend on whether the current stock balance is positive, nil, or negative (i.e. when shorting stock). The type will determine the component splits.</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<!-- n-columns=2 n-rows=2 -->
|
||||
<object class="GtkGrid" id="transaction_type_table">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="row-spacing">3</property>
|
||||
<property name="column-spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_combo_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Type</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="transaction_type_page_combobox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<items>
|
||||
<item translatable="yes">a1</item>
|
||||
<item translatable="yes">b2</item>
|
||||
<item translatable="yes">c3</item>
|
||||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_page_explanation">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">label</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="title" translatable="yes">Transaction Type</property>
|
||||
<property name="complete">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="transaction_details_page">
|
||||
<property name="visible">True</property>
|
||||
@ -186,6 +104,88 @@
|
||||
<property name="complete">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="transaction_type_page">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="border-width">6</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_page_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-bottom">6</property>
|
||||
<property name="label" translatable="yes">Select the type of stock activity that you wish to record. The available types depend on whether the current stock balance is positive, nil, or negative (i.e. when shorting stock). The type will determine the component splits.</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<!-- n-columns=2 n-rows=2 -->
|
||||
<object class="GtkGrid" id="transaction_type_table">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="row-spacing">3</property>
|
||||
<property name="column-spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_combo_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">Type</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="transaction_type_page_combobox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<items>
|
||||
<item>a1</item>
|
||||
<item>b2</item>
|
||||
<item>c3</item>
|
||||
</items>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="transaction_type_page_explanation">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label">label</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="title" translatable="yes">Transaction Type</property>
|
||||
<property name="complete">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="stock_amount_page">
|
||||
<property name="visible">True</property>
|
||||
@ -333,7 +333,7 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">(autocalculated price)</property>
|
||||
<property name="label">(autocalculated price)</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="justify">center</property>
|
||||
</object>
|
||||
@ -896,6 +896,7 @@
|
||||
<object class="GtkScrolledWindow" id="finish_scrolled">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vscrollbar-policy">never</property>
|
||||
<child>
|
||||
<object class="GtkTreeView" id="transaction_view">
|
||||
<property name="visible">True</property>
|
||||
@ -918,7 +919,8 @@
|
||||
<object class="GtkLabel" id="finish_summary">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes">summary of errors</property>
|
||||
<property name="label">summary of errors</property>
|
||||
<property name="wrap">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
@ -580,8 +580,8 @@ gnc_ab_trans_to_gnc(const AB_TRANSACTION *ab_trans, Account *gnc_acc)
|
||||
QofBook *book;
|
||||
Transaction *gnc_trans;
|
||||
const gchar *fitid;
|
||||
const GNC_GWEN_DATE *valuta_date;
|
||||
time64 current_time;
|
||||
const GNC_GWEN_DATE *value_date, *post_date;
|
||||
time64 current_time, post_time;
|
||||
const char *custref;
|
||||
gchar *description;
|
||||
Split *split;
|
||||
@ -595,22 +595,28 @@ gnc_ab_trans_to_gnc(const AB_TRANSACTION *ab_trans, Account *gnc_acc)
|
||||
xaccTransBeginEdit(gnc_trans);
|
||||
|
||||
/* Date / Time */
|
||||
valuta_date = AB_Transaction_GetValutaDate(ab_trans);
|
||||
if (!valuta_date)
|
||||
{
|
||||
const GNC_GWEN_DATE *normal_date = AB_Transaction_GetDate(ab_trans);
|
||||
if (normal_date)
|
||||
valuta_date = normal_date;
|
||||
}
|
||||
if (valuta_date)
|
||||
{
|
||||
time64 secs = gnc_gwen_date_to_time64(valuta_date);
|
||||
xaccTransSetDatePostedSecsNormalized(gnc_trans, secs);
|
||||
}
|
||||
/* SWIFT import formats (in particular MT940) provide for two
|
||||
* dates, the entry date and the value date (valuta is value in
|
||||
* German). The value date is the effective date for financial
|
||||
* calculation purposes and is mandatory, the entry date is the
|
||||
* date that the financial institution posted the
|
||||
* transaction. Since the entry date is normally closer to the
|
||||
* date that the customer's book should recognize the transaction
|
||||
* we prefer that date if present.
|
||||
*/
|
||||
post_date = AB_Transaction_GetDate(ab_trans);
|
||||
value_date = AB_Transaction_GetValutaDate(ab_trans);
|
||||
if (post_date)
|
||||
post_time = gnc_gwen_date_to_time64(post_date);
|
||||
else if (value_date)
|
||||
post_time = gnc_gwen_date_to_time64(value_date);
|
||||
else
|
||||
{
|
||||
g_warning("transaction_cb: Oops, date 'valuta_date' was NULL");
|
||||
g_warning("transaction_cb: Import had no transaction date");
|
||||
post_time = gnc_time (NULL);
|
||||
}
|
||||
xaccTransSetDatePostedSecsNormalized(gnc_trans, post_time);
|
||||
|
||||
xaccTransSetDateEnteredSecs(gnc_trans, gnc_time (NULL));
|
||||
|
||||
/* Currency. We take simply the default currency of the gnucash account */
|
||||
|
@ -841,25 +841,21 @@ void split_find_match (GNCImportTransInfo * trans_info,
|
||||
|
||||
/* append the imported transaction description to the matched transaction description */
|
||||
static void
|
||||
desc_append (Transaction* selected_match_trans, Transaction* imp_trans)
|
||||
desc_append (Transaction* selected_match_trans, gchar *new_desc)
|
||||
{
|
||||
gchar* tmp = g_strconcat( xaccTransGetDescription (selected_match_trans),
|
||||
"|",
|
||||
xaccTransGetDescription (imp_trans),
|
||||
NULL);
|
||||
const gchar* curr_desc = xaccTransGetDescription (selected_match_trans);
|
||||
gchar* tmp = g_strconcat(curr_desc, "|", new_desc, NULL);
|
||||
xaccTransSetDescription (selected_match_trans, tmp);
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
/* append the imported transaction notes to the matched transaction notes */
|
||||
static void
|
||||
notes_append (Transaction* selected_match_trans, Transaction* imp_trans)
|
||||
notes_append (Transaction* selected_match_trans, gchar* new_notes)
|
||||
{
|
||||
gchar* tmp = g_strconcat (xaccTransGetNotes (selected_match_trans),
|
||||
"|",
|
||||
xaccTransGetNotes (imp_trans),
|
||||
NULL);
|
||||
xaccTransSetNotes (selected_match_trans, tmp);
|
||||
const gchar* curr_notes = xaccTransGetNotes (selected_match_trans);
|
||||
gchar* tmp = g_strconcat (curr_notes, "|", new_notes, NULL);
|
||||
xaccTransSetNotes (selected_match_trans, tmp );
|
||||
g_free (tmp);
|
||||
}
|
||||
|
||||
@ -875,24 +871,44 @@ update_desc_and_notes (const GNCImportTransInfo* trans_info)
|
||||
|
||||
if (trans_info->append_text)
|
||||
{
|
||||
gchar* desc_imported = g_utf8_normalize (xaccTransGetDescription (
|
||||
imp_trans), -1, G_NORMALIZE_ALL);
|
||||
gchar* desc_matched = g_utf8_normalize (xaccTransGetDescription (
|
||||
selected_match->trans), -1, G_NORMALIZE_ALL);
|
||||
gchar* note_imported = g_utf8_normalize (xaccTransGetNotes (
|
||||
imp_trans), -1, G_NORMALIZE_ALL);
|
||||
gchar* note_matched = g_utf8_normalize (xaccTransGetNotes (
|
||||
selected_match->trans), -1, G_NORMALIZE_ALL);
|
||||
gchar *desc_imported, *desc_matched, *note_imported, *note_matched;
|
||||
const gchar* raw_str = xaccTransGetDescription (imp_trans);
|
||||
|
||||
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;
|
||||
|
||||
// Append if desc_imported not already in desc_matched
|
||||
if (g_utf8_strlen (desc_imported, -1) > g_utf8_strlen (desc_matched, -1) ||
|
||||
!strstr (desc_matched, desc_imported))
|
||||
desc_append (selected_match->trans, imp_trans);
|
||||
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 (g_utf8_strlen (note_imported, -1) > g_utf8_strlen (note_matched, -1) ||
|
||||
!strstr (note_matched, note_imported))
|
||||
notes_append (selected_match->trans, imp_trans);
|
||||
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);
|
||||
|
@ -170,8 +170,8 @@
|
||||
((string? rendered-elt)
|
||||
rendered-elt)
|
||||
((list? rendered-elt)
|
||||
(apply string-append
|
||||
(gnc:html-document-tree-collapse rendered-elt)))
|
||||
(string-concatenate
|
||||
(gnc:html-document-tree-collapse rendered-elt)))
|
||||
(#t
|
||||
(format #f "hold on there podner. form=~s\n" rendered-elt)
|
||||
""))))
|
||||
|
@ -382,28 +382,30 @@ also show overall period profit & loss."))
|
||||
(define (make-narrow-cell)
|
||||
(gnc:make-html-table-cell/min-width 1))
|
||||
|
||||
(define (show-depth? lvl)
|
||||
(or (not depth-limit) (<= lvl depth-limit)))
|
||||
|
||||
(define (add-indented-row indent label label-markup row-markup amount-indent rest)
|
||||
(when (or (not depth-limit) (<= indent depth-limit))
|
||||
(let* ((account-cell (if label-markup
|
||||
(gnc:make-html-table-cell/size/markup
|
||||
1 (if disable-account-indent? 1 (- maxindent indent))
|
||||
label-markup label)
|
||||
(gnc:make-html-table-cell/size
|
||||
1 (if disable-account-indent? 1 (- maxindent indent))
|
||||
label)))
|
||||
(row (append
|
||||
(if disable-account-indent?
|
||||
'()
|
||||
(make-list-thunk indent make-narrow-cell))
|
||||
(list account-cell)
|
||||
(gnc:html-make-empty-cells
|
||||
(if amount-indenting? (1- amount-indent) 0))
|
||||
(if reverse-cols? (reverse rest) rest)
|
||||
(gnc:html-make-empty-cells
|
||||
(if amount-indenting? (- maxindent amount-indent) 0)))))
|
||||
(if row-markup
|
||||
(gnc:html-table-append-row/markup! table row-markup row)
|
||||
(gnc:html-table-append-row! table row)))))
|
||||
(let* ((account-cell (if label-markup
|
||||
(gnc:make-html-table-cell/size/markup
|
||||
1 (if disable-account-indent? 1 (- maxindent indent))
|
||||
label-markup label)
|
||||
(gnc:make-html-table-cell/size
|
||||
1 (if disable-account-indent? 1 (- maxindent indent))
|
||||
label)))
|
||||
(row (append
|
||||
(if disable-account-indent?
|
||||
'()
|
||||
(make-list-thunk indent make-narrow-cell))
|
||||
(list account-cell)
|
||||
(gnc:html-make-empty-cells
|
||||
(if amount-indenting? (1- amount-indent) 0))
|
||||
(if reverse-cols? (reverse rest) rest)
|
||||
(gnc:html-make-empty-cells
|
||||
(if amount-indenting? (- maxindent amount-indent) 0)))))
|
||||
(if row-markup
|
||||
(gnc:html-table-append-row/markup! table row-markup row)
|
||||
(gnc:html-table-append-row! table row))))
|
||||
|
||||
(define (monetary+ . monetaries)
|
||||
;; usage: (monetary+ monetary...)
|
||||
@ -518,8 +520,9 @@ also show overall period profit & loss."))
|
||||
((_ . tail) (lp1 tail))))))))
|
||||
|
||||
(define* (add-recursive-subtotal lvl lvl-acct #:key account-style-normal?)
|
||||
(if (or show-zb-accts?
|
||||
(is-not-zero? (account-and-descendants lvl-acct)))
|
||||
(if (and (or show-zb-accts?
|
||||
(is-not-zero? (account-and-descendants lvl-acct)))
|
||||
(show-depth? lvl))
|
||||
(add-indented-row lvl
|
||||
(render-account lvl-acct (not account-style-normal?))
|
||||
(if account-style-normal?
|
||||
@ -545,9 +548,10 @@ also show overall period profit & loss."))
|
||||
(define* (add-account-row lvl-curr curr #:key
|
||||
(override-show-zb-accts? #f)
|
||||
(account-indent 0))
|
||||
(if (or show-zb-accts?
|
||||
override-show-zb-accts?
|
||||
(is-not-zero? (list curr)))
|
||||
(if (and (or show-zb-accts?
|
||||
override-show-zb-accts?
|
||||
(is-not-zero? (list curr)))
|
||||
(show-depth? lvl-curr))
|
||||
(add-indented-row lvl-curr
|
||||
(render-account curr #f)
|
||||
"text-cell"
|
||||
|
@ -174,7 +174,6 @@
|
||||
(cons 'N292 #(not-impl "Sched C" "Spouse" 0 #t "" ((1980 ""))))
|
||||
(cons 'N319 #(not-impl "Sched C" "Principal business/prof" 2 #t "" ((1980 "A"))))
|
||||
(cons 'N293 #(none "Sched C" "Gross receipts or sales" 1 #t "" ((2012 "1") (2011 "1b") (1989 "1") (1980 "1a"))))
|
||||
(cons 'N296 #(none "Sched C" "Returns and allowances" 1 #t "" ((1989 "2") (1980 "1b"))))
|
||||
(cons 'N303 #(none "Sched C" "Other business income" 1 #t "" ((1989 "6") (1987 "4") (1981 "4b") (1980 "4"))))
|
||||
|
||||
(cons 'N497 #(not-impl "Sched C-EZ" "Schedule C-EZ" 1 #t ""))
|
||||
|
29
po/es.po
29
po/es.po
@ -80,7 +80,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
||||
"cgi?product=GnuCash&component=Translations\n"
|
||||
"POT-Creation-Date: 2022-03-09 18:00-0800\n"
|
||||
"PO-Revision-Date: 2022-04-15 13:12+0000\n"
|
||||
"PO-Revision-Date: 2022-04-27 19:08+0000\n"
|
||||
"Last-Translator: Cow <javier.fserrador@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/gnucash/gnucash/"
|
||||
"es/>\n"
|
||||
@ -89,7 +89,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.12-dev\n"
|
||||
"X-Generator: Weblate 4.12.1-dev\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: <b>;</b>;<span weight=\"bold\" size=\"larger\""
|
||||
@ -559,9 +559,8 @@ msgid ""
|
||||
"The full path is displayed in the status bar."
|
||||
msgstr ""
|
||||
"Si desea conocer cuales directorios donde están almacenados los archivos "
|
||||
"GnuCash recientes, pase el cursor sobre una de los asientos en el menú de "
|
||||
"historial\n"
|
||||
"(Archivo[->Listado más recientes utilizados]).\n"
|
||||
"GnuCash recientes, pase el cursor sobre una de los asientos\n"
|
||||
"en el menú de historial (Archivo[->Listado más recientes utilizados]).\n"
|
||||
"La ruta completa es representada dentro de la barra de estado."
|
||||
|
||||
#: doc/tip_of_the_day.list.c:24
|
||||
@ -5176,7 +5175,7 @@ msgstr "_Borrar titular..."
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-owner-tree.c:178
|
||||
msgid "Delete selected owner"
|
||||
msgstr "Borrar el titular seleccionado"
|
||||
msgstr "Borra el titular seleccionado"
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-owner-tree.c:197
|
||||
msgid "Create a new bill"
|
||||
@ -5275,7 +5274,7 @@ msgid ""
|
||||
"Are you sure you want to do this?"
|
||||
msgstr ""
|
||||
"Este titular %s será eliminado.\n"
|
||||
"¿Seguro que desea hacer ésto?"
|
||||
"¿Seguro que desea hacer esto?"
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-register2.c:194
|
||||
#: gnucash/gnome/gnc-plugin-page-register.c:292
|
||||
@ -5591,12 +5590,12 @@ msgid ""
|
||||
"Show a second line with \"Action\", \"Notes\", and \"Linked Document\" for "
|
||||
"each transaction."
|
||||
msgstr ""
|
||||
"Muestra una línea adicional con \"Operación\", \"Notas\" y \"Documento "
|
||||
"Asociado\" para cada transacción."
|
||||
"Muestra una línea adicional con «Operación», «Notas» y «Documento Asociado» "
|
||||
"para cada transacción."
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-register2.c:430
|
||||
msgid "Show _Extra Dates"
|
||||
msgstr "Mostrar fechas _extra"
|
||||
msgstr "Mostrar fechas _adicionales"
|
||||
|
||||
#: gnucash/gnome/gnc-plugin-page-register2.c:431
|
||||
msgid "Show entered and reconciled dates"
|
||||
@ -22925,7 +22924,7 @@ msgstr "999'00"
|
||||
#: gnucash/register/ledger-core/gncEntryLedgerLayout.c:154
|
||||
msgctxt "sample for 'Billable'"
|
||||
msgid "BI"
|
||||
msgstr "Ca"
|
||||
msgstr "FA"
|
||||
|
||||
#: gnucash/register/ledger-core/gncEntryLedgerLayout.c:158
|
||||
msgctxt "sample"
|
||||
@ -23204,7 +23203,7 @@ msgstr "22/02/2000"
|
||||
#: gnucash/register/ledger-core/split-register-layout.c:671
|
||||
msgctxt "sample"
|
||||
msgid "99999"
|
||||
msgstr "99.999"
|
||||
msgstr "12345"
|
||||
|
||||
#: gnucash/register/ledger-core/split-register-layout.c:679
|
||||
msgctxt "sample"
|
||||
@ -30558,7 +30557,7 @@ msgstr "g"
|
||||
#: libgnucash/app-utils/gnc-ui-util.c:879
|
||||
msgctxt "Reconciled flag 'void'"
|
||||
msgid "v"
|
||||
msgstr "a"
|
||||
msgstr "p"
|
||||
|
||||
#: libgnucash/app-utils/gnc-ui-util.c:919
|
||||
msgctxt "Document Link flag for 'web'"
|
||||
@ -30568,7 +30567,7 @@ msgstr "w"
|
||||
#: libgnucash/app-utils/gnc-ui-util.c:921
|
||||
msgctxt "Document Link flag for 'file'"
|
||||
msgid "f"
|
||||
msgstr "f"
|
||||
msgstr "a"
|
||||
|
||||
#: libgnucash/app-utils/gnc-ui-util.c:950
|
||||
msgid "Opening Balances"
|
||||
@ -30723,7 +30722,7 @@ msgstr ""
|
||||
#: libgnucash/engine/gnc-commodity.h:112
|
||||
msgctxt "Commodity Type"
|
||||
msgid "All non-currency"
|
||||
msgstr "Todas excepto moneda"
|
||||
msgstr "Todo no monetario"
|
||||
|
||||
#: libgnucash/engine/gnc-commodity.h:113
|
||||
msgctxt "Commodity Type"
|
||||
|
11
po/hu.po
11
po/hu.po
@ -5,14 +5,15 @@
|
||||
# SULYOK Péter <peti@sulyok.hu>, 2003-2006.
|
||||
# Kornel Tako <takokornel@gmail.com>, 2007.
|
||||
# Kárász Attila <cult.edie@gmail.com>, 2022.
|
||||
# Szia Tomi <sziatomi01@gmail.com>, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GnuCash 4.9-pre1\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
|
||||
"cgi?product=GnuCash&component=Translations\n"
|
||||
"POT-Creation-Date: 2022-03-09 18:00-0800\n"
|
||||
"PO-Revision-Date: 2022-04-20 12:13+0000\n"
|
||||
"Last-Translator: Kárász Attila <cult.edie@gmail.com>\n"
|
||||
"PO-Revision-Date: 2022-04-29 01:08+0000\n"
|
||||
"Last-Translator: Szia Tomi <sziatomi01@gmail.com>\n"
|
||||
"Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
|
||||
"gnucash/hu/>\n"
|
||||
"Language: hu\n"
|
||||
@ -20,7 +21,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.12-dev\n"
|
||||
"X-Generator: Weblate 4.12.1-dev\n"
|
||||
|
||||
# #-#-#-#-# epiphany.HEAD.hu.po-new.po (Epiphany CVS) #-#-#-#-#
|
||||
# src/trans.h:283
|
||||
@ -3429,8 +3430,8 @@ msgid_plural ""
|
||||
"There are no Scheduled Transactions to be entered at this time. (%d "
|
||||
"transactions automatically created)"
|
||||
msgstr[0] ""
|
||||
"Nincs létrehozandó ütemezett tranzakció. (%d tranzakció automatikusan "
|
||||
"létrehozva)"
|
||||
"Jelenleg nincs ütemezett tranzakció amelyet meg kell adni. (%d tranzakció "
|
||||
"automatikusan létrejött)"
|
||||
|
||||
#: gnucash/gnome/dialog-sx-since-last-run.c:998
|
||||
#: gnucash/gnome-search/dialog-search.c:1104
|
||||
|
Loading…
Reference in New Issue
Block a user