PocketMoney Financial Posting Standard 1.4

Just as printing, faxing, mailing, and beaming have a standard way to communicate within Newton packages there needs to be a standard for routing financial transaction information. Catamount Software has developed a standard way for Newton packages to communicate with each other about financial transactions called the PocketMoney Finacial Posting Standard (PM-FPS).

What this standard means to the user is that 3rd party packages can have tighter integration with a personal financial manager like PocketMoney thereby reducing many of the steps required for double entry of transactions.

PM-FPS is ©1994 by Catamount Software. If you use this standard in your program you must state that your program is compatiable with "the PocketMoney Financial Posting Standard". All developers are encouraged to implement it if applicable into your application. By notifing Catamount Software that your package is PM-FPS compatiable, your application will be added to the list of compatiable applications.

This standard has been implemented in the newest versions MPG, PocketMoney, Register, Bills To Pay, ExpensePlus, and CheckPlease. Guidance is currently being given to other developers to implement this in their programs. If you are a developer thinking of implementing this or you have comments on ways to improve any parts of this please notify Catamount Software via email.


PM-FPS Implementation

The general outlines for implementation are:
  1. GetRoot().FinanceApp points to the current financial program that wants to receive your financial data. Assume that the rest of this outline assumes that

    PostTo := GetRoot().FinanceApp;

  2. Title of the FPS application is

    PostTo.Title

  3. You can get account names used by the installed finance app by sending it the message :?GetAccounts(). GetAccounts() is an optional feature that some programs may provide. GetAccounts() returns an array of strings.

    theAccounts := PostTo:?GetAccounts();

  4. You can get category names used by the installed finance app by sending it the message :?GetCategories(). GetCategories() is an optional feature that some programs may provide. GetCategories() returns an array of strings.

    theAccounts := PostTo:?GetCategories();

  5. You can get the current balance for an account from the current finance app by sending it the message :?GetBalance(accountString); GetBalance() is an optional feature that some programs may provide. GetBalance() returns a frame with two slots balance and cleared {balance: 0.0, cleared: 0.0}. Balance and cleared both contain real numbers.

    theCheckbookBalance := PostTo:?GetBalance("Checking");

  6. You can get the next check number for an account from the current finance app by sending it the message :?GetNewCheck(accountString); GetNewCheck() is an optional feature that some programs may provide.

    theCheckbookChkNum:= PostTo:?GetNewCheck("Checking");

  7. You can tell the Finance App to ask the user to confirm the data that you posted from your program by setting the 'confirm slot in the post frame. Confirm is an optional feature that some programs may provide.

    {...
    confirm: true; // or nil
    ... }

  8. Once you have all of your data you can post it to the finance app by sending the Post() message. Post() will return True if sucessful and nil otherwise. Post() takes one parameter myPostFrame.

    PostTo:Post(myPostFrame);

  9. If you want confirmation that a user actually posted the transaction to PocketMoney then you should use PostConfirm() and PostComplete()

    PostTo:PostConfirm(myPostFrame, aView); // aView is the view will receive the 'PostComplete message

    aView:PostComplete(thePocketMoneyEntry or nil); // what you receive if the user posts or cancels the post of the transaction


myPostFrame Definition

Format is based somewhat on QIF (Quicken Interchange Format). Here are the corresponding slots in a Posting Frame.

Slot Definitions

Date (D)
int - date of transaction - default is Time()
Payee (P)
string - person or company you gave money to or received money from
Memo (M)
string - description
Amount (T)
real - use a negative sign for a payment, no sign for a deposit
ChkNum (N)
string - check Number or reference
Cleared (C)
string -status X is Reconciled, * is Cleared
Category (L)
string - category/transfer/class information
Account (n/a)
string - account to posted transaction to
confirm (n/a)
boolean - finance app should double check data with user
TransferToAccount (n/a)
string - account to transfer funds to

Sample Frame

The frame you would past to Post() would look like

{
account:"Savings",
Date:32948753, // internal Newton date format default is Time()
Payee:"John Smith",
Memo:"for Shareware fee for Jumping Beans",
amount: -35.00,
chknum:"533",
cleared:"*",
category:"Newton",
}

Sample Transfer Frame

Here is a transfer frame example...

{
account:"Savings", // transfer from account
TransferToAccount: "Visa", // transfer to account
Date:32948753, // internal Newton date format default is Time()
Memo:"May bill",
amount: 235.00,
chknum:"2344",
}

No fields are required so you could pass {} to Post() and it would work based on whatever defaults are setup in the receiving Finance App.


PM-FPS is ©1994 by Catamount Software. PocketMoney and MPG are Trademarks of Catamount Software. Newton® is a registered trademark of Apple Computer, Inc.. All other trademarks are property of their respective owners.
Return to : Catamount Software's Home Page

Send comments to: info@catamount.com

version: 1.0 date: 12/1/94
version: 1.1 date: 3/6/96
version: 1.2 date: 4/7/96 - changed validate to confirm
version: 1.2 date: 6/9/96 - documented return values for some functions
version: 1.3 date: 9/3/96 - documented PostConfirm and PostComplete
version: 1.4 date: 8/12/98 - modified PostComplete to return the PocketMoney entry added to PocketMoney. - for OOP support