diff options
Diffstat (limited to 'office/gnucash/missing-py/gnucash_core.py')
-rw-r--r-- | office/gnucash/missing-py/gnucash_core.py | 752 |
1 files changed, 0 insertions, 752 deletions
diff --git a/office/gnucash/missing-py/gnucash_core.py b/office/gnucash/missing-py/gnucash_core.py deleted file mode 100644 index 578e800ed7..0000000000 --- a/office/gnucash/missing-py/gnucash_core.py +++ /dev/null @@ -1,752 +0,0 @@ -# gnucash_core.py -- High level python wrapper classes for the core parts -# of GnuCash -# -# Copyright (C) 2008 ParIT Worker Co-operative <paritinfo@parit.ca> -# 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 -# -# @author Mark Jenkins, ParIT Worker Co-operative <mark@parit.ca> -# @author Jeff Green, ParIT Worker Co-operative <jeff@parit.ca> - -# The following is for doxygen -## @file -# @brief High level python wrapper classes for the core parts of GnuCash -# @author Mark Jenkins, ParIT Worker Co-operative <mark@parit.ca> -# @author Jeff Green, ParIT Worker Co-operative <jeff@parit.ca> -# @ingroup python_bindings - -import gnucash_core_c - -from function_class import \ - ClassFromFunctions, extract_attributes_with_prefix, \ - default_arguments_decorator, method_function_returns_instance, \ - methods_return_instance, process_list_convert_to_instance, \ - method_function_returns_instance_list, methods_return_instance_lists - -from gnucash_core_c import gncInvoiceLookup, gncInvoiceGetInvoiceFromTxn, \ - gncInvoiceGetInvoiceFromLot, gncEntryLookup, gncInvoiceLookup, \ - gncCustomerLookup, gncVendorLookup, gncJobLookup, gncEmployeeLookup, \ - gncTaxTableLookup, gncTaxTableLookupByName, gnc_search_invoice_on_id, \ - gnc_search_customer_on_id, gnc_search_bill_on_id , gnc_search_vendor_on_id, \ - gncInvoiceNextID, gncCustomerNextID, gncTaxTableGetTables, gncVendorNextID - -class GnuCashCoreClass(ClassFromFunctions): - _module = gnucash_core_c - - def do_lookup_create_oo_instance(self, lookup_function, cls, *args): - thing = lookup_function(self.get_instance(), *args) - if thing != None: - thing = cls(instance=thing) - return thing - - -class GnuCashBackendException(Exception): - def __init__(self, msg, errors): - Exception.__init__(self, msg) - self.errors = errors - -class Session(GnuCashCoreClass): - """A GnuCash book editing session - - To commit changes to the session you may need to call save, - (this is always the case with the file backend). - - When you're down with a session you may need to call end() - - Every Session has a Book in the book attribute, which you'll definitely - be interested in, as every GnuCash entity (Transaction, Split, Vendor, - Invoice..) is associated with a particular book where it is stored. - """ - - def __init__(self, book_uri=None, ignore_lock=False, is_new=False, - force_new= False): - """A convenient constructor that allows you to specify a book URI, - begin the session, and load the book. - - This can give you the power of calling - qof_session_new, qof_session_begin, and qof_session_load all in one! - - book_uri can be None to skip the calls to qof_session_begin and - qof_session_load, or it can be a string like "file:/test.xac" - - qof_session_load is only called if is_new is set to False - - is_new is passed to qof_session_begin as the argument create, - and force_new as the argument force. Is_new will create a new - database or file; force will force creation even if it will - destroy an existing dataset. - - ignore_lock is passed to qof_session_begin's argument of the - same name and is used to break an existing lock on a dataset. - - - - This function can raise a GnuCashBackendException. If it does, - you don't need to cleanup and call end() and destroy(), that is handled - for you, and the exception is raised. - """ - GnuCashCoreClass.__init__(self) - if book_uri is not None: - try: - self.begin(book_uri, ignore_lock, is_new, force_new) - # Take care of backend inconsistency - # New xml file can't be loaded, new sql store - # has to be loaded before it can be altered - # Any existing store obviously has to be loaded - # More background: https://bugzilla.gnome.org/show_bug.cgi?id=726891 - if book_uri[:3] != "xml" or not is_new: - self.load() - except GnuCashBackendException, backend_exception: - self.end() - self.destroy() - raise - - def raise_backend_errors(self, called_function="qof_session function"): - """Raises a GnuCashBackendException if there are outstanding - QOF_BACKEND errors. - - set called_function to name the function that was last called - """ - errors = self.pop_all_errors() - if errors != (): - raise GnuCashBackendException( - "call to %s resulted in the " - "following errors, %s" % (called_function, backend_error_dict[errors[0]]), - errors ) - - def generate_errors(self): - """A generator that yields any outstanding QofBackend errors - """ - while self.get_error() is not ERR_BACKEND_NO_ERR: - error = self.pop_error() - yield error - - def pop_all_errors(self): - """Returns any accumulated qof backend errors as a tuple - """ - return tuple( self.generate_errors() ) - - # STATIC METHODS - @staticmethod - def raise_backend_errors_after_call(function): - """A function decorator that results in a call to - raise_backend_errors after execution. - """ - def new_function(self, *args): - return_value = function(self, *args) - self.raise_backend_errors(function.__name__) - return return_value - return new_function - -class Book(GnuCashCoreClass): - """A Book encapsulates all of the GnuCash data, it is the place where - all GnuCash entities (Transaction, Split, Vendor, Invoice...), are - stored. You'll notice that all of the constructors for those entities - need a book to be associated with. - - The most common way to get a book is through the book property in the - Session class, that is, create a session that connects to some storage, - such as through 'my_session = Session('file:my_books.xac')', and access - the book via the book property, 'my_session.book' - - If you would like to create a Book without any backing storage, call the - Book constructor without any parameters, 'Book()'. You can later merge - such a book into a book with actual store by using merge_init. - - Methods of interest - get_root_account -- Returns the root level Account - get_table -- Returns a commodity lookup table, of type GncCommodityTable - """ - def InvoiceLookup(self, guid): - from gnucash_business import Invoice - return self.do_lookup_create_oo_instance( - gncInvoiceLookup, Invoice, guid.get_instance() ) - - def EntryLookup(self, guid): - from gnucash_business import Entr - return self.do_lookup_create_oo_instance( - gncEntryLookup, Entry, guid.get_instance() ) - - def CustomerLookup(self, guid): - from gnucash_business import Customer - return self.do_lookup_create_oo_instance( - gncCustomerLookup, Customer, guid.get_instance()) - - def JobLookup(self, guid): - from gnucash_business import Job - return self.do_lookup_create_oo_instance( - gncJobLookup, Job, guid.get_instance() ) - - def VendorLookup(self, guid): - from gnucash_business import Vendor - return self.do_lookup_create_oo_instance( - gncVendorLookup, Vendor, guid.get_instance() ) - - def EmployeeLookup(self, guid): - from gnucash_business import Employee - return self.do_lookup_create_oo_instance( - gncEmployeeLookup, Employee, guid.get_instance() ) - - def TaxTableLookup(self, guid): - from gnucash_business import TaxTable - return self.do_lookup_create_oo_instance( - gncTaxTableLookup, TaxTable, guid.get_instance() ) - - def TaxTableLookupByName(self, name): - from gnucash_business import TaxTable - return self.do_lookup_create_oo_instance( - gncTaxTableLookupByName, TaxTable, name) - - def TaxTableGetTables(self): - from gnucash_business import TaxTable - return [ TaxTable(instance=item) for item in gncTaxTableGetTables(self.instance) ] - - def BillLoookupByID(self, id): - from gnucash_business import Bill - return self.do_lookup_create_oo_instance( - gnc_search_bill_on_id, Bill, id) - - def InvoiceLookupByID(self, id): - from gnucash_business import Invoice - return self.do_lookup_create_oo_instance( - gnc_search_invoice_on_id, Invoice, id) - - def CustomerLookupByID(self, id): - from gnucash_business import Customer - return self.do_lookup_create_oo_instance( - gnc_search_customer_on_id, Customer, id) - - def VendorLookupByID(self, id): - from gnucash_business import Vendor - return self.do_lookup_create_oo_instance( - gnc_search_vendor_on_id, Vendor, id) - - def InvoiceNextID(self, customer): - ''' Return the next invoice ID. - This works but I'm not entirely happy with it. FIX ME''' - from gnucash.gnucash_core_c import gncInvoiceNextID - return gncInvoiceNextID(self.get_instance(),customer.GetEndOwner().get_instance()[1]) - - def BillNextID(self, vendor): - ''' Return the next Bill ID. ''' - from gnucash.gnucash_core_c import gncInvoiceNextID - return gncInvoiceNextID(self.get_instance(),vendor.GetEndOwner().get_instance()[1]) - - def CustomerNextID(self): - ''' Return the next Customer ID. ''' - from gnucash.gnucash_core_c import gncCustomerNextID - return gncCustomerNextID(self.get_instance()) - - def VendorNextID(self): - ''' Return the next Vendor ID. ''' - from gnucash.gnucash_core_c import gncVendorNextID - return gncVendorNextID(self.get_instance()) - -class GncNumeric(GnuCashCoreClass): - """Object used by GnuCash to store all numbers. Always consists of a - numerator and denominator. - - The constants GNC_DENOM_AUTO, - GNC_HOW_RND_FLOOR, GNC_HOW_RND_CEIL, GNC_HOW_RND_TRUNC, - GNC_HOW_RND_PROMOTE, GNC_HOW_RND_ROUND_HALF_DOWN, - GNC_HOW_RND_ROUND_HALF_UP, GNC_HOW_RND_ROUND, GNC_HOW_RND_NEVER, - GNC_HOW_DENOM_EXACT, GNC_HOW_DENOM_REDUCE, GNC_HOW_DENOM_LCD, - and GNC_HOW_DENOM_FIXED are available for arithmetic - functions like GncNumeric.add - - Look at gnc-numeric.h to see how to use these - """ - - def __init__(self, num=0, denom=1, **kargs): - """Constructor that allows you to set the numerator and denominator or - leave them blank with a default value of 0 (not a good idea since there - is currently no way to alter the value after instantiation) - """ - GnuCashCoreClass.__init__(self, num, denom, **kargs) - #if INSTANCE_ARG in kargs: - # GnuCashCoreClass.__init__(**kargs) - #else: - # self.set_denom(denom) # currently undefined - # self.set_num(num) # currently undefined - - def __unicode__(self): - """Returns a human readable numeric value string as UTF8.""" - if self.denom() == 0: - return "Division by zero" - else: - value_float = self.to_double() - value_str = u"{0:.{1}f}".format(value_float,2) ## The second argument is the precision. It would be nice to be able to make it configurable. - return value_str - - def __str__(self): - """returns a human readable numeric value string as bytes.""" - return unicode(self).encode('utf-8') - -class GncPrice(GnuCashCoreClass): - ''' - Each priceEach price in the database represents an "instantaneous" - quote for a given commodity with respect to another commodity. - For example, a given price might represent the value of LNUX in USD on 2001-02-03. - - Fields: - * commodity: the item being priced. - * currency: the denomination of the value of the item being priced. - * value: the value of the item being priced. - * time: the time the price was valid. - * source: a string describing the source of the quote. These strings will be something like this: - "Finance::Quote", "user:misc", "user:foo", etc. If the quote came from a user, as a matter of policy, - you *must* prefix the string you give with "user:". For now, the only other reserved values are - "Finance::Quote" and "old-file-import". Any string used must be added to the source_list array in - dialog-price-edit-db.c so that it can be properly translated. (There are unfortunately many strings - in users' databases, so this string must be translated on output instead of always being used in untranslated form). - * type: the type of quote - types possible right now are bid, ask, last, nav, and - unknown.Each price in the database represents an "instantaneous" quote for a given - commodity with respect to another commodity. - For example, a given price might represent the value of LNUX in USD on 2001-02-03. - - See also http://code.gnucash.org/docs/head/group__Price.html - ''' - pass -GncPrice.add_methods_with_prefix('gnc_price_') - - -class GncPriceDB(GnuCashCoreClass): - ''' - a simple price database for gnucash. - The PriceDB is intended to be a database of price quotes, or more specifically, - a database of GNCPrices. For the time being, it is still a fairly simple - database supporting only fairly simple queries. It is expected that new - queries will be added as needed, and that there is some advantage to delaying - complex queries for now in the hope that we get a real DB implementation - before they're really needed. - - Every QofBook contains a GNCPriceDB, accessible via gnc_pricedb_get_db. - - Definition in file gnc-pricedb.h. - See also http://code.gnucash.org/docs/head/gnc-pricedb_8h.html - ''' - -GncPriceDB.add_methods_with_prefix('gnc_pricedb_') -PriceDB_dict = { - 'lookup_latest' : GncPrice, - 'lookup_nearest_in_time' : GncPrice, - 'lookup_latest_before' : GncPrice, - 'convert_balance_latest_price' : GncNumeric, - 'convert_balance_nearest_price' : GncNumeric, - } -methods_return_instance(GncPriceDB,PriceDB_dict) -GncPriceDB.get_prices = method_function_returns_instance_list( - GncPriceDB.get_prices, GncPrice ) - - -class GncCommodity(GnuCashCoreClass): pass - -class GncCommodityTable(GnuCashCoreClass): - """A CommodityTable provides a way to store and lookup commodities. - Commodities are primarily currencies, but other tradable things such as - stocks, mutual funds, and material substances are possible. - - Users of this library should not create their own CommodityTable, instead - the get_table method from the Book class should be used. - - This table is automatically populated with the GnuCash default commodity's - which includes most of the world's currencies. - """ - - pass - -class GncCommodityNamespace(GnuCashCoreClass): - pass - -class GncLot(GnuCashCoreClass): - def GetInvoiceFromLot(self): - from gnucash_business import Invoice - return self.do_lookup_create_oo_instance( - gncInvoiceGetInvoiceFromLot, Invoice ) - -class Transaction(GnuCashCoreClass): - """A GnuCash Transaction - - Consists of at least one (generally two) splits to represent a transaction - between two accounts. - - - Has a GetImbalance() method that returns a list of all the imbalanced - currencies. Each list item is a two element tuple, the first element is - the imbalanced commodity, the second element is the value. - - Warning, the commodity.get_instance() value can be None when there - is no currency set for the transaction. - """ - _new_instance = 'xaccMallocTransaction' - def GetNthSplit(self, n): - return self.GetSplitList().pop(n) - - def GetInvoiceFromTxn(self): - from gnucash_business import Transaction - return self.do_lookup_create_oo_instance( - gncInvoiceGetInvoiceFromTxn, Transaction ) - -def decorate_monetary_list_returning_function(orig_function): - def new_function(self): - # warning, item.commodity has been shown to be None - # when the transaction doesn't have a currency - return [(GncCommodity(instance=item.commodity), - GncNumeric(instance=item.value)) - for item in orig_function(self) ] - return new_function - -class Split(GnuCashCoreClass): - """A GnuCash Split - - The most basic representation of a movement of currency from one account to - another. - """ - _new_instance = 'xaccMallocSplit' - -class Account(GnuCashCoreClass): - """A GnuCash Account. - - A fundamental entity in accounting, an Account provides representation - for a financial object, such as a ACCT_TYPE_BANK account, an - ACCT_TYPE_ASSET (like a building), - a ACCT_TYPE_LIABILITY (such as a bank loan), a summary of some type of - ACCT_TYPE_EXPENSE, or a summary of some source of ACCT_TYPE_INCOME . - - The words in upper case are the constants that GnuCash and this library uses - to describe account type. Here is the full list: - ACCT_TYPE_ASSET, ACCT_TYPE_BANK, ACCT_TYPE_CASH, ACCT_TYPE_CHECKING, \ - ACCT_TYPE_CREDIT, ACCT_TYPE_EQUITY, ACCT_TYPE_EXPENSE, ACCT_TYPE_INCOME, \ - ACCT_TYPE_LIABILITY, ACCT_TYPE_MUTUAL, ACCT_TYPE_PAYABLE, \ - ACCT_TYPE_RECEIVABLE, ACCT_TYPE_STOCK, ACCT_TYPE_ROOT, ACCT_TYPE_TRADING - - These are not strings, they are attributes you can import from this - module - """ - _new_instance = 'xaccMallocAccount' - -class GUID(GnuCashCoreClass): - _new_instance = 'guid_new_return' - -# Session -Session.add_constructor_and_methods_with_prefix('qof_session_', 'new') - -def one_arg_default_none(function): - return default_arguments_decorator(function, None, None) -Session.decorate_functions(one_arg_default_none, "load", "save") - -Session.decorate_functions( Session.raise_backend_errors_after_call, - "begin", "load", "save", "end") -Session.get_book = method_function_returns_instance( - Session.get_book, Book ) - -Session.book = property( Session.get_book ) - -# import all of the session backend error codes into this module -this_module_dict = globals() -for error_name, error_value, error_name_after_prefix in \ - extract_attributes_with_prefix(gnucash_core_c, 'ERR_'): - this_module_dict[ error_name ] = error_value - -#backend error codes used for reverse lookup -backend_error_dict = {} -for error_name, error_value, error_name_after_prefix in \ - extract_attributes_with_prefix(gnucash_core_c, 'ERR_'): - backend_error_dict[ error_value ] = error_name - -# GncNumeric denominator computation schemes -# Used for the denom argument in arithmetic functions like GncNumeric.add -from gnucash.gnucash_core_c import GNC_DENOM_AUTO - -# GncNumeric rounding instructions -# used for the how argument in arithmetic functions like GncNumeric.add -from gnucash.gnucash_core_c import \ - GNC_HOW_RND_FLOOR, GNC_HOW_RND_CEIL, GNC_HOW_RND_TRUNC, \ - GNC_HOW_RND_PROMOTE, GNC_HOW_RND_ROUND_HALF_DOWN, \ - GNC_HOW_RND_ROUND_HALF_UP, GNC_HOW_RND_ROUND, GNC_HOW_RND_NEVER - -# GncNumeric denominator types -# used for the how argument in arithmetic functions like GncNumeric.add -from gnucash.gnucash_core_c import \ - GNC_HOW_DENOM_EXACT, GNC_HOW_DENOM_REDUCE, GNC_HOW_DENOM_LCD, \ - GNC_HOW_DENOM_FIXED - -# import account types -from gnucash.gnucash_core_c import \ - ACCT_TYPE_ASSET, ACCT_TYPE_BANK, ACCT_TYPE_CASH, ACCT_TYPE_CHECKING, \ - ACCT_TYPE_CREDIT, ACCT_TYPE_EQUITY, ACCT_TYPE_EXPENSE, ACCT_TYPE_INCOME, \ - ACCT_TYPE_LIABILITY, ACCT_TYPE_MUTUAL, ACCT_TYPE_PAYABLE, \ - ACCT_TYPE_RECEIVABLE, ACCT_TYPE_STOCK, ACCT_TYPE_ROOT, ACCT_TYPE_TRADING - -#Book -Book.add_constructor_and_methods_with_prefix('qof_book_', 'new') -Book.add_method('gnc_book_get_root_account', 'get_root_account') -Book.add_method('gnc_book_set_root_account', 'set_root_account') -Book.add_method('gnc_commodity_table_get_table', 'get_table') -Book.add_method('gnc_pricedb_get_db', 'get_price_db') -Book.add_method('qof_book_increment_and_format_counter', 'increment_and_format_counter') - -#Functions that return Account -Book.get_root_account = method_function_returns_instance( - Book.get_root_account, Account ) -#Functions that return GncCommodityTable -Book.get_table = method_function_returns_instance( - Book.get_table, GncCommodityTable ) -#Functions that return GNCPriceDB -Book.get_price_db = method_function_returns_instance( - Book.get_price_db, GncPriceDB) - -# GncNumeric -GncNumeric.add_constructor_and_methods_with_prefix('gnc_numeric_', 'create') - -gncnumeric_dict = { - 'same' : GncNumeric, - 'add' : GncNumeric, - 'sub' : GncNumeric, - 'mul' : GncNumeric, - 'div' : GncNumeric, - 'neg' : GncNumeric, - 'abs' : GncNumeric, - 'add_fixed' : GncNumeric, - 'sub_fixed' : GncNumeric, - 'add_with_error' : GncNumeric, - 'sub_with_error' : GncNumeric, - 'mul_with_error' : GncNumeric, - 'div_with_error' : GncNumeric, - 'convert' : GncNumeric, - 'reduce' : GncNumeric - } -methods_return_instance(GncNumeric, gncnumeric_dict) - -# GncCommodity -GncCommodity.add_constructor_and_methods_with_prefix('gnc_commodity_', 'new') -#Functions that return GncCommodity -GncCommodity.clone = method_function_returns_instance( - GncCommodity.clone, GncCommodity ) - -# GncCommodityTable -GncCommodityTable.add_methods_with_prefix('gnc_commodity_table_') -commoditytable_dict = { - 'lookup' : GncCommodity, - 'lookup_unique' : GncCommodity, - 'find_full' : GncCommodity, - 'insert' : GncCommodity, - 'add_namespace': GncCommodityNamespace, - 'find_namespace': GncCommodityNamespace, - } -methods_return_instance(GncCommodityTable, commoditytable_dict) - -methods_return_instance_lists( - GncCommodityTable, { 'get_namespaces': GncCommodityNamespace, - 'get_namespaces_list': GncCommodityNamespace, - 'get_commodities': GncCommodity, - 'get_quotable_commodities': GncCommodity, - - } ) - -# GncCommodityNamespace -GncCommodityNamespace.add_methods_with_prefix('gnc_commodity_namespace_') -GncCommodityNamespace.get_commodity_list = \ - method_function_returns_instance_list( - GncCommodityNamespace.get_commodity_list, GncCommodity ) - -# GncLot -GncLot.add_constructor_and_methods_with_prefix('gnc_lot_', 'new') - -gnclot_dict = { - 'get_account' : Account, - 'get_book' : Book, - 'get_earliest_split' : Split, - 'get_latest_split' : Split, - 'get_balance' : GncNumeric, - 'lookup' : GncLot, - 'make_default' : GncLot - } -methods_return_instance(GncLot, gnclot_dict) - -# Transaction -Transaction.add_methods_with_prefix('xaccTrans') -Transaction.add_method('gncTransGetGUID', 'GetGUID'); - -trans_dict = { - 'GetSplit': Split, - 'FindSplitByAccount': Split, - 'Clone': Transaction, - 'Reverse': Transaction, - 'GetReversedBy': Transaction, - 'GetImbalanceValue': GncNumeric, - 'GetAccountValue': GncNumeric, - 'GetAccountAmount': GncNumeric, - 'GetAccountConvRate': GncNumeric, - 'GetAccountBalance': GncNumeric, - 'GetCurrency': GncCommodity, - 'GetGUID': GUID - } - -methods_return_instance(Transaction, trans_dict) -methods_return_instance_lists( - Transaction, { 'GetSplitList': Split, - }) -Transaction.decorate_functions( - decorate_monetary_list_returning_function, 'GetImbalance') - -# Split -Split.add_methods_with_prefix('xaccSplit') -Split.add_method('gncSplitGetGUID', 'GetGUID'); - -split_dict = { - 'GetBook': Book, - 'GetAccount': Account, - 'GetParent': Transaction, - 'Lookup': Split, - 'GetOtherSplit': Split, - 'GetAmount': GncNumeric, - 'GetValue': GncNumeric, - 'GetSharePrice': GncNumeric, - 'ConvertAmount': GncNumeric, - 'GetBaseValue': GncNumeric, - 'GetBalance': GncNumeric, - 'GetClearedBalance': GncNumeric, - 'GetReconciledBalance': GncNumeric, - 'VoidFormerAmount': GncNumeric, - 'VoidFormerValue': GncNumeric, - 'GetGUID': GUID - } -methods_return_instance(Split, split_dict) - -Split.account = property( Split.GetAccount, Split.SetAccount ) -Split.parent = property( Split.GetParent, Split.SetParent ) - -# Account -Account.add_methods_with_prefix('xaccAccount') -Account.add_methods_with_prefix('gnc_account_') -Account.add_method('gncAccountGetGUID', 'GetGUID'); - -account_dict = { - 'get_book' : Book, - 'Lookup' : Account, - 'get_parent' : Account, - 'get_root' : Account, - 'nth_child' : Account, - 'lookup_by_code' : Account, - 'lookup_by_name' : Account, - 'lookup_by_full_name' : Account, - 'FindTransByDesc' : Transaction, - 'FindSplitByDesc' : Split, - 'GetBalance' : GncNumeric, - 'GetClearedBalance' : GncNumeric, - 'GetReconciledBalance' : GncNumeric, - 'GetPresentBalance' : GncNumeric, - 'GetProjectedMinimumBalance' : GncNumeric, - 'GetBalanceAsOfDate' : GncNumeric, - 'ConvertBalanceToCurrency' : GncNumeric, - 'ConvertBalanceToCurrencyAsOfDate' : GncNumeric, - 'GetBalanceInCurrency' : GncNumeric, - 'GetClearedBalanceInCurrency' : GncNumeric, - 'GetReconciledBalanceInCurrency' : GncNumeric, - 'GetPresentBalanceInCurrency' : GncNumeric, - 'GetProjectedMinimumBalanceInCurrency' : GncNumeric, - 'GetBalanceAsOfDateInCurrency' : GncNumeric, - 'GetBalanceChangeForPeriod' : GncNumeric, - 'GetCommodity' : GncCommodity, - 'GetGUID': GUID - } -methods_return_instance(Account, account_dict) -methods_return_instance_lists( - Account, { 'GetSplitList': Split, - 'get_children': Account, - 'get_children_sorted': Account, - 'get_descendants': Account, - 'get_descendants_sorted': Account - }) -Account.name = property( Account.GetName, Account.SetName ) - -#GUID -GUID.add_methods_with_prefix('guid_') -GUID.add_method('xaccAccountLookup', 'AccountLookup') -GUID.add_method('xaccTransLookup', 'TransLookup') -GUID.add_method('xaccSplitLookup', 'SplitLookup') - -## define addition methods for GUID object - do we need these -GUID.add_method('guid_to_string', 'to_string') -#GUID.add_method('string_to_guid', 'string_to_guid') - -guid_dict = { - 'copy' : GUID, - 'TransLookup': Transaction, - 'AccountLookup': Account, - 'SplitLookup': Split - } -methods_return_instance(GUID, guid_dict) - -#GUIDString -class GUIDString(GnuCashCoreClass): - pass - -GUIDString.add_constructor_and_methods_with_prefix('string_', 'to_guid') - -#Query -from gnucash_core_c import \ - QOF_QUERY_AND, \ - QOF_QUERY_OR, \ - QOF_QUERY_NAND, \ - QOF_QUERY_NOR, \ - QOF_QUERY_XOR - -from gnucash_core_c import \ - QOF_STRING_MATCH_NORMAL, \ - QOF_STRING_MATCH_CASEINSENSITIVE - -from gnucash_core_c import \ - QOF_COMPARE_LT, \ - QOF_COMPARE_LTE, \ - QOF_COMPARE_EQUAL, \ - QOF_COMPARE_GT, \ - QOF_COMPARE_GTE, \ - QOF_COMPARE_NEQ - -from gnucash_core_c import \ - INVOICE_TYPE - -from gnucash_core_c import \ - INVOICE_IS_PAID - -class Query(GnuCashCoreClass): - pass - -Query.add_constructor_and_methods_with_prefix('qof_query_', 'create') - -Query.add_method('qof_query_set_book', 'set_book') -Query.add_method('qof_query_search_for', 'search_for') -Query.add_method('qof_query_run', 'run') -Query.add_method('qof_query_add_term', 'add_term') -Query.add_method('qof_query_add_boolean_match', 'add_boolean_match') -Query.add_method('qof_query_destroy', 'destroy') - -class QueryStringPredicate(GnuCashCoreClass): - pass - -QueryStringPredicate.add_constructor_and_methods_with_prefix('qof_query_', 'string_predicate') - -class QueryBooleanPredicate(GnuCashCoreClass): - pass - -QueryBooleanPredicate.add_constructor_and_methods_with_prefix('qof_query_', 'boolean_predicate') - -class QueryInt32Predicate(GnuCashCoreClass): - pass - -QueryInt32Predicate.add_constructor_and_methods_with_prefix('qof_query_', 'int32_predicate') |