PC & Web Xperience, Inc.

01/11/2001

Author: Jason A. Pattie

LastRevised: 2002/05/14


New features:


QIF Import (Securities Information) Design





(not going to implement yet)


(not going to implement yet)


Investment actions

Implemented


QIF code

Our Action

Needed items

yes

*

Buy

buy


yes

*

Sell

sell


---


ReinvDiv

cash dividend, buy

dividend income account

---


ReinvInt

interest, buy

interest revenue account

---


ReinvLg

cash transfer, buy

ask user where money came from (account); if from same account, do not enter transfer

---


ReinvMd

cash transfer, buy


---


ReinvSh

cash transfer, buy


yes

*

Reminder

memo


yes

*

RtrnCap

return of capital


yes

*

RtrnCapX

return of capital, cash transfer


yes

*

SellX

sell, cash transfer


yes

*

BuyX

cash transfer, buy


---


CGLong

journal transaction (general)


---


CGLongX

journal transaction (general), cash transfer


---


CGMid

journal transaction (general)


---


CGMidX

journal transaction (general), cash transfer


---


CGShort

journal transaction (general)


---


CGShortX

journal transaction (general), cash transfer


yes

*

Div

journal transaction (general)


yes

*

DivX

journal transaction (general), cash transfer


yes

*

IntInc

journal transaction (general)


yes

*

IntIncX

journal transaction (general), cash transfer


---


MargInt

journal transaction (general)

interest expense account

---


MargIntX

journal transaction (general), cash transfer

interest expense account

yes

*

MiscExp

journal transaction (general)

ask user where money came from (account)

yes

*

MiscExpX

journal transaction (general), cash transfer

ask user where money came from (account)

yes

*

MiscInc

journal transaction (general)

ask user where money came from (account)

yes

*

MiscIncX

journal transaction (general), cash transfer

ask user where money came from (account)

yes

*

StkSplit

stock split


yes

*

XIn

cash transfer


yes

*

XOut

cash transfer


yes

*

ShrsIn

buy (or map to different type of event)

ask user where money came from (account), present user with a list of possible transactions. Eventually we will try to guess the best match

yes

*

ShrsOut

sell (or map to different type of event)

ask user where money goes to (account)








store ignored and problematic data to be displayed to the user when finished.



Have links for user to click and be displayed:



Inserted Journal Entries



Inserted Investment data



Ignored Data



//Psuedocode for importing qif file registers

//loop until all lines are read

while ($line != EOF)

//Input line and strip first character. character identifies line

SWITCH: ($character)

{

case '!'://Check to make sure "Bank" is next

break;

case 'D'://Get the date for a transaction

break;

case 'N'://Get the bank account number (check or deposit)

if 'D' //is next then debit is set and sub account is set to number.

break;

case 'P': //Payee Payer

break;

case 'A': //Address - IGNORE IT

break;

case 'L': //category. This will be the Sub Entity, Account, and/or sub account

//Check the line for ':'

switch (number)

{

case 0: //The line should refer to an account with no sub entity

break;

case 1: //The text before the : is sub entity and text after is account

break;

case 2://Text before is sub entity, between is account, last is SubAccount

break;

default: //Should not get here but if so then the data is not easily

//recognizable. Ask user

break;

}

break;

case '^': //Check to make sure all necessary data is filled in current trans

// and start new transaction.

break;

case 'T'://Amount

case 'U': //Don't know why there are two?

break;

case 'C': //Cleared

switch(text)

{

case '*': //Reconciled

break;

case 'X': //Cleared

break;

default: //Should not get here but if so then the data is not easily

//recognizable. Skip

break;

}

break;

case 'M': //Memo

break;

case 'S': //Accounts for rest of transaction

//next line should be a '$' read it in and apply it to this acount

break;

case 'E': //memo in split. Just add to .memo

break;

case '$': //Should not really get here because the amount should have been read

//in and allocating to an account already.

print("Error. Encountered a $ without an account to apply it to.");

break;

case '%': //Percentages? Not sure what to do?

print("Do not know how to deal with %.");

break;

case 'F': //Huh?

print("Do not know how to deal with F.");

break;

Default: print("Unrecognized character found! ");

print(character);

Break;

}