This file is indexed.

/usr/include/gnucash/Period.h is in gnucash-common 1:2.4.10-6.

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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/********************************************************************\
 * Period.h -- Implement accounting Periods                         *
 *                                                                  *
 * 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 Period Accounting Periods
    The architecture of the Accounting Period design is discussed
    in greater detail in the file "src/doc/books.txt"
    @{ */
/** @file Period.h
 *  @brief Implement accounting periods, as per design in src/doc/books.txt
 *  @author Copyright (c) 2001,2003 Linas Vepstas <linas@linas.org>
 */


#ifndef XACC_PERIOD_H
#define XACC_PERIOD_H

#include "gnc-engine.h"


/** The gnc_book_close_period() routine will 'close' a book at
 *    the indicated date.  It returns a pointer to the closed book,
 *    while the argument remains open.  This routine will move
 *    all of the older transactions from the open book to the
 *    closed book.  The guid's of the old transactions will not
 *    be changed in the move.  Note, however, that the closed
 *    book will have a copy of every account in the open book,
 *    and that these copies will have new GncGUID's issued to them.
 *    Thus, every account has a 'twin' in the other book.
 *
 *    This routine will also create 'equity transactions' in
 *    order to preserve the balances on accounts.  For any
 *    account that is not of income, expense, trading or equity type,
 *    this routine wil find the closing balance of each account
 *    in the closed book.  It will then create an 'equity
 *    transaction' in the open book, creating an opening balance
 *    between an equity account and the twin account to the
 *    closed account.  The 'memo' field will be used to set
 *    the description in the equity transaction.  Typically,
 *    you will want to set this field to _("Opening Balance").
 *
 *    The equity_account argument is supposed to indicate the
 *    equity account in the open book into which the opening
 *    balances will be placed.   This argument may be NULL,
 *    if it is NULL, then a search algorithm will be used to
 *    find a suitable equity account.  If NULL, this routine
 *    searches for the 'nearest' account of GNCAccountType ACCT_TYPE_EQUITY
 *    among its siblings, or the siblings of its parents.  It
 *    does not search downwards.  If it does not find such an
 *    account, it will create one, hanging off the top-most group.
 *
 *    This routine also populates a number of KVP values in
 *    order to make a log of the closing.  In principle, the
 *    stored KVP's should be enough to locate everything needed
 *    to safely re-open and re-close a closed book.  In particular,
 *    if a closed book is re-opened, the 'equity transaction'
 *    would need to be adjusted.
 *
 *    The kvp values that are set are:
 *
 *    Implemented in the closed book:
 *    /book/close-date       Latest date in this book. Must not change.
 *    /book/log-date         Date on which user called this routine.
 *    /book/next-book        GncGUID of next book (the still-open book).
 *
 *    Implemented in still-open book:
 *    /book/open-date        Earliest date in this book.
 *    /book/prev-book        GncGUID of previous book (the closed book).
 *
 *    Implemented in the balancing transaction:
 *    /book/closed-acct      GncGUID of account whose balance was brought forward
 *    /book/closed-book      GncGUID of book whose balance was brought forward
 *
 *    Implemented in the closed account:
 *    /book/balancing-trans  GncGUID of equity-balancing transaction.
 *    /book/next-book        GncGUID of equity-balancing book.
 *    /book/next-acct        GncGUID of twin of this account in the open book.
 *
 *    Implemented in the still-open account:
 *    /book/prev-acct         GncGUID of twin of this account in the closed book.
 *    /book/prev-book         GncGUID of previous book (the closed book)
 *
 */
QofBook * gnc_book_close_period (QofBook *, Timespec,
                                 Account *equity_acct,
                                 const char *memo);

/** The gnc_book_partition_txn() uses the result of the indicated query
 *    to move a set of transactions from the "src" book to the "dest"
 *    book.  Before moving the transactions, it will first place a
 *    copy of all of the accounts in "src" into "dest".  This is done
 *    in order to ensure that all of the moved transactions will have
 *    the corrrect set of accounts to reference.  The transactions
 *    that will be moved are precisely those specified by the query.
 *    Any query that returns a list of transactions will work to
 *    partition a book; however, its expected that this routine will
 *    mostly serve as a utility to break up a book into accounting
 *    periods.
 *
 *    This routine intentionally does not copy scheduled/recurring
 *    transactions.
 *
 *    This routine will also copy closed lots to the destination book.
 *    NOTICE:
 *    It will not copy open lots, nor will it copy lots that have
 *    lead to transactions that contains splits in other open lots.
 *    Leaving behind open lots is exactly what is needed for closing
 *    books, but it means that gnc_book_partition() is not really
 *    a 'general purpose' function.  The way to fix this would be to
 *    weed out open lots by constructing the query correctly.
 *
 *    When an account is copied, the copy is issued a new GncGUID.
 *    The GncGUID of its sibling is placed in the 'gemini' KVP value
 *    (See kvp_doc.txt for more detail).   Transactions and splits
 *    are moved without reassigning them a new GncGUID.  Note they
 *    are removed from one book's entity table and placed into the
 *    other book:  Once moved, they won't be findable in the entity
 *    table of the old book.
 *
 *    Known Bugs:
 *    When this routine copies accounts, it does not check to see
 *    if they already exist in the 'dest' book; it should.
 *    For the current usage, this bug aint important, and I'm too
 *    lazy to fix it.
 */
void gnc_book_partition_txn (QofBook *dest, QofBook *src, QofQuery *);

/** The gnc_book_partition_pricedb() routine uses te result of the
 *   indicated query to move a set of prices from the "src" book
 *   to the "dest" book.  The query passed into it must be set up
 *   to return a list of prices.
 */
void gnc_book_partition_pricedb (QofBook *dest, QofBook *src, QofQuery *);

/** The gnc_book_insert_trans_clobber() routine takes an existing
 *    transaction that is located in one book, and moves it to
 *    another book.  It moves all of the splits as well.  In the
 *    course of the move, the transaction is literally deleted
 *    from the first book as its placed into the second.  The
 *    transaction and split GncGUID's are not changed in the move.
 *    This routine assumes that twin accounts already exist in
 *    both books (and can be located with the standard twining
 *    proceedure).
 *
 *    Note that this routine does *not* move the lots that any
 *    of the splits might belong to.  These must be moved sepearately.
 *    Note that one must take care when moving a transaction, so
 *    that any associated lots don't end up hamstrung across two
 *    different books.
 *
 * The gnc_book_insert_trans() routine does the same as the above,
 *    except that it doesn't actually clobber the transaction: it
 *    merely moves the transaction and split GncGUID's to the new
 *    books' entity tables, and not much else.
 *
 * The gnc_book_insert_lot() routine, as above, but for lots ...
 */

void gnc_book_insert_trans (QofBook *book, Transaction *trans);
void gnc_book_insert_trans_clobber (QofBook *book, Transaction *trans);

void gnc_book_insert_lot (QofBook *book, GNCLot *lot);
void gnc_book_insert_lot_clobber (QofBook *book, GNCLot *lot);

void gnc_book_insert_price (QofBook *book, GNCPrice *prc);
void gnc_book_insert_price_clobber (QofBook *book, GNCPrice *prc);

#endif /* XACC_PERIOD_H */
/** @} */
/** @} */