GnuCash c935c2f+
Loading...
Searching...
No Matches
Functions
gnucash_simple Namespace Reference

Functions

 addressToDict (address)
 
 vendorToDict (vendor)
 
 customerToDict (customer)
 
 transactionToDict (transaction, entities)
 
 splitToDict (split, entities)
 
 invoiceToDict (invoice)
 
 billToDict (bill)
 
 entryToDict (entry)
 
 accountToDict (account)
 

Detailed Description

gnucash_simple.py -- A helper file to convert Gnucash objects into
dictionaries for easier conversion to JSON

Copyright (C) 2013 Tom Lofts <dev@loftx.co.uk>

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 Tom Lofts <dev@loftx.co.uk>

Function Documentation

◆ accountToDict()

gnucash_simple.accountToDict (   account)

Definition at line 280 of file gnucash_simple.py.

280def accountToDict(account):
281
282 commod_table = account.get_book().get_table()
283 gbp = commod_table.lookup('CURRENCY', 'GBP')
284
285 if account is None:
286 return None
287 else:
288 simple_account = {}
289 simple_account['name'] = account.GetName()
290 simple_account['type_id'] = account.GetType()
291 simple_account['description'] = account.GetDescription()
292 simple_account['guid'] = account.GetGUID().to_string()
293 if account.GetCommodity() == None:
294 simple_account['currency'] = ''
295 else:
296 simple_account['currency'] = account.GetCommodity().get_mnemonic()
297 simple_account['subaccounts'] = []
298 for n, subaccount in enumerate(account.get_children_sorted()):
299 simple_account['subaccounts'].append(accountToDict(subaccount))
300
301 simple_account['balance'] = account.GetBalance().to_double()
302 simple_account['balance_gbp'] = account.GetBalanceInCurrency(
303 gbp, True).to_double()
304 simple_account['placeholder'] = account.GetPlaceholder()
305
306 return simple_account

◆ addressToDict()

gnucash_simple.addressToDict (   address)

Definition at line 32 of file gnucash_simple.py.

32def addressToDict(address):
33 if address is None:
34 return None
35 else:
36 simple_address = {}
37 simple_address['name'] = address.GetName()
38 simple_address['line_1'] = address.GetAddr1()
39 simple_address['line_2'] = address.GetAddr2()
40 simple_address['line_3'] = address.GetAddr3()
41 simple_address['line_4'] = address.GetAddr4()
42 simple_address['phone'] = address.GetPhone()
43 simple_address['fax'] = address.GetFax()
44 simple_address['email'] = address.GetEmail()
45
46 return simple_address
47

◆ billToDict()

gnucash_simple.billToDict (   bill)

Definition at line 198 of file gnucash_simple.py.

198def billToDict(bill):
199
200 if bill is None:
201 return None
202 else:
203 simple_bill = {}
204 simple_bill['id'] = bill.GetID()
205 simple_bill['type'] = bill.GetType()
206 simple_bill['date_opened'] = bill.GetDateOpened().strftime('%Y-%m-%d')
207 if bill.GetDatePosted().strftime('%Y-%m-%d') == '1970-01-01':
208 simple_bill['date_posted'] = None
209 else:
210 simple_bill['date_posted'] = bill.GetDatePosted().strftime(
211 '%Y-%m-%d')
212 if bill.GetDateDue().strftime('%Y-%m-%d') == '1970-01-01':
213 simple_bill['date_due'] = None
214 else:
215 simple_bill['date_due'] = bill.GetDateDue().strftime('%Y-%m-%d')
216 simple_bill['notes'] = bill.GetNotes()
217 simple_bill['active'] = bill.GetActive()
218 simple_bill['currency'] = bill.GetCurrency().get_mnemonic()
219 simple_bill['owner'] = vendorToDict(bill.GetOwner())
220 simple_bill['owner_type'] = bill.GetOwnerType()
221 simple_bill['billing_id'] = bill.GetBillingID()
222 simple_bill['to_charge_amount'] = bill.GetToChargeAmount().to_double()
223 simple_bill['total'] = bill.GetTotal().to_double()
224 simple_bill['total_subtotal'] = bill.GetTotalSubtotal().to_double()
225 simple_bill['total_tax'] = bill.GetTotalTax().to_double()
226
227 simple_bill['entries'] = []
228 for n, entry in enumerate(bill.GetEntries()):
229 if type(entry) != Entry:
230 entry=Entry(instance=entry)
231 simple_bill['entries'].append(entryToDict(entry))
232
233 simple_bill['posted'] = bill.IsPosted()
234 simple_bill['paid'] = bill.IsPaid()
235
236 return simple_bill
237

◆ customerToDict()

gnucash_simple.customerToDict (   customer)

Definition at line 66 of file gnucash_simple.py.

66def customerToDict(customer):
67
68 if customer is None:
69 return None
70 else:
71 simple_customer = {}
72 simple_customer['name'] = customer.GetName()
73 simple_customer['id'] = customer.GetID()
74 simple_customer['guid'] = customer.GetGUID().to_string()
75 simple_customer['notes'] = customer.GetNotes()
76 simple_customer['active'] = customer.GetActive()
77 simple_customer['discount'] = customer.GetDiscount().to_double()
78 simple_customer['credit'] = customer.GetCredit().to_double()
79 simple_customer['currency'] = customer.GetCurrency().get_mnemonic()
80 # simple_customer['tax_table_override'] = customer.GetTaxTableOverride()
81 simple_customer['address'] = addressToDict(customer.GetAddr())
82 simple_customer['shipping_address'] = addressToDict(
83 customer.GetShipAddr())
84 simple_customer['tax_included'] = customer.GetTaxIncluded()
85
86 return simple_customer
87

◆ entryToDict()

gnucash_simple.entryToDict (   entry)

Definition at line 238 of file gnucash_simple.py.

238def entryToDict(entry):
239
240 if entry is None:
241 return None
242 else:
243
244 simple_entry = {}
245 simple_entry['guid'] = entry.GetGUID().to_string()
246 simple_entry['date'] = entry.GetDate().strftime('%Y-%m-%d')
247 simple_entry['date_entered'] = entry.GetDateEntered().strftime(
248 '%Y-%m-%d')
249 simple_entry['description'] = entry.GetDescription()
250 simple_entry['action'] = entry.GetAction()
251 simple_entry['notes'] = entry.GetNotes()
252 simple_entry['quantity'] = entry.GetQuantity().to_double()
253 if entry.GetInvAccount() == None:
254 simple_entry['inv_account'] = {}
255 else:
256 simple_entry['inv_account'] = accountToDict(entry.GetInvAccount())
257 simple_entry['inv_price'] = entry.GetInvPrice().to_double()
258 simple_entry['discount'] = entry.GetInvDiscount().to_double()
259 simple_entry['discounted_type'] = entry.GetInvDiscountType()
260 simple_entry['discounted_how'] = entry.GetInvDiscountHow()
261 simple_entry['inv_taxable'] = entry.GetInvTaxable()
262 simple_entry['inv_tax_included'] = entry.GetInvTaxIncluded()
263 # simple_entry['inv_tax_table_override'] = entry.GetInvTaxTable()
264 if entry.GetBillAccount() == None:
265 simple_entry['bill_account'] = {}
266 else:
267 simple_entry['bill_account'] = accountToDict(
268 entry.GetBillAccount())
269 simple_entry['bill_price'] = entry.GetBillPrice().to_double()
270 simple_entry['bill_taxable'] = entry.GetBillTaxable()
271 simple_entry['bill_tax_included'] = entry.GetBillTaxIncluded()
272 simple_entry['bill_tax_table'] = entry.GetBillTaxTable()
273 simple_entry['billable'] = entry.GetBillable()
274 simple_entry['bill_payment'] = entry.GetBillPayment()
275 simple_entry['is_open'] = entry.IsOpen()
276
277 return simple_entry
278
279

◆ invoiceToDict()

gnucash_simple.invoiceToDict (   invoice)

Definition at line 151 of file gnucash_simple.py.

151def invoiceToDict(invoice):
152
153 if invoice is None:
154 return None
155 else:
156 simple_invoice = {}
157 simple_invoice['id'] = invoice.GetID()
158 simple_invoice['type'] = invoice.GetType()
159 simple_invoice['date_opened'] = invoice.GetDateOpened().strftime(
160 '%Y-%m-%d')
161 if invoice.GetDatePosted().strftime('%Y-%m-%d') == '1970-01-01':
162 simple_invoice['date_posted'] = None
163 else:
164 simple_invoice['date_posted'] = invoice.GetDatePosted().strftime(
165 '%Y-%m-%d')
166 if not invoice.GetDateDue() or invoice.GetDateDue().strftime('%Y-%m-%d') == '1970-01-01':
167 simple_invoice['date_due'] = None
168 else:
169 simple_invoice['date_due'] = invoice.GetDateDue().strftime(
170 '%Y-%m-%d')
171 simple_invoice['notes'] = invoice.GetNotes()
172 simple_invoice['active'] = invoice.GetActive()
173 simple_invoice['currency'] = invoice.GetCurrency().get_mnemonic()
174 owner = invoice.GetOwner()
175 if type(owner) == gnucash.gnucash_business.Job:
176 owner = owner.GetOwner()
177 simple_invoice['owner'] = vendorToDict(owner)
178 simple_invoice['owner_type'] = invoice.GetOwnerType()
179 simple_invoice['billing_id'] = invoice.GetBillingID()
180 simple_invoice['to_charge_amount'] = invoice.GetToChargeAmount().to_double()
181 simple_invoice['posted_txn'] = transactionToDict(invoice.GetPostedTxn(), [])
182 simple_invoice['total'] = invoice.GetTotal().to_double()
183 simple_invoice['total_subtotal'] = invoice.GetTotalSubtotal(
184 ).to_double()
185 simple_invoice['total_tax'] = invoice.GetTotalTax().to_double()
186
187 simple_invoice['entries'] = []
188 for n, entry in enumerate(invoice.GetEntries()):
189 if type(entry) != Entry:
190 entry=Entry(instance=entry)
191 simple_invoice['entries'].append(entryToDict(entry))
192
193 simple_invoice['posted'] = invoice.IsPosted()
194 simple_invoice['paid'] = invoice.IsPaid()
195
196 return simple_invoice
197

◆ splitToDict()

gnucash_simple.splitToDict (   split,
  entities 
)

Definition at line 129 of file gnucash_simple.py.

129def splitToDict(split, entities):
130 if split is None:
131 return None
132 else:
133 simple_split = {}
134 simple_split['guid'] = split.GetGUID().to_string()
135 if 'account' in entities:
136 simple_split['account'] = accountToDict(split.GetAccount())
137 if 'transaction' in entities:
138 simple_split['transaction'] = transactionToDict(
139 split.GetParent(), [])
140 if 'other_split' in entities:
141 simple_split['other_split'] = splitToDict(
142 split.GetOtherSplit(), ['account'])
143 simple_split['amount'] = split.GetAmount().to_double()
144 simple_split['value'] = split.GetValue().to_double()
145 simple_split['balance'] = split.GetBalance().to_double()
146 simple_split['cleared_balance'] = split.GetClearedBalance().to_double()
147 simple_split['reconciled_balance'] = split.GetReconciledBalance(
148 ).to_double()
149
150 return simple_split

◆ transactionToDict()

gnucash_simple.transactionToDict (   transaction,
  entities 
)

Definition at line 88 of file gnucash_simple.py.

88def transactionToDict(transaction, entities):
89 if transaction is None:
90 return None
91 else:
92 simple_transaction = {}
93 simple_transaction['guid'] = transaction.GetGUID().to_string()
94 simple_transaction['num'] = transaction.GetNum()
95 simple_transaction['notes'] = transaction.GetNotes()
96 simple_transaction['is_closing_txn'] = transaction.GetIsClosingTxn()
97
98 if 'splits' in entities:
99 simple_transaction['splits'] = []
100 for split in transaction.GetSplitList():
101 if type(split) != Split:
102 split=Split(instance=split)
103 simple_transaction['splits'].append(
104 splitToDict(split, ['account']))
105
106 simple_transaction['count_splits'] = transaction.CountSplits()
107 simple_transaction['has_reconciled_splits'] = \
108 transaction.HasReconciledSplits()
109 simple_transaction['currency'] = transaction.GetCurrency(
110 ).get_mnemonic()
111 simple_transaction['imbalance_value'] = transaction.GetImbalanceValue(
112 ).to_double()
113 simple_transaction['is_balanced'] = transaction.IsBalanced()
114 simple_transaction['date'] = transaction.GetDate().strftime('%Y-%m-%d')
115 simple_transaction['date_posted'] = transaction.RetDatePosted(
116 ).strftime('%Y-%m-%d')
117 simple_transaction['date_entered'] = transaction.RetDateEntered(
118 ).strftime('%Y-%m-%d')
119 simple_transaction['date_due'] = transaction.RetDateDue().strftime(
120 '%Y-%m-%d')
121 simple_transaction['void_status'] = transaction.GetVoidStatus()
122 simple_transaction['void_time'] = transaction.GetVoidTime().strftime(
123 '%Y-%m-%d')
124
125 simple_transaction['description'] = transaction.GetDescription()
126
127 return simple_transaction
128

◆ vendorToDict()

gnucash_simple.vendorToDict (   vendor)

Definition at line 48 of file gnucash_simple.py.

48def vendorToDict(vendor):
49
50 if vendor is None:
51 return None
52 else:
53 simple_vendor = {}
54 simple_vendor['name'] = vendor.GetName()
55 simple_vendor['id'] = vendor.GetID()
56 simple_vendor['guid'] = vendor.GetGUID().to_string()
57 simple_vendor['notes'] = vendor.GetNotes()
58 simple_vendor['active'] = vendor.GetActive()
59 simple_vendor['currency'] = vendor.GetCurrency().get_mnemonic()
60 #simple_vendor['tax_table_override'] = vendor.GetTaxTableOverride()
61 simple_vendor['address'] = addressToDict(vendor.GetAddr())
62 simple_vendor['tax_included'] = vendor.GetTaxIncluded()
63
64 return simple_vendor
65