Skip to the page content area.

:::

Tavern Diary Volume 134


9.28.’07. 5:32am.

會計系統

這個中秋長假,完成了一件一直掛心的事,用 Selima 系統為基礎,寫出了一個會計程式。這證明了 Selima 網站管理系統不只可以管理網站內容,它可以作為 Web 界面資料管理的基礎系統,管理任何資料。

最初家裏在記帳,是我 1998 年起,用一個簡單的 Excel 試算表開始記的。 2000 年為了我前一個工作的 ASP 網站製作,學了 MS VBScript 和 DAO 物件,我摸索 MS Access 的功能,發現它也可以用來寫 VBScript 程式,於是我用 MS Access 加上 VBScript 程式,寫了後來一直延用了七年的共用帳記帳程式。我之前的工作學了一點點會計基礎,學會借貸平衡的觀念,可是日常現金收支記帳不好用,所以我寫共用帳記帳程式的時候,採用了一點折衷的辦法,用程式來計算借貸平衡。其結果還是一個包含銀行存款的收支表。因為簡單好用,從那時候起,就一直延用到現在。

舊的記帳程式,雖然簡單好用,但還是有很多問題。最重要的問題,就是那是很久以前寫的 VBScript 程式了。換現在這個工作到現在七年,我已經七年不碰 VBScript ,要再問我什麼 DAO 物件,我完全不懂。從七年前到現在, MS Access 昇級改版了好幾次,電腦每次安裝新版的 MS Access 時,都會問我要不要轉換成新版的資料格式,還會警告可能有些功能會無法運作。幸運的是,從來沒有發生過這種事,一切功能都還運作如常。可是我知道這不是長久之計。現在 VBScript 還用 DAO 物件嗎?我不知道。要進去修程式,依現在的 VBScript 標準更新,我也不會做。要是有哪一次 MS Access 昇級改版,一昇級記帳程式就跑不動了,我也完全沒有辦法解決。

其實從七年前到現在,我的能力也進步了很多。七年前我對 SQL 半知半解,用了一堆 DAOSQL 混用的寫法。現在回過頭來看真的很不成熟。我現在當然不可能那樣子寫了,要寫當然要用純 SQL 寫,把資料處理語言和程式語言分開來用,以便程式和資料的可攜性更強。我現在工作上用 PHP ,家裏我個人愛用 Perl ,兩邊資料庫都是用 PostgreSQL ,資料庫設計是一樣的, PerlPHP 都要可以取用。之前還有用 MySQL 的。資料語言和程式語言分開,使用標準的 SQL 語法,以便資料可攜、程式可攜,是我現在工作的常識。

當然,還有其它理由。當年寫的時候,認為帳記了就不會刪了,所以只能記帳、改帳,沒有寫刪掉帳目的功能,所以真的記錯帳,只能進去資料表裏面改,很容易出錯、誤刪誤改,造成嚴重後果。最近幾年帳目有點混亂,我一直想花點時間好好整理一下,可是面對這種刪帳非常危險的系統,我一直覺得很棘手。而且當年只有考慮現金和一本存摺,可是現實生活中的帳目根本不可能如此,常會出現暫收、暫付、應收、應付等問題。電話費拖過到下個月才繳,電話費是八月,繳的日期是九月,記八月的話現金會不正確,記九月電話費的月份會不正確。像這種欠費問題,不牽涉到現金、存款的帳,原來的記帳系統就沒有辦法記了。如果沒有真正處理借貸平衡的系統,是不可能處理的。

對這些種種問題,我一直盤算了很久。大概有一兩年了吧。去年空大去修了會計學,打好自己會計的基礎,並學會應收、應付、暫收、暫付等等的正確記法,弄清楚各種概念。然後我開始計劃新的會計系統,思考資料庫格式,要怎麼做到借貸平衡,如何兼顧日常現金收支好記,如何利用現有的 Selima 基礎系統修改、增刪。小招去美國後,我開始著手去進行。中間為了惡靈古堡 4停頓了三個多星期。不過我其實也沒完全閒著,邊玩邊思考一些程式邏輯的衝突如何解決。等到惡靈古堡 4結束收心後,把上就投入到之前寫到一半的地方,把這一陣子想到的程式邏輯具體寫出來。就這樣,趕在中秋長假一開始,就完成了新系統的初版,匯入舊的帳目,反覆測試檢查、修正各種問題。系統確認完成,和小招確認過後,就備份、淘汰掉就的 MS Access 帳目,改用 Selima 上的新系統了。

原本以為這樣就告一段落了。接著完成我之前一直未完成的心願:整理帳目。整理帳目時,又發現種種新的問題:報表邏輯功能混亂不明,缺乏某些報表,缺乏某些其實很好用的功能。這些都是實際操作時才會切身碰到的問題。於是這兩天又修修改改,好不容易,才把整個系統,改成我覺得好用的樣子,也把很多有問題的帳,通通都更正過來。

現在還差損益表和資產負債表,不過對正式學過會計基礎,擁有新系統的我,這兩項都不難。只是目前還不急著要。

蠻有成就感的。

不過我也因此反省到一件事。這次是因為我就是實際使用者,對操作上碰到的問題切身所感,所以腦筋動得很快,很快就找出應該有的正確執行邏輯,並付諸實現。但平常幫人家寫系統,我好像都不是這樣。別人碰到跟我反映的問題,我常常很難理解,甚至因此跟人家吵架,而且因為沒有對困擾感同身受,所以常常排到工作清單很後面才做,拖了很久,時效性都沒了。這樣好像不大好。是不是我一直很難了解別人在想什麼呢?


Index | First | Previous | 132 | 133 | 134 | 135 | 136 | Next | Last