/usr/include/gnucash/Scrub.h is in gnucash-common 1:2.6.15-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | /********************************************************************\
* Scrub.h -- convert single-entry accounts to clean double-entry *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License*
* along with this program; if not, contact: *
* *
* Free Software Foundation Voice: +1-617-542-5942 *
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
* Boston, MA 02110-1301, USA gnu@gnu.org *
* *
\********************************************************************/
/** @addtogroup Engine
@{ */
/** @addtogroup Scrub
Data scrubbing, repairing and forward migration routines.
These routines check and repair data, making sure that it
is in a format that the current version of the GnuCash
Engine likes. These routines serve both to provide backwards
compatibility with older versions of GnuCash, and to fix
or at least paper over possible current problems.
It is typically expected that the scrub routines are run
over newly imported data, as well as during data file input.
In some cases, it is entirely appropriate to invoke these
routines from the GUI, to validate that the user input
through the GUI is in a format that the system likes.
This includes things like balancing individual transactions,
or assigning splits to lots, so that capital gains can be
computed.
@{ */
/** @file Scrub.h
* @brief convert single-entry accounts to clean double-entry
* @author Created by Linas Vepstas December 1998
* @author Copyright (c) 1998-2000, 2003 Linas Vepstas <linas@linas.org>
*/
#ifndef XACC_SCRUB_H
#define XACC_SCRUB_H
#include "gnc-engine.h"
/** @name Double-Entry Scrubbing
Convert single-entry accounts to clean double-entry
Provides a set of functions and utilities for checking and
repairing (formerly called 'scrubbing clean') single-entry accounts
so that they can be promoted into self-consistent, clean
double-entry accounts. Basically and additionally, this file
collects all functions that turn old (deprecated) data structures
into the current new data model.
The ScrubOrphans() methods search for transacations that contain
splits that do not have a parent account. These "orphaned splits"
are placed into an "orphan account" which the user will have to
go into and clean up. Kind of like the unix "Lost+Found" directory
for orphaned inodes.
@{ */
/** The xaccTransScrubOrphans() method scrubs only the splits in the
* given transaction.
*/
void xaccTransScrubOrphans (Transaction *trans);
/** The xaccAccountScrubOrphans() method performs this scrub only for the
* indicated account, and not for any of its children.
*/
void xaccAccountScrubOrphans (Account *acc, QofPercentageFunc percentagefunc);
/** The xaccAccountTreeScrubOrphans() method performs this scrub for the
* indicated account and its children.
*/
void xaccAccountTreeScrubOrphans (Account *acc, QofPercentageFunc percentagefunc);
/** The xaccSplitScrub method ensures that if this split has the same
* commodity and currency, then it will have the same amount and value.
* If the commodity is the currency, the split->amount is set to the
* split value. In addition, if this split is an orphan, that is
* fixed first. If the split account doesn't have a commodity declared,
* an attempt is made to fix that first.
*/
void xaccSplitScrub (Split *split);
/** The xacc*ScrubSplits() calls xaccSplitScrub() on each split
* in the respective structure: transaction, account,
* account & it's children, account-group.
*/
void xaccTransScrubSplits (Transaction *trans);
void xaccAccountScrubSplits (Account *account);
void xaccAccountTreeScrubSplits (Account *account);
/** The xaccScrubImbalance() method searches for transactions that do
* not balance to zero. If any such transactions are found, a split
* is created to offset this amount and is added to an "imbalance"
* account.
*/
void xaccTransScrubImbalance (Transaction *trans, Account *root,
Account *parent);
void xaccAccountScrubImbalance (Account *acc, QofPercentageFunc percentagefunc);
void xaccAccountTreeScrubImbalance (Account *acc, QofPercentageFunc percentagefunc);
/** The xaccTransScrubCurrency method fixes transactions without a
* common_currency by looking for the most commonly used currency
* among all the splits in the transaction. If this fails it falls
* back to using the old account currency and security
* fields of the parent accounts of the transaction's splits. */
void xaccTransScrubCurrency (Transaction *trans);
/** The xaccAccountScrubCommodity method fixed accounts without
* a commodity by using the old account currency and security. */
void xaccAccountScrubCommodity (Account *account);
/** The xaccAccountTreeScrubCommodities will scrub the
* currency/commodity of all accounts & transactions in the specified
* account or any child account. */
void xaccAccountTreeScrubCommodities (Account *acc);
/** This routine will migrate the information about price quote
* sources from the account data structures to the commodity data
* structures. It first checks to see if this is necessary since,
* for the time being, the quote information will still be written
* out as part of the account. Just in case anyone needs to fall
* back from CVS to a production version of code.
*
* @param root A pointer to the root account containing all
* accounts in the current book.
*
* @param table A pointer to the commodity table for the current
* book.
*/
void xaccAccountTreeScrubQuoteSources (Account *root, gnc_commodity_table *table);
/** Removes empty "notes", "placeholder", and "hbci" KVP slots from Accounts. */
void xaccAccountScrubKvp (Account *account);
/** Changes Transaction date_posted timestamps from 00:00 local to 11:00 UTC.
* 11:00 UTC is the same day local time in almost all timezones, the exceptions
* being the -12, +13, and +14 timezones along the International Date Line. If
* Local time is set to one of these timezones then the new date_posted time
* will be adjusted as needed to ensure that the date doesn't change there. This
* change was made for v2.6.14 to partially resolve bug 137017.
*/
void xaccTransScrubPostedDate (Transaction *trans);
#endif /* XACC_SCRUB_H */
/** @} */
/** @} */
/** @} */
|