Guide

Editing database meta-data

_images/metadata_window.png

Here you create most data sets used in describing entries: currencies, accounts, persons, subjects (payees), categories.

Currencies - can have many aliases for user’s convenience, only one alias is required. First alias from the list is treated as casual alias for given currency, so it is recommended to use international format as the first alias eg. USD, EUR, PLN. Such 3-letter international format must be also obeyed for taking advantage of calculating with downloaded exchange rates.

Multiple currencies: can be allowed on single account (eg. in case of cash account, or bank multi-currency card).

Main currency: can be changed at any time. This is the one used by default with every newly created amount field. This is also the currency used after you enable conversion of foreign currencies.

Persons - persons to which you could refeer from entry’s descriptor or when constructing a filter

Subjects - it could be name of the store, local shop, internet company, etc.

Categories - tree of categories. Any level of subcategories is supported. Dependency is important so ‘food and drinks’ and it’s child ‘food and drinks - lunches’ have a parent-child relationship, which user can exploit by constructing appropriate filter.

Note

Order of items can be changed by drag’n’drop, value of items can be changed by double-clicking.

Note

You will be disallowed when trying to remove item that is assigned by any item in database. In such situations, you must remove such assignments manually first.

Editing entry’s descriptor

_images/descriptor_window.png

Descriptor field is located on the right side of selected entry, user has a possibility to define some data for this particular entry. By default descriptor is empty. By clicking on this field, descriptor window will popup, where user can assign/unassign different values, by double-clicking on a given item.

Person - multi-select, one or more persons from defined persons, that is somehow related to this transaction, eg. as a payer or debtor

From person, To person (optional) - same as above, only single-select and available only for some entries

Subject - one of the subject from defined subjects, involved in this transaction

Account (optional) - one of the accounts defined in meta-data, available for most entries

From account, To account (optional) - same as above, but available only for some entries

Provision account (optional) - one of the accounts defined in meta-data, available for some entries, in case provision was applied but it was charged from a different account than From account

Period - related period for given entry, which user can later exploit when constructing filters. Useful if eg. you receive a salary on 3rd of January, but you want to give a hint that it is actually for work done in month December. Possible ranges: day, month, year, day range, month range, year range.

Categories - multi-select, any number of assigned categories

Mini-balance - multi-select, any number of mini-balances to which this entry is assigned

Mini-balance hints - one-in-the-group multi-select, defines how entry will be interpreted within given type of assigned mini-balance

Note

Correctness of entry fields and descriptor is checked before accepting. Appropriate error message is displayed on the status bar at the bottom.

Views

  • Streams - calendar-alike view, used mostly for entering your data and assigning meta-data to them
  • Accounts - view for checking you account history and current account saldo. Clicking on selected entry switches to editing entry in streams view.
  • Mini-balances - for creating balances/sets of entries, that otherwise are not mutually correlated. Clicking on selected entry switches to editing entry in streams view.
  • Search - view used to find entries for given search criteria
  • Filters - not implemented yet
  • Logs - view accumulating all status and error messages

Depending on the currently chosen view, entries (namely their amounts) can be displayed a bit differently. To limit confusion, please understand following point of view:

  • Streams - here amount positive and negative means that for user it was really expense or income. Black color (eg. in case of internal transfer) means neutral amount (no sign), which is not calculated into day balance. With grey color it is similar - it means that transacion didn’t actually occur at this given moment, and amount acts as informational only.

  • Accounts - here amount positive and negative means that such expense/income really took place on given account. Grey color means that given amount is not taking part of balance calculation for given account. More importantly - amount which eg. is neutral in streams view, here can be shown as positive or negative, in context of given account. For instance: amount in internal transfer means minus on one account and plus on other account.

    It could be bank account, prepaid card to the same bank account, credit card, virtual account (SteamWallet, WoW gold, etc.), Sodexho card, PayPal, and so on. Also it is suitable to be used for saving account that generates interests (something between bank account and deposit/investment). Main account (cash) cannot be removed from the database.

  • Mini-balances - here amount positive and negative means that such expense/income are part of particular mini-balance. Grey color means that given amount is not taking part of balance calculation for given mini-balance. More importantly - amount which eg. is positive in streams view, here can be shown as negative, in context of given mini-balance. For instance: using ‘investment - open/purchase’ amount entered in streams view is negative, because we actually remove that many resources from our real account, but it is positive in mini-balance, because here those resources are interpreted as investment value.

  • Search - same as Streams view

Streams

_images/streams.png

Contain a ‘physically’ separate list of day entries. User can use only one, common stream, but if he thinks he can benefit from it, he can create few of them and take advantage of such ‘physical’ separation of day entries. For instance if user sells/buys on eBay so often, that this is significant portion of his life, he may create ‘Internet shops transactions’ stream to store only such entries. Other common example is storing all bank finance related transactions (interests, bank fees, new deposits, saving accounts, mobile phone recharge etc.) in one stream, as sometimes quantity of such entries would ‘pollute’ main stream. Additionally each stream contains it’s own name, optional comment and stream marker (used in other views for convenience).

To aid displaying entries from different streams, user can use button in upper-right corner to show/hide entries for given day from different streams simultanously, in similar fashion to import history view.

Day entries

_images/day_entry.png

Day entry can be created either:

  • by clicking on Empty item and ‘Add day’, then optionally change day to a desired one (because empty element covers range of days, not particular one)
  • first select a day by clicking on calendar, and then on Empty and ‘Add day’. Day entry will be created directly for desired day

Day entry contains list of other entries, a date and optionally a comment. A comment is a convenient way of describing what user did that day, to give a context to the expenses spent (eg. ‘whole day at Disney park’).

Common entries

_images/common_entry.png

Simple entry is used for simple transactions. Entries by default are assumed to be cash account. But please note that this simple entry can be also abused for other events as well, eg. card payments. Therefore user is not forced into using extended entry, if common entry will fit him just fine (in many cases the end result will be the same).

Note

In case user does not know the exact amount he spent (but will know it in the near future) he can use undefined amount, simply by putting ‘?’ in any amount field.

Note

User has a possibility of converting an entry from common entry to extended one and back, in case user did mistake and created already wrong type of entry.

Extended entries

_images/extended_entry.png

All kind of different types of events. Many types provide actually the same or similar functionality as some others, but are provided for convenience, so it is clear for the user which event to use for eg. credit card payment. And some types provide unique functionality, which other entries cannot emulate, eg. credit card settlement (ie. without falling back to spliting to 2 separate common entries).

Some entries use two amount fields: from-amount and to-amount, instead of single amount. This is used usually for events where currency conversion occurs (‘+ exchange’). Extended entries usually come with additional amount field called ‘provision’ for entering provision or tax implied during transaction.

Note

When trying to convert entry type to other type, while containing incompatible parameters (eg. entry supports amount field, but it already has from/to amounts) user must delete troublesome field in order to proceed.

Note

Mind you that descriptor data is assigned to entry as a whole, not to a particular amount field. Hence there is no possibility of eg. creating mini-balance only from provision fields. You could use Filters for that though.

Entry group

_images/entry_group.png

Groups cannot be nested themselves (ie. they can contain either common entry or extended entry). They allow to group many entries as a logical group, with own partial balance and own comment (optional), for user’s convenience. Another use case it to split entry to few entries, by putting inside a group one normal entry and many information entries, each assigning to a different category etc. Groups as a whole don’t have a separate descriptor field.

Accounts

_images/accounts.png

Shows current saldo for all defined accounts. Accounts can be closed or open. This is used as a convenient way of telling that this account will not have any additional entries assigned to it. Closed accounts are also hidden in Import window and Descriptor window.

Mini-balances categories

_images/minibalances_categories.png

They act as a convenient way to group mini-balances. It is predicted that amount of various minibalances will grow over time, so user can for instance store all old mini-balances in ‘Old and obsolete’ mini-balance category or simply delete them. They can also be nested inside other minibalance categories to your advantage.

Mini-balances

_images/minibalances.png
_images/minibalance_instance.png

Can be closed or open. This is used as a convenient way of telling that this minibalance will not have any additional entries added to it. Closed minibalances are also hidden in Descriptor window.

Minibalance type eg. Investment uses that information to calculate resulting profit/loss differently, but in order to do it properly entry additionally must be assigned a proper mb hint. All of advanced mini-balances require mb hint from their domain, only exception is ItemValue which can have assigned entries without any additional mb hint.

To aid browsing thru many mini-balances, user can use button in upper-right corner to go back to previously visited mini-balance.

Advanced mini-balances are:

  • Item Value - used to track presence and value of important and expensive items (eg. car, laptop, camera, house) that are in your posession
  • Credit Loan Or Installment - used if you acquired a bank credit, a loan, borrowed a lot of money for a long period or acquired an item with installment payment
  • Investment - any kind of investment should fit here (including granting a loan to a friend).
  • Shared Pool - in case you were keeping a common pool of money from different parties and are responsible for keeping it under control
  • Shared Payments - in case you share a number of payments, which eventually must be split between parties equally and you are responsible for keeping it under control
  • Shared Debt - used mostly for all small debtors, borrowing small amount of money that will be soon returned, or when we owe small amount of money to someone

See provided example databases for how to use those effectively.

Import history

_images/import_history.png

This convenient view is used to import CSV data in manageable way. First user selects an existing stream, to which first (top) CSV entry will be pasted. Then user uses button in the middle to control import process: ‘Feed entry to stream’, ‘Cancel feed’, ‘Go to next day’, ‘Finish import’. User can also select entry and use it’s RMB menu for additional options.

Note

During import process, user is free to edit database data as usual.

Note

Even if import is not yet finished, user can save such partially imported database to a separate file.

Note

All imported entries are saved in database, so the same entries will be skipped if importing the same CSV file is tried. In order to mark entry as already imported, use either ‘Feed entry to stream’ or select entry and in it’s RMB menu select ‘Skip entry’

Note

User may want in some rare cases to join many entries (of the same type) from csv to a single entry in CostPal (their amounts will be summed up). For that select entry and in it’s RMB menu select ‘Join entries and feed’.

Import history (from Dropbox)

After exporting entered data at CostPal Mobile, new ‘Apps/CostPal Mobile/incoming_entries.csv’ file will be created in Dropbox folder. This is the file user should point to when importing in CostPal. After successful import finish, a file ‘Apps/CostPal Mobile/recently_imported_entries.csv’ will be created, containing data from last 7 imported days, so CostPal Mobile can get it and still show them as greyed out for user’s convenience. Once this happens (and user saves a changed database of course) import cycle is considered complete.

Note

All imported entries from Dropbox are also saved in database, so the same entries will be skipped when importing the same CSV file.

Preferences

_images/preferences_window.png
  • Language - supported English and Polish translations (must restart application for change to take effect)
  • Import account mappings - required for CSV bank account history import. User must define real account number (with optional aliases), CostPal account to be mapped to, and some custom name for the mapping. Each mapping is keeping a separate list of already imported entries, so it is crucial that you choose a correct mapping when importing given CSV file (to not double imported entries). The best is when user puts all the information about all owned bank accounts before first import (because then CostPal can properly detect if transfer was done between two owned by user bank accounts, ie. internal transfer)

Note

Some preferences are considered database-specific, but in a weak manner. When you change only them, database state will not become dirty. One such setting exists: zoom contexts (navigation panel). This is considered a feature, not a bug, as the data under change does not influence database real data, but is somehow related to them - no tragedy if those params are lost, plus user may not wish to be bothered to save a database while he changed only zoom contexts. Such params will be saved with every explicit save of database.

Tempfiles

In 4 places tempfiles are used, thanks to which you can restore a state of database to earlier state (full undo/redo is not implemented). Those are: database meta-data window, descriptor window, preferences window, import history. Tempfile will be created at the start of using those, and restored when user quits window or cancels import history.

Zoom scale

_images/zoom_context.png

Scale has 4 steps: whole year, whole month, whole week and a single day. It is controlled with scroll wheel. Zoom scale is active only for streams and accounts. Current setting of zoom contexts is preserved in database (as it is linked to particular stream or account).

There is a feature to easily set a zoom scale to a given value for all accounts instances or streams instances. To do that you just have to modify zoom scale when in parent (streams or accounts). You can recognize such condition as then color of zoom scale becomes brown instead of light blue used for account/stream instances.

Calendar

_images/calendar.png

Supports changing year, month and day. Additionally, bottom bar allows you to go to: first/last entry existing in given stream/account, or go to today’s date (commonly used to enter data for current day).