Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1d68a0a
feat(gc-sync1): toward category sync from GnuCash menu item
dckc May 26, 2025
822a962
test(gc-sync1): simple-checkbook fixture
dckc May 26, 2025
97fb736
feat(gnc-sync1): find uncategorized transactions
dckc May 26, 2025
e73866b
feat(sync-uncat): assign category to 1 split
dckc May 26, 2025
5fa3129
chore(sync-uncat): fetch via HTTP during menu action
dckc May 26, 2025
861df41
chore: update sql dump
dckc May 26, 2025
40ddfed
WIP: yarn.lock
dckc May 29, 2025
7edc85f
feat(sync26): HTTP handlers for sync
dckc May 29, 2025
de87e39
test(gc-sync1): run code with guile, outside gnucash
dckc May 29, 2025
635f181
feat: format uncategorized splits in JSON
dckc May 30, 2025
874f6c9
docs(gc-sync1): trace imports to modules
dckc May 30, 2025
a1ab303
refactor(gc-sync1): misc code clean-up
dckc May 30, 2025
25b8038
SQUASHME
dckc May 30, 2025
d663549
feat(gc-sync1): POST uncat txs works in 1 case
dckc May 30, 2025
d5bf4c0
feat(sync26): include account code in GnuCash_Uncat
dckc May 30, 2025
cb23ab7
feat(gc-sync1): include account code in push-tx-ids
dckc May 30, 2025
6ff5eba
WIP: package.json
dckc May 29, 2025
8d2f501
WIP: packages/sync26/sheetTools.js
dckc May 29, 2025
bca4c84
WIP: packages/gc-sync1/Makefile
dckc May 31, 2025
ef507be
WIP: packages/gc-sync1/sync-uncat-lib.scm
dckc May 31, 2025
3fd127d
WIP: packages/gc-sync1/config-user.scm
dckc May 26, 2025
1f5da85
docs(gc-sync1): loading / deployment
dckc Nov 21, 2025
0b51f29
chore(sheetTools): no export
dckc Nov 22, 2025
01a5b6a
feat(sheetTools): skip cols when getting records
dckc Nov 22, 2025
71c2175
test(txRules): getSheetRecords test (WIP)
dckc Nov 22, 2025
01dc4ac
feat: fetch polyfill (SQUASHME w/cosmos API?)
dckc Nov 22, 2025
333d651
feat: find plaid txs matching gnucash uncat
dckc Nov 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"@google/clasp": "^2.4.2",
"@jessie.js/eslint-plugin": "^0.4.0",
"@types/better-sqlite3": "^7.6.1",
"@types/google-apps-script": "^1.0.83",
"@types/google-apps-script": "^1.0.97",
"@types/node": "^14.14.7",
"@typescript-eslint/parser": "^4.21.0",
"eslint-config-airbnb-base": "^14.2.1",
Expand Down
2 changes: 2 additions & 0 deletions packages/gc-sync1/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
simple-checkbook.gnucash
*.gnucash.*.log
38 changes: 38 additions & 0 deletions packages/gc-sync1/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
SQLITE3 = sqlite3
# determined with
# gnucash --debug --extra
# per https://wiki.gnucash.org/wiki/Python_shell
PYINIT=/usr/share/gnucash/python/init.py
#
# tested with
# https://packages.ubuntu.com/jammy/gnucash 1:4.8-1build2
SITE_GUILE=/usr/share/guile/site/3.0/
GUILE=guile
SO_LIBS=/usr/lib/x86_64-linux-gnu/gnucash:/usr/lib/x86_64-linux-gnu/gnucash/gnucash:/usr/lib/x86_64-linux-gnu

CONFIG=$(HOME)/.config/gnucash/config-user.scm
# (gnc-build-userdata-path "...")
USERDATA=$(HOME)/.local/share/gnucash/


simple-checkbook.sql: simple-checkbook.gnucash
$(SQLITE3) $< .dump >$@ || (rm $@; exit 1)

# dead end. no way to add menu item to run python code
pyshell-enable:
echo change if False: to if True:
EDITOR=gedit sudoedit $(PYINIT)

repl:
LD_LIBRARY_PATH=$(SO_LIBS) $(GUILE) -L $(SITE_GUILE)

SITE_GUILE=/usr/share/guile/site/3.0/
GUILE=guile
SO_LIBS=/usr/lib/x86_64-linux-gnu/gnucash:/usr/lib/x86_64-linux-gnu/gnucash/gnucash:/usr/lib/x86_64-linux-gnu
check: sync-uncat-lib.scm
LD_LIBRARY_PATH=$(SO_LIBS) $(GUILE) -L $(SITE_GUILE) $<

# Debugging
# gnucash --debug --log gnc.scm=debug
# per https://wiki.gnucash.org/wiki/Custom_Reports#Debugging_your_report

30 changes: 30 additions & 0 deletions packages/gc-sync1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# gc-sync1 - Categorize Splits from GnuCash UI

**STATUS: WIP**. see [finquick issue
#51](https://github.com/dckc/finquick/issues/51).

Provided GnuCash is configured as below, we add these menu items:

- Push Uncat Txs - select uncategorized transactions and POST to a
Google Sheet for categorization (_working_).
- Pull Categories - GET categories and apply them (_not working_).

## Load GnuCash Menu Handlers

Following conventions for [loading a custom
report](https://wiki.gnucash.org/wiki/Custom_Reports#Loading_Your_Report),
put something like this in `~/.config/gnucash/config-user.scm`:

```scm
(load (gnc-build-userdata-path "sync-uncat.scm"))
```

Then symlink `~/.local/share/gnucash/sync-uncat.scm` and
`~/.local/share/gnucash/sync-uncat-lib.scm` to the code in this dir.

## Deploy Google Sheet web service

Add `../sync26/syncSvc.js` to your spreadsheet and [create a
deployment](https://developers.google.com/apps-script/concepts/deployments).
This produces a URL like `https://script.google.com/macros/s/as;ldkflsd...`.
Assign that to the `$FINSYNC` environment variable before starting `gnucash`.
1 change: 1 addition & 0 deletions packages/gc-sync1/config-user.scm
94 changes: 94 additions & 0 deletions packages/gc-sync1/simple-checkbook.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE gnclock ( Hostname varchar(255), PID int );
INSERT INTO gnclock VALUES('bldbox',1033466);
CREATE TABLE versions(table_name text(50) PRIMARY KEY NOT NULL, table_version integer NOT NULL);
INSERT INTO versions VALUES('Gnucash',4000008);
INSERT INTO versions VALUES('Gnucash-Resave',19920);
INSERT INTO versions VALUES('books',1);
INSERT INTO versions VALUES('commodities',1);
INSERT INTO versions VALUES('accounts',1);
INSERT INTO versions VALUES('budgets',1);
INSERT INTO versions VALUES('budget_amounts',1);
INSERT INTO versions VALUES('prices',3);
INSERT INTO versions VALUES('transactions',4);
INSERT INTO versions VALUES('splits',5);
INSERT INTO versions VALUES('slots',4);
INSERT INTO versions VALUES('recurrences',2);
INSERT INTO versions VALUES('schedxactions',1);
INSERT INTO versions VALUES('lots',2);
INSERT INTO versions VALUES('billterms',2);
INSERT INTO versions VALUES('customers',2);
INSERT INTO versions VALUES('employees',2);
INSERT INTO versions VALUES('entries',4);
INSERT INTO versions VALUES('invoices',4);
INSERT INTO versions VALUES('jobs',1);
INSERT INTO versions VALUES('orders',1);
INSERT INTO versions VALUES('taxtables',2);
INSERT INTO versions VALUES('taxtable_entries',3);
INSERT INTO versions VALUES('vendors',1);
CREATE TABLE books(guid text(32) PRIMARY KEY NOT NULL, root_account_guid text(32) NOT NULL, root_template_guid text(32) NOT NULL);
INSERT INTO books VALUES('c732dff174484eeeb1b3baabe05edd16','aba44add598e462f9dc10937be1bb72b','8ed484f757d24820a1283c2b74e3c127');
CREATE TABLE commodities(guid text(32) PRIMARY KEY NOT NULL, namespace text(2048) NOT NULL, mnemonic text(2048) NOT NULL, fullname text(2048), cusip text(2048), fraction integer NOT NULL, quote_flag integer NOT NULL, quote_source text(2048), quote_tz text(2048));
INSERT INTO commodities VALUES('07eec0750dcc461687208f33ceae5022','CURRENCY','USD','US Dollar','840',100,1,'currency','');
CREATE TABLE accounts(guid text(32) PRIMARY KEY NOT NULL, name text(2048) NOT NULL, account_type text(2048) NOT NULL, commodity_guid text(32), commodity_scu integer NOT NULL, non_std_scu integer NOT NULL, parent_guid text(32), code text(2048), description text(2048), hidden integer, placeholder integer);
INSERT INTO accounts VALUES('aba44add598e462f9dc10937be1bb72b','Root Account','ROOT','07eec0750dcc461687208f33ceae5022',100,0,NULL,'','',0,0);
INSERT INTO accounts VALUES('6d4ed96d03d74632959fe0b04bec7280','Assets','ASSET','07eec0750dcc461687208f33ceae5022',100,0,'aba44add598e462f9dc10937be1bb72b','','Assets',0,1);
INSERT INTO accounts VALUES('5add42c3affe4b27b55fabe1892b3968','Current Assets','ASSET','07eec0750dcc461687208f33ceae5022',100,0,'6d4ed96d03d74632959fe0b04bec7280','','Current Assets',0,1);
INSERT INTO accounts VALUES('c54efcecd14444d3b332537e19bbf773','Checking Account','BANK','07eec0750dcc461687208f33ceae5022',100,0,'5add42c3affe4b27b55fabe1892b3968','','Checking Account',0,0);
INSERT INTO accounts VALUES('2a9693d8210648bbad01adef84b260d9','Income','INCOME','07eec0750dcc461687208f33ceae5022',100,0,'aba44add598e462f9dc10937be1bb72b','','Income',0,0);
INSERT INTO accounts VALUES('5aa9099417ee48218b1677b2d2420426','Expenses','EXPENSE','07eec0750dcc461687208f33ceae5022',100,0,'aba44add598e462f9dc10937be1bb72b','','Expenses',0,0);
INSERT INTO accounts VALUES('fb4f394e1bf74b77942a645f9d9bc18e','Equity','EQUITY','07eec0750dcc461687208f33ceae5022',100,0,'aba44add598e462f9dc10937be1bb72b','','Equity',0,1);
INSERT INTO accounts VALUES('ea375d587dcb4116b517728deefaa1e8','Opening Balances','EQUITY','07eec0750dcc461687208f33ceae5022',100,0,'fb4f394e1bf74b77942a645f9d9bc18e','','Opening Balances',0,0);
INSERT INTO accounts VALUES('8ed484f757d24820a1283c2b74e3c127','Template Root','ROOT',NULL,0,0,NULL,'','',0,0);
INSERT INTO accounts VALUES('fc27e99a2a294f4c80013ebbdc7f448d','Discretionary','EXPENSE','07eec0750dcc461687208f33ceae5022',100,0,'5aa9099417ee48218b1677b2d2420426','','',0,0);
INSERT INTO accounts VALUES('ca3e6da80599482b9c87f226649f2956','Imbalance-USD','BANK','07eec0750dcc461687208f33ceae5022',100,0,'aba44add598e462f9dc10937be1bb72b','','',0,0);
CREATE TABLE budgets(guid text(32) PRIMARY KEY NOT NULL, name text(2048) NOT NULL, description text(2048), num_periods integer NOT NULL);
CREATE TABLE budget_amounts(id integer PRIMARY KEY AUTOINCREMENT NOT NULL, budget_guid text(32) NOT NULL, account_guid text(32) NOT NULL, period_num integer NOT NULL, amount_num bigint NOT NULL, amount_denom bigint NOT NULL);
CREATE TABLE prices(guid text(32) PRIMARY KEY NOT NULL, commodity_guid text(32) NOT NULL, currency_guid text(32) NOT NULL, date text(19) NOT NULL, source text(2048), type text(2048), value_num bigint NOT NULL, value_denom bigint NOT NULL);
CREATE TABLE transactions(guid text(32) PRIMARY KEY NOT NULL, currency_guid text(32) NOT NULL, num text(2048) NOT NULL, post_date text(19), enter_date text(19), description text(2048));
INSERT INTO transactions VALUES('0540b8bd52f746e19f7c0fb8ed105804','07eec0750dcc461687208f33ceae5022','','2025-05-26 10:59:00','2025-05-26 19:59:49','Dime Store');
INSERT INTO transactions VALUES('dbc07db225df4958810a21b3b07cb04d','07eec0750dcc461687208f33ceae5022','','2025-05-01 10:59:00','2025-05-26 20:00:44','Factory');
INSERT INTO transactions VALUES('78e0f219767a4f538b228165f8944efd','07eec0750dcc461687208f33ceae5022','','2025-05-26 10:59:00','2025-05-26 21:02:24','Burger Place');
CREATE TABLE splits(guid text(32) PRIMARY KEY NOT NULL, tx_guid text(32) NOT NULL, account_guid text(32) NOT NULL, memo text(2048) NOT NULL, action text(2048) NOT NULL, reconcile_state text(1) NOT NULL, reconcile_date text(19), value_num bigint NOT NULL, value_denom bigint NOT NULL, quantity_num bigint NOT NULL, quantity_denom bigint NOT NULL, lot_guid text(32));
INSERT INTO splits VALUES('763369e1d87241a9a78b585cd11b4d36','0540b8bd52f746e19f7c0fb8ed105804','5aa9099417ee48218b1677b2d2420426','','','n','1970-01-01 00:00:00',1000,100,1000,100,NULL);
INSERT INTO splits VALUES('5b54138912c54a4d80d2a805649dfeb3','0540b8bd52f746e19f7c0fb8ed105804','c54efcecd14444d3b332537e19bbf773','','','n','1970-01-01 00:00:00',-1000,100,-1000,100,NULL);
INSERT INTO splits VALUES('6578409bddbd4184a52130886f13a1c6','dbc07db225df4958810a21b3b07cb04d','c54efcecd14444d3b332537e19bbf773','','','n','1970-01-01 00:00:00',10000,100,10000,100,NULL);
INSERT INTO splits VALUES('2900d6c6962c41e1ab680e8a241825fc','dbc07db225df4958810a21b3b07cb04d','2a9693d8210648bbad01adef84b260d9','','','n','1970-01-01 00:00:00',-10000,100,-10000,100,NULL);
INSERT INTO splits VALUES('ef2050a1fc8d4a5580dcb322181f6e13','78e0f219767a4f538b228165f8944efd','c54efcecd14444d3b332537e19bbf773','','','n','1970-01-01 00:00:00',-1200,100,-1200,100,NULL);
INSERT INTO splits VALUES('39cedc6b8c654eea851f03d410957498','78e0f219767a4f538b228165f8944efd','fc27e99a2a294f4c80013ebbdc7f448d','','','n','1970-01-01 00:00:00',1200,100,1200,100,NULL);
CREATE TABLE slots(id integer PRIMARY KEY AUTOINCREMENT NOT NULL, obj_guid text(32) NOT NULL, name text(4096) NOT NULL, slot_type integer NOT NULL, int64_val bigint, string_val text(4096), double_val float8, timespec_val text(19), guid_val text(32), numeric_val_num bigint, numeric_val_denom bigint, gdate_val text(8));
INSERT INTO slots VALUES(4,'6d4ed96d03d74632959fe0b04bec7280','placeholder',4,0,'true',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(5,'5add42c3affe4b27b55fabe1892b3968','placeholder',4,0,'true',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(6,'fb4f394e1bf74b77942a645f9d9bc18e','placeholder',4,0,'true',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(7,'ea375d587dcb4116b517728deefaa1e8','equity-type',4,0,'opening-balance',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(13,'c732dff174484eeeb1b3baabe05edd16','counter_formats',9,0,NULL,NULL,'1970-01-01 00:00:00','3435a86e684b463c8cb73606a277f7b3',0,1,NULL);
INSERT INTO slots VALUES(14,'c732dff174484eeeb1b3baabe05edd16','features',9,0,NULL,NULL,'1970-01-01 00:00:00','1770b480378a4f368ff2e086caf49edf',0,1,NULL);
INSERT INTO slots VALUES(15,'1770b480378a4f368ff2e086caf49edf','features/ISO-8601 formatted date strings in SQLite3 databases.',4,0,'Use ISO formatted date-time strings in SQLite3 databases (requires at least GnuCash 2.6.20)',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(16,'1770b480378a4f368ff2e086caf49edf','features/Register sort and filter settings stored in .gcm file',4,0,'Store the register sort and filter settings in .gcm metadata file (requires at least GnuCash 3.3)',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(17,'c732dff174484eeeb1b3baabe05edd16','options',9,0,NULL,NULL,'1970-01-01 00:00:00','1a5b524359dc4cf48a7cbd9b91426854',0,1,NULL);
INSERT INTO slots VALUES(18,'1a5b524359dc4cf48a7cbd9b91426854','options/Budgeting',9,0,NULL,NULL,'1970-01-01 00:00:00','38c32ecd53e9485f92db2ec7de359bbc',0,1,NULL);
INSERT INTO slots VALUES(19,'c732dff174484eeeb1b3baabe05edd16','remove-color-not-set-slots',4,0,'true',NULL,'1970-01-01 00:00:00',NULL,0,1,NULL);
INSERT INTO slots VALUES(20,'0540b8bd52f746e19f7c0fb8ed105804','date-posted',10,0,NULL,NULL,'1970-01-01 00:00:00',NULL,0,1,'20250526');
INSERT INTO slots VALUES(21,'dbc07db225df4958810a21b3b07cb04d','date-posted',10,0,NULL,NULL,'1970-01-01 00:00:00',NULL,0,1,'20250501');
INSERT INTO slots VALUES(22,'78e0f219767a4f538b228165f8944efd','date-posted',10,0,NULL,NULL,'1970-01-01 00:00:00',NULL,0,1,'20250526');
CREATE TABLE recurrences(id integer PRIMARY KEY AUTOINCREMENT NOT NULL, obj_guid text(32) NOT NULL, recurrence_mult integer NOT NULL, recurrence_period_type text(2048) NOT NULL, recurrence_period_start text(8) NOT NULL, recurrence_weekend_adjust text(2048) NOT NULL);
CREATE TABLE schedxactions(guid text(32) PRIMARY KEY NOT NULL, name text(2048), enabled integer NOT NULL, start_date text(8), end_date text(8), last_occur text(8), num_occur integer NOT NULL, rem_occur integer NOT NULL, auto_create integer NOT NULL, auto_notify integer NOT NULL, adv_creation integer NOT NULL, adv_notify integer NOT NULL, instance_count integer NOT NULL, template_act_guid text(32) NOT NULL);
CREATE TABLE lots(guid text(32) PRIMARY KEY NOT NULL, account_guid text(32), is_closed integer NOT NULL);
CREATE TABLE billterms(guid text(32) PRIMARY KEY NOT NULL, name text(2048) NOT NULL, description text(2048) NOT NULL, refcount integer NOT NULL, invisible integer NOT NULL, parent text(32), type text(2048) NOT NULL, duedays integer, discountdays integer, discount_num bigint, discount_denom bigint, cutoff integer);
CREATE TABLE customers(guid text(32) PRIMARY KEY NOT NULL, name text(2048) NOT NULL, id text(2048) NOT NULL, notes text(2048) NOT NULL, active integer NOT NULL, discount_num bigint NOT NULL, discount_denom bigint NOT NULL, credit_num bigint NOT NULL, credit_denom bigint NOT NULL, currency text(32) NOT NULL, tax_override integer NOT NULL, addr_name text(1024), addr_addr1 text(1024), addr_addr2 text(1024), addr_addr3 text(1024), addr_addr4 text(1024), addr_phone text(128), addr_fax text(128), addr_email text(256), shipaddr_name text(1024), shipaddr_addr1 text(1024), shipaddr_addr2 text(1024), shipaddr_addr3 text(1024), shipaddr_addr4 text(1024), shipaddr_phone text(128), shipaddr_fax text(128), shipaddr_email text(256), terms text(32), tax_included integer, taxtable text(32));
CREATE TABLE employees(guid text(32) PRIMARY KEY NOT NULL, username text(2048) NOT NULL, id text(2048) NOT NULL, language text(2048) NOT NULL, acl text(2048) NOT NULL, active integer NOT NULL, currency text(32) NOT NULL, ccard_guid text(32), workday_num bigint NOT NULL, workday_denom bigint NOT NULL, rate_num bigint NOT NULL, rate_denom bigint NOT NULL, addr_name text(1024), addr_addr1 text(1024), addr_addr2 text(1024), addr_addr3 text(1024), addr_addr4 text(1024), addr_phone text(128), addr_fax text(128), addr_email text(256));
CREATE TABLE entries(guid text(32) PRIMARY KEY NOT NULL, date text(19) NOT NULL, date_entered text(19), description text(2048), action text(2048), notes text(2048), quantity_num bigint, quantity_denom bigint, i_acct text(32), i_price_num bigint, i_price_denom bigint, i_discount_num bigint, i_discount_denom bigint, invoice text(32), i_disc_type text(2048), i_disc_how text(2048), i_taxable integer, i_taxincluded integer, i_taxtable text(32), b_acct text(32), b_price_num bigint, b_price_denom bigint, bill text(32), b_taxable integer, b_taxincluded integer, b_taxtable text(32), b_paytype integer, billable integer, billto_type integer, billto_guid text(32), order_guid text(32));
CREATE TABLE invoices(guid text(32) PRIMARY KEY NOT NULL, id text(2048) NOT NULL, date_opened text(19), date_posted text(19), notes text(2048) NOT NULL, active integer NOT NULL, currency text(32) NOT NULL, owner_type integer, owner_guid text(32), terms text(32), billing_id text(2048), post_txn text(32), post_lot text(32), post_acc text(32), billto_type integer, billto_guid text(32), charge_amt_num bigint, charge_amt_denom bigint);
CREATE TABLE jobs(guid text(32) PRIMARY KEY NOT NULL, id text(2048) NOT NULL, name text(2048) NOT NULL, reference text(2048) NOT NULL, active integer NOT NULL, owner_type integer, owner_guid text(32));
CREATE TABLE orders(guid text(32) PRIMARY KEY NOT NULL, id text(2048) NOT NULL, notes text(2048) NOT NULL, reference text(2048) NOT NULL, active integer NOT NULL, date_opened text(19) NOT NULL, date_closed text(19) NOT NULL, owner_type integer NOT NULL, owner_guid text(32) NOT NULL);
CREATE TABLE taxtables(guid text(32) PRIMARY KEY NOT NULL, name text(50) NOT NULL, refcount bigint NOT NULL, invisible integer NOT NULL, parent text(32));
CREATE TABLE taxtable_entries(id integer PRIMARY KEY AUTOINCREMENT NOT NULL, taxtable text(32) NOT NULL, account text(32) NOT NULL, amount_num bigint NOT NULL, amount_denom bigint NOT NULL, type integer NOT NULL);
CREATE TABLE vendors(guid text(32) PRIMARY KEY NOT NULL, name text(2048) NOT NULL, id text(2048) NOT NULL, notes text(2048) NOT NULL, currency text(32) NOT NULL, active integer NOT NULL, tax_override integer NOT NULL, addr_name text(1024), addr_addr1 text(1024), addr_addr2 text(1024), addr_addr3 text(1024), addr_addr4 text(1024), addr_phone text(128), addr_fax text(128), addr_email text(256), terms text(32), tax_inc text(2048), tax_table text(32));
DELETE FROM sqlite_sequence;
INSERT INTO sqlite_sequence VALUES('slots',22);
CREATE INDEX tx_post_date_index ON transactions(post_date);
CREATE INDEX splits_tx_guid_index ON splits(tx_guid);
CREATE INDEX splits_account_guid_index ON splits(account_guid);
CREATE INDEX slots_guid_index ON slots(obj_guid);
COMMIT;
Loading