PMTexporter

PMTexporter 是一個用來將PMT (或稱 PMT xl/ PMTxl/ 作者網頁/ PalmGear 介紹) 的資料匯出成 Quicken Interchange Format(.qif)。匯出之後的 qif 檔可以用於 Adarian Money 的匯入,或是其他個人理財軟體如 QuickenMS MoneySplashMoney

源由:

PMTexporter 主要是用在將資料從 PMT 轉到 Adarian Money(以下簡稱AM)的。AM是一個Palm平台上的理財軟體(如同 PMT一樣)。我用 PMT 已經用三年了,用的也很順手。不過當 GAAPPIL 上發表了 “Palm史上最強的記帳軟件 Adarian Money“,說了AM 種種的好處之後,我有一點點心動了。不過每天的新軟體,好軟體那麼多,要進入我的日常生活的確有些困難,尤其是當一個軟體使用的習慣已經養成,要重新適應另一個軟體的操作流程是一陣苦痛(現在正在苦痛中)。當 GAAP 聲稱 “相信PMT的用戶,看完我的Review,99%會跳糟到Adarian Money..哈哈”,我更好奇AM這玩意是不是真的那麼神奇。在 GAAP寫出 review: 9 Minutes To Learn Your AM 之後,我也開始試用。不過由於轉換軟體同時也要轉換資料(我有4000多筆資料),如果跳槽了舊資料沒過來也是蠻可惜了,因此動了寫個轉換程式的念頭。

由於 AM 可以匯入 QIF 的資料,而 QIF 又是標準,因此我只要寫 PMT -> QIF 就好了。轉換過的 QIF 還可以匯入到其他的理財軟體裡。

程式授權:

這個程式採用 Creative Commons 姓名標示-非商業性-相同方式分享 方式授權。

這也是我第一個使用這種方式授權的程式。

連絡方式:

你可以在我的網頁 上找到我的連絡資訊,也可以在 PIL 站內寫信給我,我的ID 是 PipperL。

使用方式:

找到你的 PMT 資料檔。當PMT與PC端同步之後,會把資料檔用 csv 的格式存放在 PC 上。通常你可以在 [your palm dir]\[your user name]\Pmtxl\ 裡找到。通常資料檔的檔名是 PMTxlDB0.csv 和 PMTxlDB0.act.csv,如果你有一個以上的資料庫,會以 PMTxlDB[1,2...N].csv 的方式存在。由於 PMTexporter 只會轉換 PMTxlDB0.csv 和 PMTxlDB0.act.csv,因此如果你要轉換其他資料檔,請自行變更檔名。

把資料檔 copy 到 PMTexporter 的目錄下,編輯 PMTxlDB0.act.csv (你可以使用記事本 或是 Excel),編輯 “Type” 這個欄位的內容。PMT 只支援 Asset / Liability / Income / Expense 四種,但是 QIF裡的定義有 Cash / Bank / Asset / “Credit Card” / Liability / Income / Expense 這些。這如果你是要給其他的軟體匯入,請自行把信用卡(在 PMT 裡是標記為 Liability)改成 Credit Card,把銀行(在 PMT 裡是標記為 Asset)改成 Bank,把現金 (在 PMT 裡是標記為 Asset)改成 Cash。如果你是要匯入 AM 的話,由於 AM 只認對應帳戶建立時指定的 Type,不認 QIF 裡的 Type,因此可以不用作任何更動(做了也沒用)。

開個命令列模式(命令提示字元 / Command.exe/ cmd.exe),執行 PMTexporter。

C:\tmp\>pmtexporter.exe

根據畫面顯示的資料操作(其實只要按幾個 Enter 即可),然後匯出的 QIF 檔就會出現在一個名為 output 的資料夾了。

在進行下一步之前,備份你原有的 AM 資料庫(以防萬一)。

試著把這些 QIF 檔匯入 AM 裡。怎麼匯入? 請參照 AM 的使用手冊(p.117)。如果你有超過 1000 筆的交易(有人說是傳票)要匯入,那麼使用 AM for Palm OS 的話大概會跑到天荒地老。所以這個時候,我建議使用 AM for Windows 來作匯入的動作。但是, AM for Windows 並不會在匯入的時候自動建立對應的帳戶,而是會跳出一個訊息,然後要求使用者自行建立帳戶,這個動作非常麻煩。相對的,AM for Palm OS 雖然會跳出訊息,但是可以讓你馬上建立相同名字的帳戶。因此,你可以先用 AM for Palm OS 匯入一個名為 “Create Account.qif” 的 QIF檔,建立帳戶後,與 AM for Windows 同步,然後在 AM for Windows上 繼續執行其他的匯入動作。

PMT 使用 “Equity” 這個帳戶來做 Balance 的動作,而 AM 沒有,AM 使用的是 “Opening balance” 這個動作。不過由於每一筆 Transfer 交易都會在兩個帳戶各自產生一筆交易,當匯入 AM 時,有一個選項是 “Matching transaction”,預設是打開,而且一定要打開。所以 AM 會自動比對,不會造成重覆的現象,也因此 Equity 理論上不用匯入,只要匯入其他的帳戶,在 Equity 這個帳戶就會自動出現對應的交易。

如果要把這程式應用在其他的理財軟體,有沒有要注意的地方?

如果沒有,我就會不寫這一段了 :-p

有三個我目前發現的地方,程式也因此作了修正,匯出的 QIF 檔「理論上」還是可以應用在其他的理財軟體,但是如果發現不同,請自行注意一下看問題是不是出在下面提的三個地方:

  1. 當同時使用 PMT 跟 PST 時,PMT 會產生一種「self-transfer」的交易(傳票),也就是在同一個帳戶互相轉帳。通常可以在交易裡發現這種交易:

    “從 Investment 轉到 Investment”

    但是, AM 不容許這種形式的交易(傳票),所以在匯出 QIF 的時候,這樣子的交易會被捨去,不予匯出。然後你會看到程式產生一個訊息通知你:

    Self Transfer: L10 : 2003/6/30 : Investment -> Investment : $16800.00 (購買 XXX 股票)

  2. AM 在匯入 QIF 時,雖然可以自動比對(Match)是否有一樣的交易,但是 AM 無法比對 Split Transaction。舉個例子,如果你有一筆 Split transaction:

    Cash -> split: 1.food(category) $300, 2.money for office(asset) $200

    那麼在匯出 QIF 的時候,會出現兩筆:

    In Cash.qif:
    split action to 1.food(category) $300, 2.money for office(asset) $200

    In Money for office.qif:
    a trnafer-in record from Cash : $200

    這是符合 QIF 的格式的,但是 AM 在匯入比對時,不會發覺在 “Money for office.qif” 裡的那一筆是跟 “Cash.qif”為同一筆交易,因此會在 Cash 這個帳戶產生兩筆 $200 交易。要避免這個情況,我只好不輸出第二筆交易資訊。

  3. 在 AM 裡,由於 category 限制只能有兩層( category 跟 sub-category),不像 PMT 可以很多層,所以程式會作取捨,只選前兩層,後面的 category 就會被併入上層的category。

其他要注意的地方:

在 PMT 裡,有個 “Description” 欄位,其角色應該是有點像是 AM 的 “Class” 欄位。但是在匯出的時候,由於沒有 Class 這個欄位,因此我把他匯出成 sub-category。你可以在匯入 QIF 檔之後,在 AM 裡修改成所對應的 category。不過由於 daily@PalmidLife 的建議,在 v0.63以後的版本,你可以選擇將 Description 匯出成為 sub-category 或是 Payee。

根據 AM manual 裡面關於 Import & Export 的章節(p.117開始)建議,匯入完一定要自己看過一遍,確定有沒有問題,有問題(有時因為匯率的關係會差一元)的話自己再修改。我自己是一邊打開AM for Windows,然後在 Palm 上打開PMT,交互比對每一個帳戶的 Balance。如果有問題,就進該帳戶裡比對每一期間的交易/Balance,慢慢縮小區間,最後找到有問題的交易。

我自己這個程式在我自己的資料(前面提過了 4000多筆,不過我分類/帳戶不多,只有30個左右的Account & Category)試過了,基本上匯入之後手動的修改處非常少,不過一陣子痛苦的手動對帳還是少不了的(我的話大概是 10 min),再加上之後把帳戶名/Category名重新分類取名到 AM(新的分類法接近 50 個),大概半個小時跑不掉。不過每個人碰到的問題應該都不相同,如果你的資料沒有什麼問題,that’s fine。如果問題不多,請自己對帳,修改一下吧。

目前 PMTexporter 並沒有把記錄中的 Ref #(也就是支票號碼欄位)作匯出的動作,因為我太懶了 :-p

如果匯出的結果差十萬八千里怎麼辦?

  1. 請先自己對一下帳看看是不是幾筆/幾十筆的誤差 (是的話請自行使用工人智慧:P)
  2. 請先看看是不是某 sub-category 的帳被併到上一層去。這個現象常發生在:
    1. 超過兩層的 sub-categoty(AM 只支援兩層)
    2. 因為把 Description 當 sub-category 使其超過兩層。
    3. 從 Expanse 轉帳到 Account (PMT 容許這種交易)時,偶爾程式會誤判。
  3. 如果確定有很大的問題(如明顯的程式誤判),請把你的 PMTxlDB0.csv 和 PMTxlDB0.act.csv 剪裁到小於100筆的交易(剪裁完後記得測一下是不是依舊有問題),然後將這兩個檔案包含你所碰到的問題,一起寄到我的信箱( pipperl[AT]serv.idv.tw)。你也可以在 PIL上的這篇文章裡反應你所碰到的問題,然後把上述兩個檔案寄到我的信箱。

2005/11/25 補充:

  • 當使用 AMwin 匯入時,跳出的視窗有一個 “select all” 一定不能選。這是因為:在匯入的時候,AM 會去做 matching 的動作,去除重覆的交易。如果點了 select all 等於叫 AM 不做 matching 的動作,會出現很多重覆的交易。
  • 因為 AM 不支援虛帳戶轉到虛帳戶之間的交易,所以如果在 PMT 裡面有虛帳戶轉到虛帳戶的交易,會被判定 UNKNOWN: LXX…. 。這是 AM 先天的限制,無解。

2005/11/26 補充:

AM 發表了 3.7 beta,裡面有提到更新的功能:

Improved performance for importing QIF/OFX files, noticeable especially when there are thousands of records;

The import of QIF/OFX in the Palm OS version has been completely re-written, this may be a problematic area.

我沒有在 3.7beta or 未來的 3.7 上測試 import 的功能。想當白老鼠的人可以試試。

2006/11/23 補充:

感謝網友 William Liao,在 PMTxl 8.x版後,conduit匯出成 CSV的部份多了”Output Format” 的選項,必須選擇 Account Columns 才會輸出可以被 PMT exporter 正確解讀的CSV 檔案。

下載目前版本的 PMTexporter:
目前的版本: v0.65 下載

v0.65:

  • Fix the bug that some chinese characters in note will be mistreated. Thank GGAP for reporting this bug.

v0.64:

  • Handle the escaping in account/category field for ‘[' and ']‘ characters

v0.63:

  • Add the options for mapping the “Description” to either sub-category or payee
  • Export the ref # (check #) field

v0.62 :

  • First public release.
 

1 個迴響 »

  1. GeorgeC says:

    您好:
    小弟想請教一個問題:
    我用AM 4.0的版本,照您所說的方式把Create Account.qif存入Palm中,
    然後在AM for Palm執行Import的動作,
    但是它跑完之後出現以下訊息:
    No transactions are found in the file. Nothing to import.
    請問,我不知道是那邊做錯了,
    不知您能否幫小弟解答,謝謝!

發表迴響