![]() ![]() In particular, the importer needs the help of the UI to map unknown QIF Accounts and Categories to GnuCash Accounts (the latter to Income and Expense Accounts) and QIF Securities to GnuCash Commodities. The next series of steps maps QIF data objects to GnuCash data objects. If the importer sees multiple parts of the same transaction it can (and should) combine them into a single transaction, thereby pinning down the near and far accounts. Part of this is duplicate detection, because QIF only includes half a transaction (for any QIF transaction you only know the local account, not necessarily the "far" account). Once the user chooses all their files (they can also remove files during the process) the importer will combine the files into a common import, trying to match QIF accounts and transactions from different files. the date format), should the user be asked for each file, or can we assume that all the files have the same format? Perhaps the UI should allow the user to "make this choice for QUESTION: If the user provides multiple files at once and each file has internal ambiguities (e.g. ![]() ![]() Similarly, each file may need user intervention to disambiguate various data, like the date or number formats. In the latter case the UI needs to ask the user for the actual QIF account name for the file. *.qif) to reduce the user workload.Įach imported file may be a complete QIF file or it may be a single QIF account file. While the importer should allow the user to iteratively add more and more files to the import context, it should also allow the user to select multiple files at once (e.g. The UI passes each filename to the importer which reads the file and performs a quick parse process to break the file down into its component QIF parts. The first step in the import process is selecting the file (or files) to be imported. The context model allows multiple import processes to take place simultaneously. All of a single import is performed within that context. The import process starts when the UI creates a new import context. QUESTION: How does the importer relate the processing state back to the UI? Simiarly, how does it pass back specific disambiguating questions to ask the user (and how are those responses returned to the importer)? For example, during the conversion phase if the date format is unambiguous then no user input would be required and the "ask for date format What input is required depends on the stage of the process and what the last stage returned. ![]() For long-running operations the UI can provide a callback mechanism for a progress bar of completion.Įach stage of the import process may require some user input. The UI code calls each step in the process. The importer is driven by the UI code the importer itself is just a multi-stage worker. A small set of APIs allow the user to progress along the processing steps (and an internal state machine makes sure the caller proceeds in the proper order). The importer starts with a clean import context and then each processing step modifies it as per the user's requirements. The importer is a multi-step, staged system that should implement a read, parse, convert, combine, filter, finish process. This document is an attempt to describe the architecture of the new importer, implemented in C, and how it interfaces to the rest of the import infrastructure. Memorized Transaction import).Īs much as "complete rewrite" tends to be a lot of work for little gain, when few (if any) developers can understand the implementation well enough to make changes, a complete re-write may make sense. Another issue is that the code is not commented and no documentation exists to help future developers track down bugs or extend the importer as QIF changes over time (c.f. One problem with both of these solutions is that they are written in Scheme, a language that many gnucash developers just don't understand well. Similarly, the half-completed re-write in qif-io-core is similarly hard to maintain (although it is arguably easier to integrate). The existing qif importer in src/import-export/qif-import is both hard to maintain and hard to re-integrate into the shared import architecture. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |