# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= gnucash VERSION= 3.8b KEYWORDS= finance VARIANTS= standard SDESC[standard]= Financial accounting software HOMEPAGE= https://www.gnucash.org/ CONTACT= nobody DOWNLOAD_GROUPS= main SITES[main]= SF/gnucash/gnucash%20%28stable%29/3.8 DISTFILE[1]= gnucash-3.8b.tar.bz2:main DF_INDEX= 1 SPKGS[standard]= complete primary docs OPTIONS_AVAILABLE= none OPTIONS_STANDARD= none BUILD_DEPENDS= gmp:static:standard appstream-glib:primary:standard BUILDRUN_DEPENDS= gnome-keyring:single:standard icu:single:standard libsecret:primary:standard boost-libraries:rest:python_default boehm_garbage_collector:single:threaded fontconfig:primary:standard freetype:primary:standard libsoup:primary:standard aqbanking:single:standard libdbi-drivers:primary:sqlite libofx:primary:standard guile:single:standard webkit2:single:gtk3 RUN_DEPENDS= perl-Date-Manip:single:perl_default perl-Finance-Quote:single:perl_default perl-libwww-perl:single:perl_default USES= cmake:insource desktop-utils:primary gnome-icons:primary pkgconfig gettext-tools gettext-runtime libtool perl shebangfix zlib GNOME_COMPONENTS= gtk3 libxslt intltool XORG_COMPONENTS= x11 DISTNAME= gnucash-3.8 LICENSE= GPLv2+:primary GPLv3+:primary LICENSE_TERMS= primary:{{WRKDIR}}/TERMS LICENSE_FILE= GPLv2+:stock GPLv3+:stock LICENSE_AWK= TERMS:"^The text of the GNU GPL" LICENSE_SOURCE= TERMS:{{WRKSRC}}/LICENSE LICENSE_SCHEME= dual FPC_EQUIVALENT= finance/gnucash GLIB_SCHEMAS= org.gnucash.dialogs.business.gschema.xml org.gnucash.dialogs.checkprinting.gschema.xml org.gnucash.dialogs.commodities.gschema.xml org.gnucash.dialogs.export.csv.gschema.xml org.gnucash.dialogs.gschema.xml org.gnucash.dialogs.import.csv.gschema.xml org.gnucash.dialogs.import.generic.gschema.xml org.gnucash.dialogs.import.hbci.gschema.xml org.gnucash.dialogs.import.ofx.gschema.xml org.gnucash.dialogs.import.qif.gschema.xml org.gnucash.dialogs.reconcile.gschema.xml org.gnucash.dialogs.sxs.gschema.xml org.gnucash.dialogs.totd.gschema.xml org.gnucash.general.finance-quote.gschema.xml org.gnucash.gschema.xml org.gnucash.history.gschema.xml org.gnucash.warnings.gschema.xml org.gnucash.window.pages.account.tree.gschema.xml org.gnucash.window.pages.gschema.xml SHEBANG_FILES= common/gnc-test-env.pl libgnucash/quotes/gnc-fq-dump MAKE_ENV= XDG_CACHE_HOME={{WRKDIR}}/.cache SINGLE_JOB= yes CMAKE_ARGS= -DWITH_AQBANKING:BOOL=true -DWITH_SQL:BOOL=true -DWITH_OFX:BOOL=true -DCOMPILE_GSCHEMAS=OFF -DENABLE_BINRELOC=OFF -DGNC_SHELL=/bin/sh post-patch: # disable testing and fix XDG_DATA_DIRS (cd ${WRKSRC} && \ ${FIND} . -type f -name CMakeLists.txt \ -exec ${REINPLACE_CMD} \ -e 's|/usr/local/share|${PREFIX}/share|' \ -e 's|-Werror||' \ -e '/add_subdirectory *(test.*)/d' \ -e '/enable_testing()/d' -e '/include (GncAddTest)/d' \ -e '/INCLUDE (GncAddTest)/d' \ -e '/gnc_gtest_configure()/d' {} +) ${SED} -i.flag -e '/-Wno-deprecated-register/d' \ ${WRKSRC}/libgnucash/engine/CMakeLists.txt ${MKDIR} ${WRKSRC}/bin post-install: (cd ${STAGEDIR}${PREFIX}/etc/gnucash && \ ${MV} environment environment.sample) (cd ${STAGEDIR}${PREFIX}/share/gnucash/icons/hicolor && \ ${RM} -r 22x22 32x32 48x48 64x64 96x96 \ 128x128 256x256 scalable) ${RMDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/*/actions ${RMDIR} ${STAGEDIR}${PREFIX}/share/gnucash/icons/hicolor/16x16/apps ${RMDIR} ${STAGEDIR}${PREFIX}/share/gnucash/icons/hicolor/24x24/apps ${RM} ${STAGEDIR}${STD_DOCDIR}/ChangeLog* ${RM} ${STAGEDIR}${STD_DOCDIR}/LICENSE ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/gnucash/*.${LIBEXT} ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.${LIBEXT} ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/gnucash [FILE:431:descriptions/desc.primary] Gnucash is the next generation of money manager created from a merger of X-Accountant and GnoMoney. Its features include: * Ability to import Quicken files ( a must ) * Reports, Graphs, and all of those goodies that you find in Quicken. * Gnome compliant ( if that is the correct way to put it ) * Separate the GUI from the actual "account/transaction engine" * Multiple accounts ( Check, Credit, Cash, Mutual Funds, etc.. ) [FILE:99:distinfo] 0f5eca83d8836a325d9a02c6ed7b4d53e59abcff974e5d90914c9e15d7a87f37 14285584 gnucash-3.8b.tar.bz2 [FILE:32520:manifests/plist.primary] @sample etc/gnucash/environment.sample bin/ gnc-fq-check gnc-fq-dump gnc-fq-helper gnc-fq-update gnucash gnucash-valgrind include/gnucash/ Account.h FreqSpec.h Query.h QuickFill.h Recurrence.h SX-book.h SX-ttinfo.h SchedXaction.h Scrub.h Scrub2.h Scrub3.h ScrubBusiness.h Split.h TransLog.h Transaction.h account-quickfill.h assistant-xml-encoding.h basiccell.h business-options.h cap-gains.h cashobjects.h cell-factory.h cellblock.h checkboxcell.h combocell.h datecell.h dialog-account.h dialog-book-close.h dialog-commodity.h dialog-custom-report.h dialog-dup-trans.h dialog-file-access.h dialog-object-references.h dialog-options.h dialog-preferences.h dialog-query-view.h dialog-report-column-view.h dialog-report-style-sheet.h dialog-reset-warnings.h dialog-search.h dialog-totd.h dialog-transfer.h dialog-utils.h engine-helpers-guile.h engine-helpers.h file-utils.h formulacell.h gfec.h glib-helpers.h gnc-account-merge.h gnc-account-sel.h gnc-accounting-period.h gnc-addr-quickfill.h gnc-amount-edit.h gnc-aqbanking-templates.h gnc-basic-gobject.h gnc-budget.h gnc-cell-renderer-date.h gnc-cell-renderer-popup-entry.h gnc-cell-renderer-popup.h gnc-combott.h gnc-commodity-edit.h gnc-commodity.h gnc-component-manager.h gnc-currency-edit.h gnc-date-delta.h gnc-date-edit.h gnc-date-format.h gnc-date.h gnc-datetime.hpp gnc-dense-cal-model.h gnc-dense-cal-store.h gnc-dense-cal.h gnc-embedded-window.h gnc-engine.h gnc-entry-quickfill.h gnc-euro.h gnc-event.h gnc-exp-parser.h gnc-features.h gnc-file.h gnc-frequency.h gnc-general-search.h gnc-general-select.h gnc-gettext-util.h gnc-gnome-utils.h gnc-gsettings.h gnc-gui-query.h gnc-help-utils.h gnc-helpers.h gnc-hooks.h gnc-html-extras.h gnc-html-factory.h gnc-html-history.h gnc-html-p.h gnc-html-webkit-p.h gnc-html-webkit.h gnc-html-webkit2.h gnc-html.h gnc-icons.h gnc-keyring.h gnc-main-window.h gnc-menu-extensions.h gnc-module-api.h gnc-module.h gnc-numeric.h gnc-numeric.hpp gnc-period-select.h gnc-plugin-file-history.h gnc-plugin-manager.h gnc-plugin-menu-additions.h gnc-plugin-page-report.h gnc-plugin-page.h gnc-plugin.h gnc-prefs-utils.h gnc-pricedb.h gnc-query-view.h gnc-rational-rounding.hpp gnc-rational.hpp gnc-recurrence.h gnc-report.h gnc-session.h gnc-splash.h gnc-state.h gnc-sx-instance-dense-cal-adapter.h gnc-sx-instance-model.h gnc-sx-list-tree-model-adapter.h gnc-timezone.hpp gnc-tree-control-split-reg.h gnc-tree-model-account-types.h gnc-tree-model-account.h gnc-tree-model-budget.h gnc-tree-model-commodity.h gnc-tree-model-owner.h gnc-tree-model-price.h gnc-tree-model-split-reg.h gnc-tree-model.h gnc-tree-util-split-reg.h gnc-tree-view-account.h gnc-tree-view-commodity.h gnc-tree-view-owner.h gnc-tree-view-price.h gnc-tree-view-split-reg.h gnc-tree-view-sx-list.h gnc-tree-view.h gnc-ui-balances.h gnc-ui-util.h gnc-ui.h gnc-uri-utils.h gnc-window.h gncAddress.h gncAddressP.h gncBillTerm.h gncBillTermP.h gncBusGuile.h gncBusiness.h gncCustomer.h gncCustomerP.h gncEmployee.h gncEmployeeP.h gncEntry.h gncEntryP.h gncIDSearch.h gncInvoice.h gncInvoiceP.h gncJob.h gncJobP.h gncOrder.h gncOrderP.h gncOwner.h gncOwnerP.h gncTaxTable.h gncTaxTableP.h gncVendor.h gncVendorP.h gtable.h guid.h guid.hpp guile-util.h import-parse.h kvp-frame.hpp kvp-scm.h kvp-value.hpp misc-gnome-utils.h numcell.h option-util.h policy.h pricecell.h print-session.h qof-backend.hpp qof-gobject.h qof-string-cache.h qof.h qofbackend.h qofbook.h qofbookslots.h qofchoice.h qofclass.h qofevent.h qofid-p.h qofid.h qofinstance-p.h qofinstance.h qoflog.h qofobject.h qofquery.h qofquerycore.h qofsession.h qofsession.hpp qofutil.h quickfillcell.h recncell.h register-common.h table-allgui.h table-control.h table-layout.h table-model.h tree-view-utils.h window-main-summarybar.h window-report.h lib/ libgnc-backend-sql.so libgnc-backend-xml-utils.so libgnc-core-utils.so libgnc-gnome.so libgnc-module.so libgwengui-gtk3.so lib/gnucash/ libgncmod-app-utils.so libgncmod-aqbanking.so libgncmod-backend-dbi.so libgncmod-backend-xml.so libgncmod-bi-import.so libgncmod-csv-export.so libgncmod-csv-import.so libgncmod-customer-import.so libgncmod-engine.so libgncmod-generic-import.so libgncmod-gnome-search.so libgncmod-gnome-utils.so libgncmod-html.so libgncmod-ledger-core.so libgncmod-locale-reports-us.so libgncmod-log-replay.so libgncmod-ofx.so libgncmod-qif-import.so libgncmod-register-core.so libgncmod-register-gnome.so libgncmod-report-gnome.so libgncmod-report-system.so libgncmod-stylesheets.so libgncmod-tax-us.so lib/gnucash/scm/ccache/2.2/ business-options.go business-prefs.go c-interface.go commodity-table.go commodity-utilities.go date-utilities.go engine-interface.go engine-utilities.go fin.go gnc-menu-extensions.go gnc-numeric.go hooks.go html-acct-table.go html-anytag.go html-barchart.go html-document.go html-fonts.go html-linechart.go html-piechart.go html-scatter.go html-style-info.go html-style-sheet.go html-table.go html-text.go html-utilities.go json.go migrate-prefs.go options-utilities.go options.go prefs.go report-utilities.go report.go simple-obj.go trep-engine.go txf-de_DE.go txf-help-de_DE.go txf-help.go txf.go lib/gnucash/scm/ccache/2.2/gnucash/ app-utils.go business-core.go core-utils.go engine.go gettext.go gnc-module.go gnome-utils.go price-quotes.go utilities.go lib/gnucash/scm/ccache/2.2/gnucash/import-export/ qif-import.go string.go lib/gnucash/scm/ccache/2.2/gnucash/report/ aging.go balsheet-eg.go business-reports.go customer-summary.go eguile-gnc.go eguile-html-utilities.go eguile-utilities.go hello-world.go invoice.go job-report.go new-aging.go new-owner-report.go owner-report.go payables.go receipt.go receivables.go report-gnome.go report-system.go standard-reports.go stylesheet-css.go stylesheet-footer.go stylesheet-head-or-tail.go stylesheet-plain.go stylesheets.go taxinvoice.go taxtxf-de_DE.go taxtxf.go utility-reports.go view-column.go welcome-to-gnucash.go lib/gnucash/scm/ccache/2.2/gnucash/report/locale-specific/ de_DE.go us.go lib/gnucash/scm/ccache/2.2/gnucash/report/report-system/ collectors.go report-collectors.go lib/gnucash/scm/ccache/2.2/gnucash/report/standard-reports/ account-piecharts.go account-summary.go advanced-portfolio.go average-balance.go balance-forecast.go balance-sheet.go balsheet-pnl.go budget-balance-sheet.go budget-barchart.go budget-flow.go budget-income-statement.go budget.go cash-flow.go cashflow-barchart.go category-barchart.go daily-reports.go equity-statement.go general-journal.go general-ledger.go income-gst-statement.go income-statement.go net-charts.go portfolio.go price-scatter.go reconcile-report.go register.go transaction.go trial-balance.go lib/gnucash/scm/ccache/2.2/gnucash/tax/ de_DE.go us.go lib/gnucash/scm/ccache/2.2/json/ builder.go parser.go syntax.go lib/gnucash/scm/ccache/2.2/qif-import/ qif-dialog-utils.go qif-file.go qif-guess-map.go qif-import.go qif-merge-groups.go qif-objects.go qif-parse.go qif-to-gnc.go qif-utils.go share/applications/gnucash.desktop share/glib-2.0/schemas/ org.gnucash.dialogs.business.gschema.xml org.gnucash.dialogs.checkprinting.gschema.xml org.gnucash.dialogs.commodities.gschema.xml org.gnucash.dialogs.export.csv.gschema.xml org.gnucash.dialogs.gschema.xml org.gnucash.dialogs.import.csv.gschema.xml org.gnucash.dialogs.import.generic.gschema.xml org.gnucash.dialogs.import.hbci.gschema.xml org.gnucash.dialogs.import.ofx.gschema.xml org.gnucash.dialogs.import.qif.gschema.xml org.gnucash.dialogs.reconcile.gschema.xml org.gnucash.dialogs.sxs.gschema.xml org.gnucash.dialogs.totd.gschema.xml org.gnucash.general.finance-quote.gschema.xml org.gnucash.gschema.xml org.gnucash.history.gschema.xml org.gnucash.warnings.gschema.xml org.gnucash.window.pages.account.tree.gschema.xml org.gnucash.window.pages.gschema.xml share/gnucash/ make-prefs-migration-script.xsl migratable-prefs.xml tip_of_the_day.list share/gnucash/accounts/C/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/ca/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/cs/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/da/ acctchrt_car.gnucash-xea acctchrt_common.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea share/gnucash/accounts/de_AT/ acctchrt_auto.gnucash-xea acctchrt_autoloan.gnucash-xea acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_common.gnucash-xea acctchrt_ekr2017.gnucash-xea acctchrt_houseown.gnucash-xea acctchrt_investment.gnucash-xea acctchrt_kids.gnucash-xea share/gnucash/accounts/de_CH/ acctchrt_brokerage.gnucash-xea acctchrt_chkmu.gnucash-xea acctchrt_common.gnucash-xea acctchrt_kids.gnucash-xea acctchrt_otherasset.gnucash-xea acctchrt_otherloan.gnucash-xea share/gnucash/accounts/de_DE/ acctchrt_auto.gnucash-xea acctchrt_autoloan.gnucash-xea acctchrt_brokerage.gnucash-xea acctchrt_common.gnucash-xea acctchrt_houseown.gnucash-xea acctchrt_investment.gnucash-xea acctchrt_kids.gnucash-xea acctchrt_otherasset.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_skr03.gnucash-xea acctchrt_skr04.gnucash-xea acctchrt_skr49.gnucash-xea acctchrt_studium.gnucash-xea acctchrt_wohnungsw.gnucash-xea share/gnucash/accounts/el_GR/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_common.gnucash-xea share/gnucash/accounts/en_GB/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea uk-vat.gnucash-xea share/gnucash/accounts/en_IN/acctchrt_gstindia.gnucash-xea share/gnucash/accounts/es_ES/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/es_MX/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/fi_FI/ acctchrt_common.gnucash-xea acctchrt_ry.gnucash-xea acctchrt_sbr-xbrl.gnucash-xea share/gnucash/accounts/fr_BE/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/fr_CA/ acctchrt_actifsfixes.gnucash-xea acctchrt_automobile.gnucash-xea acctchrt_basecommune.gnucash-xea acctchrt_cdmarchemon.gnucash-xea acctchrt_chequier.gnucash-xea acctchrt_conjointretraite.gnucash-xea acctchrt_conjointrev.gnucash-xea acctchrt_courtage.gnucash-xea acctchrt_etudeemprunt.gnucash-xea acctchrt_garderie.gnucash-xea acctchrt_locataire.gnucash-xea acctchrt_proprietaire.gnucash-xea acctchrt_retraite.gnucash-xea acctchrt_revenus.gnucash-xea share/gnucash/accounts/fr_CH/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/fr_FR/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/he/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/hr/ acctchrt_car.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_common.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea share/gnucash/accounts/hu_HU/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/it/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/ja/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_full.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/ko/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/lt/acctchrt_business.gnucash-xea share/gnucash/accounts/lv/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/nb/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_full.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/nl/ acctchrt_checkbook.gnucash-xea acctchrt_full.gnucash-xea acctchrt_rgs_1.1.gnucash-xea share/gnucash/accounts/pl/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/pt_BR/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/pt_PT/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/ru/ acctchrt_auto.gnucash-xea acctchrt_autoloan.gnucash-xea acctchrt_common.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_kids.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea share/gnucash/accounts/sk/ acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_currency.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/sv_AX/ acctchrt_common.gnucash-xea acctchrt_rf.gnucash-xea acctchrt_sbr-xbrl.gnucash-xea share/gnucash/accounts/sv_FI/ acctchrt_common.gnucash-xea acctchrt_rf.gnucash-xea acctchrt_sbr-xbrl.gnucash-xea share/gnucash/accounts/sv_SE/ acctchrt_common.gnucash-xea bas_2012.gnucash-xea share/gnucash/accounts/tr_TR/ acctchrt_TEKDUZ.gnucash-xea acctchrt_brokerage.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_common.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea share/gnucash/accounts/zh_CN/ acctchrt_brokerage.gnucash-xea acctchrt_business.gnucash-xea acctchrt_carloan.gnucash-xea acctchrt_cdmoneymkt.gnucash-xea acctchrt_checkbook.gnucash-xea acctchrt_childcare.gnucash-xea acctchrt_common.gnucash-xea acctchrt_eduloan.gnucash-xea acctchrt_fixedassets.gnucash-xea acctchrt_homeloan.gnucash-xea acctchrt_homeown.gnucash-xea acctchrt_otherloan.gnucash-xea acctchrt_renter.gnucash-xea acctchrt_retiremt.gnucash-xea acctchrt_spouseinc.gnucash-xea acctchrt_spouseretire.gnucash-xea share/gnucash/accounts/zh_HK/acctchrt_business.gnucash-xea share/gnucash/accounts/zh_TW/acctchrt_business.gnucash-xea share/gnucash/checks/ deluxe.chk liberty.chk quicken.chk quicken_3part.chk quicken_check_21.chk quicken_wallet.chk voucher.chk share/gnucash/gtkbuilder/ assistant-ab-initial.glade assistant-acct-period.glade assistant-csv-account-import.glade assistant-csv-export.glade assistant-csv-price-import.glade assistant-csv-trans-import.glade assistant-hierarchy.glade assistant-loan.glade assistant-qif-import.glade assistant-stock-split.glade assistant-xml-encoding.glade business-options-gnome.glade business-prefs.glade dialog-ab-pref.glade dialog-ab.glade dialog-account-picker.glade dialog-account.glade dialog-bi-import-gui.glade dialog-billterms.glade dialog-book-close.glade dialog-choose-owner.glade dialog-commodities.glade dialog-commodity.glade dialog-custom-report.glade dialog-customer-import-gui.glade dialog-customer.glade dialog-date-close.glade dialog-employee.glade dialog-file-access.glade dialog-fincalc.glade dialog-find-account.glade dialog-imap-editor.glade dialog-import.glade dialog-invoice.glade dialog-job.glade dialog-lot-viewer.glade dialog-new-user.glade dialog-object-references.glade dialog-options.glade dialog-order.glade dialog-payment.glade dialog-preferences.glade dialog-price.glade dialog-print-check.glade dialog-progress.glade dialog-query-view.glade dialog-report.glade dialog-reset-warnings.glade dialog-search.glade dialog-sx.glade dialog-tax-info.glade dialog-tax-table.glade dialog-totd.glade dialog-trans-assoc.glade dialog-transfer.glade dialog-userpass.glade dialog-vendor.glade gnc-date-format.glade gnc-frequency.glade gnc-plugin-page-budget.glade gnc-plugin-page-register.glade gnc-plugin-page-register2.glade gnc-recurrence.glade gnc-tree-view-owner.glade window-autoclear.glade window-reconcile.glade share/gnucash/icons/hicolor/16x16/actions/ gnc-account-delete.png gnc-account-edit.png gnc-account-new.png gnc-account-open.png gnc-account-report.png gnc-account.png gnc-gnome-pdf.png gnc-invoice-duplicate.png gnc-invoice-edit.png gnc-invoice-new.png gnc-invoice-pay.png gnc-invoice-post.png gnc-invoice-unpost.png gnc-invoice.png gnc-jumpto.png gnc-split-trans.png gnc-sx-new.png gnc-transfer.png share/gnucash/icons/hicolor/24x24/actions/ gnc-account-delete.png gnc-account-edit.png gnc-account-new.png gnc-account-open.png gnc-account-report.png gnc-account.png gnc-gnome-pdf.png gnc-invoice-duplicate.png gnc-invoice-edit.png gnc-invoice-new.png gnc-invoice-pay.png gnc-invoice-post.png gnc-invoice-unpost.png gnc-invoice.png gnc-jumpto.png gnc-split-trans.png gnc-sx-new.png gnc-transfer.png share/gnucash/jqplot/ jqplot.BezierCurveRenderer.js jqplot.barRenderer.js jqplot.blockRenderer.js jqplot.bubbleRenderer.js jqplot.canvasAxisLabelRenderer.js jqplot.canvasAxisTickRenderer.js jqplot.canvasTextRenderer.js jqplot.categoryAxisRenderer.js jqplot.ciParser.js jqplot.cursor.js jqplot.dateAxisRenderer.js jqplot.donutRenderer.js jqplot.dragable.js jqplot.enhancedLegendRenderer.js jqplot.funnelRenderer.js jqplot.highlighter.js jqplot.json2.js jqplot.logAxisRenderer.js jqplot.mekkoAxisRenderer.js jqplot.mekkoRenderer.js jqplot.meterGaugeRenderer.js jqplot.ohlcRenderer.js jqplot.pieRenderer.js jqplot.pointLabels.js jqplot.trendline.js jquery.jqplot.css jquery.jqplot.js jquery.min.js share/gnucash/pixmaps/ gnucash-icon-48x48.bmp gnucash-icon.ico gnucash_splash.png share/gnucash/scm/ business-options.scm business-prefs.scm c-interface.scm commodity-table.scm commodity-utilities.scm date-utilities.scm engine-interface.scm engine-utilities.scm fin.scm gnc-menu-extensions.scm gnc-numeric.scm hooks.scm html-acct-table.scm html-anytag.scm html-barchart.scm html-document.scm html-fonts.scm html-linechart.scm html-piechart.scm html-scatter.scm html-style-info.scm html-style-sheet.scm html-table.scm html-text.scm html-utilities.scm json.scm migrate-prefs.scm options-utilities.scm options.scm prefs.scm report-utilities.scm report.scm simple-obj.scm trep-engine.scm txf-de_DE.scm txf-help-de_DE.scm txf-help.scm txf.scm share/gnucash/scm/gnucash/ app-utils.scm business-core.scm core-utils.scm engine.scm gettext.scm gnc-module.scm gnome-utils.scm price-quotes.scm utilities.scm share/gnucash/scm/gnucash/import-export/ qif-import.scm string.scm share/gnucash/scm/gnucash/report/ aging.scm balsheet-eg.css balsheet-eg.eguile.scm balsheet-eg.scm business-reports.scm customer-summary.scm eguile-gnc.scm eguile-html-utilities.scm eguile-utilities.scm hello-world.scm invoice.scm job-report.scm new-aging.scm new-owner-report.scm owner-report.scm payables.scm receipt.css receipt.eguile.scm receipt.scm receivables.scm report-gnome.scm report-system.scm standard-reports.scm stylesheet-css.scm stylesheet-footer.scm stylesheet-head-or-tail.scm stylesheet-plain.scm stylesheets.scm taxinvoice.css taxinvoice.eguile.scm taxinvoice.scm taxtxf-de_DE.scm taxtxf.scm utility-reports.scm view-column.scm welcome-to-gnucash.scm share/gnucash/scm/gnucash/report/locale-specific/ de_DE.scm us.scm share/gnucash/scm/gnucash/report/report-system/ collectors.scm report-collectors.scm share/gnucash/scm/gnucash/report/standard-reports/ account-piecharts.scm account-summary.scm advanced-portfolio.scm average-balance.scm balance-forecast.scm balance-sheet.scm balsheet-pnl.scm budget-balance-sheet.scm budget-barchart.scm budget-flow.scm budget-income-statement.scm budget.scm cash-flow.scm cashflow-barchart.scm category-barchart.scm daily-reports.scm equity-statement.scm general-journal.scm general-ledger.scm income-gst-statement.scm income-statement.scm net-charts.scm portfolio.scm price-scatter.scm reconcile-report.scm register.scm transaction.scm trial-balance.scm share/gnucash/scm/gnucash/tax/ de_DE.scm us.scm share/gnucash/scm/json/ builder.scm parser.scm syntax.scm share/gnucash/scm/qif-import/ qif-dialog-utils.scm qif-file.scm qif-guess-map.scm qif-import.scm qif-merge-groups.scm qif-objects.scm qif-parse.scm qif-to-gnc.scm qif-utils.scm share/gnucash/ui/ gnc-main-window-ui.xml gnc-plugin-account-tree-ui.xml gnc-plugin-aqbanking-ui.xml gnc-plugin-basic-commands-ui.xml gnc-plugin-bi-import-ui.xml gnc-plugin-budget-ui.xml gnc-plugin-business-ui.xml gnc-plugin-csv-export-ui.xml gnc-plugin-csv-import-ui.xml gnc-plugin-customer-import-ui.xml gnc-plugin-file-history-ui.xml gnc-plugin-log-replay-ui.xml gnc-plugin-ofx-ui.xml gnc-plugin-page-account-tree-ui.xml gnc-plugin-page-account-tree2-ui.xml gnc-plugin-page-budget-ui.xml gnc-plugin-page-invoice-ui.xml gnc-plugin-page-owner-tree-ui.xml gnc-plugin-page-register-ui.xml gnc-plugin-page-register2-ui.xml gnc-plugin-page-report-ui.xml gnc-plugin-page-sx-list-ui.xml gnc-plugin-page-sx-list2-ui.xml gnc-plugin-page-sxregister-ui.xml gnc-plugin-qif-import-ui.xml gnc-plugin-register-ui.xml gnc-plugin-register2-ui.xml gnc-plugin-register22-ui.xml gnc-plugin-stylesheets-ui.xml gnc-reconcile-window-ui.xml gnc-sxed-to-create-window-ui.xml gnc-sxed-window-ui-full.xml gnc-sxed-window-ui.xml gnc-windows-menu-ui-quartz.xml gnc-windows-menu-ui.xml osx_accel_map share/icons/hicolor/128x128/apps/gnucash-icon.png share/icons/hicolor/16x16/apps/gnucash-icon.png share/icons/hicolor/22x22/apps/gnucash-icon.png share/icons/hicolor/24x24/apps/gnucash-icon.png share/icons/hicolor/256x256/apps/gnucash-icon.png share/icons/hicolor/32x32/apps/gnucash-icon.png share/icons/hicolor/48x48/apps/gnucash-icon.png share/icons/hicolor/64x64/apps/gnucash-icon.png share/icons/hicolor/96x96/apps/gnucash-icon.png share/icons/hicolor/scalable/apps/gnucash-icon.svg share/locale/ar/LC_MESSAGES/gnucash.mo share/locale/as/LC_MESSAGES/gnucash.mo share/locale/az/LC_MESSAGES/gnucash.mo share/locale/bg/LC_MESSAGES/gnucash.mo share/locale/brx/LC_MESSAGES/gnucash.mo share/locale/ca/LC_MESSAGES/gnucash.mo share/locale/cs/LC_MESSAGES/gnucash.mo share/locale/da/LC_MESSAGES/gnucash.mo share/locale/de/LC_MESSAGES/gnucash.mo share/locale/doi/LC_MESSAGES/gnucash.mo share/locale/el/LC_MESSAGES/gnucash.mo share/locale/en_GB/LC_MESSAGES/gnucash.mo share/locale/es/LC_MESSAGES/gnucash.mo share/locale/es_NI/LC_MESSAGES/gnucash.mo share/locale/eu/LC_MESSAGES/gnucash.mo share/locale/fa/LC_MESSAGES/gnucash.mo share/locale/fi/LC_MESSAGES/gnucash.mo share/locale/fr/LC_MESSAGES/gnucash.mo share/locale/gu/LC_MESSAGES/gnucash.mo share/locale/he/LC_MESSAGES/gnucash.mo share/locale/hi/LC_MESSAGES/gnucash.mo share/locale/hr/LC_MESSAGES/gnucash.mo share/locale/hu/LC_MESSAGES/gnucash.mo share/locale/it/LC_MESSAGES/gnucash.mo share/locale/ja/LC_MESSAGES/gnucash.mo share/locale/kn/LC_MESSAGES/gnucash.mo share/locale/ko/LC_MESSAGES/gnucash.mo share/locale/kok/LC_MESSAGES/gnucash.mo share/locale/kok@latin/LC_MESSAGES/gnucash.mo share/locale/ks/LC_MESSAGES/gnucash.mo share/locale/lt/LC_MESSAGES/gnucash.mo share/locale/lv/LC_MESSAGES/gnucash.mo share/locale/mai/LC_MESSAGES/gnucash.mo share/locale/mni/LC_MESSAGES/gnucash.mo share/locale/mni@bengali/LC_MESSAGES/gnucash.mo share/locale/mr/LC_MESSAGES/gnucash.mo share/locale/nb/LC_MESSAGES/gnucash.mo share/locale/ne/LC_MESSAGES/gnucash.mo share/locale/nl/LC_MESSAGES/gnucash.mo share/locale/pl/LC_MESSAGES/gnucash.mo share/locale/pt/LC_MESSAGES/gnucash.mo share/locale/pt_BR/LC_MESSAGES/gnucash.mo share/locale/ro/LC_MESSAGES/gnucash.mo share/locale/ru/LC_MESSAGES/gnucash.mo share/locale/rw/LC_MESSAGES/gnucash.mo share/locale/sk/LC_MESSAGES/gnucash.mo share/locale/sr/LC_MESSAGES/gnucash.mo share/locale/sv/LC_MESSAGES/gnucash.mo share/locale/ta/LC_MESSAGES/gnucash.mo share/locale/te/LC_MESSAGES/gnucash.mo share/locale/tr/LC_MESSAGES/gnucash.mo share/locale/uk/LC_MESSAGES/gnucash.mo share/locale/ur/LC_MESSAGES/gnucash.mo share/locale/vi/LC_MESSAGES/gnucash.mo share/locale/zh_CN/LC_MESSAGES/gnucash.mo share/locale/zh_TW/LC_MESSAGES/gnucash.mo share/man/man1/ gnc-fq-dump.1.gz gnc-fq-helper.1.gz gnucash.1.gz share/metainfo/gnucash.appdata.xml [FILE:686:manifests/plist.docs] share/doc/gnucash/ AUTHORS DOCUMENTERS HACKING Money95bank_fr.qif Money95invst_fr.qif Money95mfunds_fr.qif Money95stocks_fr.qif NEWS README README-ca.win32-bin.txt README-de.win32-bin.txt README-fr.win32-bin.txt README-hr.win32-bin.txt README-it.win32-bin.txt README-lv.win32-bin.txt README-nl.win32-bin.txt README-zh_CN.win32-bin.txt README-zh_TW.win32-bin.txt README.dependencies README.francais README.german README.win32-bin.txt README_invoice abc-all.qif abc.qif bogus.qif cbb-export.qif currency_tree_xml.gnucash every.qif gtk-3.0.css guile-hackers.txt invoice.csv ms-money.qif projects.html quicktest.qif swipe.qif taxreport.gnucash web.qif [FILE:328:patches/patch-CMakeLists.txt] --- CMakeLists.txt.orig 2019-09-07 23:38:10 UTC +++ CMakeLists.txt @@ -39,6 +39,7 @@ include (MacroAppendForeach) include (MacroAddSourceFileCompileFlags) include (GncAddSwigCommand) include (CheckIncludeFiles) +include (CheckSymbolExists) include (GncAddSchemeTargets) include (GncAddGSchemaTargets) include (GncAddTest) [FILE:286:patches/patch-gnucash_report_locale-specific_us_CMakeLists.txt] --- gnucash/report/locale-specific/us/CMakeLists.txt.orig 2019-09-07 17:49:33 UTC +++ gnucash/report/locale-specific/us/CMakeLists.txt @@ -36,7 +36,6 @@ set(GUILE_DEPENDS scm-gettext scm-gnc-module scm-scm - scm-test-core scm-tax-us scm-report-system scm-gnome-utils [FILE:303:patches/patch-libgnucash_app-utils_guile-util.c] --- libgnucash/app-utils/guile-util.c.orig 2019-01-11 23:57:38 UTC +++ libgnucash/app-utils/guile-util.c @@ -996,6 +996,8 @@ gnc_parse_time_to_time64 (const gchar *s g_return_val_if_fail(s && format, -1); + bzero(&tm, sizeof(tm)); + if (!strptime(s, format, &tm)) return -1; [FILE:482:patches/patch-libgnucash_quotes_CMakeLists.txt] --- libgnucash/quotes/CMakeLists.txt.orig 2019-06-30 00:35:24 UTC +++ libgnucash/quotes/CMakeLists.txt @@ -15,7 +15,7 @@ foreach(file gnc-fq-dump gnc-fq-helper) list(APPEND _MAN_FILES ${_MAN_OUTPUT}) add_custom_command( OUTPUT ${_MAN_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env ${PERL_EXECUTABLE} ${POD2MAN_EXECUTABLE} ${_POD_INPUT} ${_MAN_OUTPUT} + COMMAND ${POD2MAN_EXECUTABLE} ${_POD_INPUT} ${_MAN_OUTPUT} DEPENDS ${_POD_INPUT} ) endforeach(file) [FILE:55306:patches/patch-missing-files] --- /dev/null 2020-01-01 16:43:05 UTC +++ src/optional/python-bindings/__init__.py @@ -0,0 +1,11 @@ +# import all the symbols from gnucash_core, so basic gnucash stuff can be +# loaded with: +# >>> from gnucash import thingy +# instead of +# >>> from gnucash.gnucash_core import thingy +from gnucash_core import * +## @file +# @brief helper file for the importing of gnucash +# @author Mark Jenkins, ParIT Worker Co-operative +# @author Jeff Green, ParIT Worker Co-operative +# @ingroup python_bindings --- /dev/null 2020-01-01 16:43:05 UTC +++ src/optional/python-bindings/function_class.py @@ -0,0 +1,227 @@ +# function_class.py -- Library for making python classes from a set +# of functions. +# +# Copyright (C) 2008 ParIT Worker Co-operative +# 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 + +## @file +# @brief Library for making python classes from a set of functions. +# @author Mark Jenkins, ParIT Worker Co-operative +# @author Jeff Green, ParIT Worker Co-operative +# @ingroup python_bindings + +INSTANCE_ARGUMENT = "instance" + +class ClassFromFunctions(object): + """Inherit this class to give yourself a python class that wraps a set of + functions that together constitute the methods of the class. + + The method functions must all have as a first argument an object + holding the instance data. There must also be a function that + returns a new instance of the class, the constructor. + + Your subclass must define + _module - The module where the method functions, including the + constructor can be found + _new_instance - The name of a function that serves as a constructor, + returning the instance data. + + To access the instance data, use the read-only property instance. + + To add some functions from _module as methods, call classmethods like + add_method and add_methods_with_prefix. + """ + def __new__(cls, *args, **kargs): + # why reimpliment __new__? Because later on we're going to + # use new to avoid creating new instances when existing instances + # already exist with the same __instance value, or equivalent __instance + # values, where this is desirable... + return super(ClassFromFunctions, cls).__new__(cls) + + def __init__(self, *args, **kargs): + """Construct a new instance, using either the function + self._module[self._new_instance] or using existing instance + data. (specified with the keyword argument, instance) + + Pass the arguments that should be passed on to + self._module[self._new_instance] . Any arguments of that + are instances of ClassFromFunctions will be switched with the instance + data. (by calling the .instance property) + """ + if INSTANCE_ARGUMENT in kargs: + self.__instance = kargs[INSTANCE_ARGUMENT] + else: + self.__instance = getattr(self._module, self._new_instance)( + *process_list_convert_to_instance(args) ) + + def get_instance(self): + """Get the instance data. + + You can also call the instance property + """ + return self.__instance + + instance = property(get_instance) + + # CLASS METHODS + + @classmethod + def add_method(cls, function_name, method_name): + """Add the function, method_name to this class as a method named name + """ + def method_function(self, *meth_func_args): + return getattr(self._module, function_name)( + self.instance, + *process_list_convert_to_instance(meth_func_args) ) + + setattr(cls, method_name, method_function) + setattr(method_function, "__name__", method_name) + return method_function + + @classmethod + def ya_add_classmethod(cls, function_name, method_name): + """Add the function, method_name to this class as a classmethod named name + + Taken from function_class and slightly modified. + """ + def method_function(self, *meth_func_args): + return getattr(self._module, function_name)( + self, + *process_list_convert_to_instance(meth_func_args) ) + + setattr(cls, method_name, classmethod(method_function)) + setattr(method_function, "__name__", method_name) + return method_function + + @classmethod + def ya_add_method(cls, function_name, method_name): + """Add the function, method_name to this class as a method named name + + Taken from function_class and slightly modified. + """ + def method_function(self, *meth_func_args): + return getattr(self._module, function_name)( + self, + *process_list_convert_to_instance(meth_func_args) ) + + setattr(cls, method_name, method_function) + setattr(method_function, "__name__", method_name) + return method_function + + @classmethod + def add_methods_with_prefix(cls, prefix): + """Add a group of functions with the same prefix + """ + for function_name, function_value, after_prefix in \ + extract_attributes_with_prefix(cls._module, prefix): + cls.add_method(function_name, after_prefix) + + @classmethod + def add_constructor_and_methods_with_prefix(cls, prefix, constructor): + """Add a group of functions with the same prefix, and set the + _new_instance attribute to prefix + constructor + """ + cls.add_methods_with_prefix(prefix) + cls._new_instance = prefix + constructor + + @classmethod + def decorate_functions(cls, decorator, *args): + for function_name in args: + setattr( cls, function_name, + decorator( getattr(cls, function_name) ) ) + +def method_function_returns_instance(method_function, cls): + """A function decorator that is used to decorate method functions that + return instance data, to return instances instead. + + You can't use this decorator with @, because this function has a second + argument. + """ + assert( 'instance' == INSTANCE_ARGUMENT ) + def new_function(*args): + kargs = { INSTANCE_ARGUMENT : method_function(*args) } + if kargs['instance'] == None: + return None + else: + return cls( **kargs ) + + return new_function + +def method_function_returns_instance_list(method_function, cls): + def new_function(*args): + return [ cls( **{INSTANCE_ARGUMENT: item} ) + for item in method_function(*args) ] + return new_function + +def methods_return_instance_lists(cls, function_dict): + for func_name, instance_name in function_dict.iteritems(): + setattr(cls, func_name, + method_function_returns_instance_list( + getattr(cls, func_name), instance_name)) + +def default_arguments_decorator(function, *args): + """Decorates a function to give it default, positional arguments + + You can't use this decorator with @, because this function has more + than one argument. + """ + def new_function(*function_args): + new_argset = list(function_args) + new_argset.extend( args[ len(function_args): ] ) + return function( *new_argset ) + return new_function + +def return_instance_if_value_has_it(value): + """Return value.instance if value is an instance of ClassFromFunctions, + else return value + """ + if isinstance(value, ClassFromFunctions): + return value.instance + else: + return value + +def process_list_convert_to_instance( value_list ): + """Return a list built from value_list, where if a value is in an instance + of ClassFromFunctions, we put value.instance in the list instead. + + Things that are not instances of ClassFromFunctions are returned to + the new list unchanged. + """ + return [ return_instance_if_value_has_it(value) + for value in value_list ] + +def extract_attributes_with_prefix(obj, prefix): + """Generator that iterates through the attributes of an object and + for any attribute that matches a prefix, this yields + the attribute name, the attribute value, and the text that appears + after the prefix in the name + """ + for attr_name, attr_value in obj.__dict__.iteritems(): + if attr_name.startswith(prefix): + after_prefix = attr_name[ len(prefix): ] + yield attr_name, attr_value, after_prefix + +def methods_return_instance(cls, function_dict): + """Iterates through a dictionary of function name strings and instance names + and sets the function to return the associated instance + """ + for func_name, instance_name in function_dict.iteritems(): + setattr(cls, func_name, + method_function_returns_instance( getattr(cls, func_name), instance_name)) + --- /dev/null 2020-01-01 16:43:05 UTC +++ src/optional/python-bindings/gnucash_business.py @@ -0,0 +1,370 @@ +# gnucash_business.py -- High level python wrapper classes for the business +# parts of GnuCash +# +# Copyright (C) 2008,2010 ParIT Worker Co-operative +# 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 +# @author Jeff Green, ParIT Worker Co-operative +## @file +# @brief High level python wrapper classes for the business parts of GnuCash +# @author Mark Jenkins, ParIT Worker Co-operative +# @author Jeff Green, ParIT Worker Co-operative +# @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, methods_return_instance_lists + +from gnucash_core import \ + GnuCashCoreClass, GncNumeric, GncCommodity, Transaction, \ + Split, Book, GncLot, Account + +from gnucash_core_c import GNC_OWNER_CUSTOMER, GNC_OWNER_JOB, \ + GNC_OWNER_EMPLOYEE, GNC_OWNER_VENDOR, \ + GNC_PAYMENT_CASH, GNC_PAYMENT_CARD, \ + GNC_DISC_PRETAX, GNC_DISC_SAMETIME, GNC_DISC_POSTTAX, \ + GNC_TAXINCLUDED_YES, GNC_TAXINCLUDED_NO, GNC_TAXINCLUDED_USEGLOBAL, \ + GNC_AMT_TYPE_VALUE, GNC_AMT_TYPE_PERCENT, GNC_ID_INVOICE + +import datetime + +class GnuCashBusinessEntity(GnuCashCoreClass): + def __init__(self, book=None, id=None, currency=None, name=None, + instance=None): + if instance == None: + if book==None or id==None or currency==None: + raise Exception( + "you must call GnuCashBusinessEntity.__init__ " + "with either a book, id, and currency, or an existing " + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self, book) + self.BeginEdit() + self.SetID(id) + self.SetCurrency(currency) + if name != None: + self.SetName(name) + self.CommitEdit() + else: + GnuCashCoreClass.__init__(self, instance=instance) + +class Customer(GnuCashBusinessEntity): pass + +class Employee(GnuCashBusinessEntity): pass + +class Vendor(GnuCashBusinessEntity): pass + +class Job(GnuCashBusinessEntity): + # override the superclass constructor, as Job doesn't require + # a currency but it does require an owner + def __init__(self, book=None, id=None, owner=None, name=None, + instance=None): + if instance == None: + if book==None or id==None or owner==None: + raise Exception( + "you must call Job.__init__ " + "with either a book, id, and owner or an existing " + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self, book) + self.SetID(id) + self.SetOwner(owner) + if name != None: + self.SetName(name) + else: + GnuCashCoreClass.__init__(self, instance=instance) + +class Address(GnuCashCoreClass): pass + +class BillTerm(GnuCashCoreClass): pass + +class TaxTable(GnuCashCoreClass): + def __init__(self, book=None, name=None, first_entry=None, instance=None): + if instance == None: + if book==None or name==None or first_entry==None: + raise Exception( + "you must call TaxTable.__init__ with either a " + "book, name, and first_entry, or an existing " + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self, book) + self.SetName(name) + self.AddEntry(first_entry) + else: + GnuCashCoreClass.__init__(self, instance=instance) + +class TaxTableEntry(GnuCashCoreClass): + def __init__(self, account=None, percent=True, amount=None, instance=None): + """TaxTableEntry constructor + + You must provide an account, or be initizing this with an existing + swig proxy object via the instance keyword argument. + + You may also optionally set the percent keyword argument to False to get + a fixed value instead of percentage based tax (which is the default, or + when percent=True). + + The tax will be zero percent or zero unless you set the amount keyword + argument to a GncNumeric value as well. + """ + + if instance == None: + if account==None: + raise Exception( + "you must call TaxTableEntry.__init__ with either a " + "account or an existing " + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self) + self.SetAccount(account) + if percent: + self.SetType(GNC_AMT_TYPE_PERCENT) + else: + self.SetType(GNC_AMT_TYPE_VALUE) + if amount != None: + self.SetAmount(amount) + else: + GnuCashCoreClass.__init__(self, instance=instance) + +class Invoice(GnuCashCoreClass): + def __init__(self, book=None, id=None, currency=None, owner=None, + date_opened=None, instance=None): + """Invoice Contstructor + + You must provide a book, id, currency and owner + (Customer, Job, Employee, Vendor) or an existing swig proxy object + in the keyword argument instance. + + Optionally, you may provide a date the invoice is opened on + (datetime.date or datetime.datetime), otherwise today's date is used. + """ + if instance == None: + if book==None or id==None or currency==None or owner==None: + raise Exception( + "you must call Invoice.__init__ " + "with either a book, id, currency and owner, or an existing" + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self, book) + self.BeginEdit() + self.SetID(id) + self.SetCurrency(currency) + self.SetOwner(owner) + if date_opened == None: + date_opened = datetime.date.today() + self.SetDateOpened(date_opened) + self.CommitEdit() + else: + GnuCashCoreClass.__init__(self, instance=instance) + +class Bill(Invoice): + pass + +def decorate_to_return_instance_instead_of_owner(dec_function): + def new_get_owner_function(self): + (owner_type, instance) = dec_function(self) + if owner_type == GNC_OWNER_CUSTOMER: + return Customer(instance=instance) + elif owner_type == GNC_OWNER_JOB: + return Job(instance=instance) + elif owner_type == GNC_OWNER_EMPLOYEE: + return Employee(instance=instance) + elif owner_type == GNC_OWNER_VENDOR: + return Vendor(instance=instance) + else: + return None + return new_get_owner_function + +class Entry(GnuCashCoreClass): + def __init__(self, book=None, invoice=None, date=None, instance=None): + """Invoice Entry constructor + + You must provide a book or be initizing this with an existing + swig proxy object via the instance keyword argument. + + The optional invoice argument can be set to a Bill or Invoice + that you would like to associate the entry with. You might as well + assign one now, as an Entry can't exist without one, but you can + always use Invoice.AddEntry or Bill.AddEntry later on. + + By default, the entry will be set to today's date unless you + override with the date argument. + """ + if instance == None: + if book==None: + raise Exception( + "you must call Entry.__init__ with either a " + "book or an existing " + "low level swig proxy in the argument instance") + GnuCashCoreClass.__init__(self, book) + + if date == None: + date = datetime.date.today() + self.SetDate(date) + if invoice != None: + invoice.AddEntry(self) + else: + + GnuCashCoreClass.__init__(self, instance=instance) + + def test_type(self, invoice): + if invoice.GetTypeString() == "Invoice" and self.GetInvoice() == None: + raise Exception("Entry type error. Check that Entry type matches Invoice.") + if invoice.GetTypeString() == "Bill" and self.GetBill() == None: + raise Exception("Entry type error. Check that Entry type matches Bill.") + + +# Owner +GnuCashBusinessEntity.add_methods_with_prefix('gncOwner') + +owner_dict = { + 'GetCustomer' : Customer, + 'GetVendor' : Vendor, + 'GetEmployee' : Employee, + 'GetJob' : Job, + 'GetAddr' : Address, + 'GetCurrency' : GncCommodity, + 'GetEndOwner': GnuCashBusinessEntity, + 'GetBalanceInCurrency': GncNumeric, + } +methods_return_instance(GnuCashBusinessEntity, owner_dict) + +methods_return_instance_lists( + GnuCashBusinessEntity, { + 'GetCommoditiesList': GncCommodity + }) + +# Customer +Customer.add_constructor_and_methods_with_prefix('gncCustomer', 'Create') + +customer_dict = { + 'GetAddr' : Address, + 'GetShipAddr' : Address, + 'GetDiscount' : GncNumeric, + 'GetCredit' : GncNumeric, + 'GetTerms' : BillTerm, + 'GetCurrency' : GncCommodity, + 'GetTaxTable': TaxTable, + } +methods_return_instance(Customer, customer_dict) + +# Employee +Employee.add_constructor_and_methods_with_prefix('gncEmployee', 'Create') + +employee_dict = { + 'GetBook' : Book, + 'GetAddr' : Address, + 'GetWorkday' : GncNumeric, + 'GetRate' : GncNumeric, + 'GetCurrency' : GncCommodity + } +methods_return_instance(Employee, employee_dict) + +# Vendor +Vendor.add_constructor_and_methods_with_prefix('gncVendor', 'Create') + +vendor_dict = { + 'GetAddr' : Address, + 'GetTerms' : BillTerm, + 'GetCurrency' : GncCommodity, + 'GetTaxTable': TaxTable, + } +methods_return_instance(Vendor, vendor_dict) + +# Job +Job.add_constructor_and_methods_with_prefix('gncJob', 'Create') +Job.decorate_functions( + decorate_to_return_instance_instead_of_owner, + 'GetOwner') + +# Address +Address.add_constructor_and_methods_with_prefix('gncAddress', 'Create') + +# BillTerm +BillTerm.add_constructor_and_methods_with_prefix('gncBillTerm', 'Create') + +billterm_dict = { + 'LookupByName' : BillTerm, + 'GetDiscount' : GncNumeric, + 'GetParent' : BillTerm, + 'ReturnChild' : BillTerm + } +methods_return_instance(BillTerm, billterm_dict) + +# TaxTable +TaxTable.add_constructor_and_methods_with_prefix('gncTaxTable', 'Create') + +taxtable_dict = { + 'GetParent': TaxTable, + } +methods_return_instance(TaxTable, taxtable_dict) + +# TaxTableEntry +TaxTableEntry.add_constructor_and_methods_with_prefix( + 'gncTaxTableEntry', 'Create') + +taxtableentry_dict = { + 'GetAccount': Account, + 'GetAmount': GncNumeric, + } + +# Invoice +Invoice.add_constructor_and_methods_with_prefix('gncInvoice', 'Create') +methods_return_instance_lists( + Invoice, { 'GetEntries': Entry }) + +# Bill +Bill.add_methods_with_prefix('gncBill') + +invoice_dict = { + 'GetTerms': BillTerm, + 'GetCurrency': GncCommodity, + 'GetToChargeAmount': GncNumeric, + 'GetPostedLot': GncLot, + 'GetPostedTxn': Transaction, + 'GetPostedAcc': Account, + 'GetTotal': GncNumeric, + 'GetTotalOf': GncNumeric, + 'GetTotalSubtotal': GncNumeric, + 'GetTotalTax': GncNumeric, + 'PostToAccount': Transaction, + 'GetBook': Book, + } +methods_return_instance(Invoice, invoice_dict) +Invoice.decorate_functions( + decorate_to_return_instance_instead_of_owner, + 'GetOwner', 'GetBillTo') + +# Entry +Entry.add_constructor_and_methods_with_prefix('gncEntry', 'Create') + +entry_dict = { + 'GetQuantity': GncNumeric, + 'GetInvAccount': Account, + 'GetInvPrice': GncNumeric, + 'GetInvDiscount': GncNumeric, + 'GetInvTaxTable': TaxTable, + 'GetBillAccount': Account, + 'GetBillPrice': GncNumeric, + 'GetBillTaxTable': TaxTable, + 'Copy': Entry, + 'GetInvoice': Invoice, + 'GetBill': Invoice + } +methods_return_instance(Entry, entry_dict) +Entry.decorate_functions( + decorate_to_return_instance_instead_of_owner, + 'GetBillTo' ) --- /dev/null 2020-01-01 16:43:05 UTC +++ src/optional/python-bindings/gnucash_core.py @@ -0,0 +1,752 @@ +# gnucash_core.py -- High level python wrapper classes for the core parts +# of GnuCash +# +# Copyright (C) 2008 ParIT Worker Co-operative +# 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 +# @author Jeff Green, ParIT Worker Co-operative + +# 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 +# @author Jeff Green, ParIT Worker Co-operative +# @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')