0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

会計ソフトの作成 1 5要素を示すテーブル

0
Posted at

とある事情で簿記資格(3級)を取得した際、この3級(中小企業の会計を管理)レベルの簿記の仕組みは自分で実装できるのでは?中小どころか零細部類なんだしと気づきました。今更ですが。
市販のソフトの機能に不足はないのですが、

  1. クラウドにデータを持つ関係でレスポンスが今ひとつ。データはクラウドにあるのに、アプリはデスクトップ版で、結構な頻度でアップデートが生じ、その度に管理者パスワードなんてのも必要。会計の仕組み、税法、会社法、税率が変化しないと基本変化しないのに。なにゆえのアップデートなんだろう?
  2. 簿記、会計の仕組みがそうなので仕方ないことでしょうが、期をまたいだデータの取得ができない。決算期日に関わらず、ある日を起点にし、ある日を終点とした試算表等の計算ができると、なにかと便利だと思うのだが
  3. 以上の理由で、会計ソフトの内製化を試みて検討中
  4. 手順は、市販ソフトから汎用データを落として自社内のDB(postgresql)に保存。そのDBから、試算表もどきが出力できるまでが当面の目標
  5. 内製化して外に出すものでもないので、スキーマなど、適当と考える部分は日本語で。postgresql内外で、それで困った事が無いのだし。(テーブル名や、列名等に大文字使ってしまった時の方が不具合度高かった)
    最初の一歩として、5要素を示すテーブルを作成。5要素8取引は、簿記の学習で最初に来る話で、勘定科目以前の大前提だと覚えましたが、当然過ぎてか、その実装をあまり見かけないと思います。
CREATE TABLE kaikei."type_勘定要素" (                                                         
    id integer NOT NULL,
    "要素コード" text NOT NULL,
    "要素名" text NOT NULL,
    "貸借" text NOT NULL,
    "並び順" integer
);

ALTER TABLE kaikei."type_勘定要素" OWNER TO postgres;


COMMENT ON TABLE kaikei."type_勘定要素" IS '勘定5要素とその本来のポジションを持つ';
COMMENT ON COLUMN kaikei."type_勘定要素"."要素コード" IS '参照される時のプライマリーキー';
CREATE SEQUENCE kaikei."type_勘定要素_id_seq"
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER SEQUENCE kaikei."type_勘定要素_id_seq" OWNER TO postgres;
ALTER SEQUENCE kaikei."type_勘定要素_id_seq" OWNED BY kaikei."type_勘定要素".id;
ALTER TABLE ONLY kaikei."type_勘定要素" ALTER COLUMN id SET DEFAULT nextval('kaikei."type_勘定要素_id_seq"'::regclass);
INSERT INTO kaikei."type_勘定要素" VALUES (1, '1', '資産', '借方', 1);                        
INSERT INTO kaikei."type_勘定要素" VALUES (2, '2', '費用', '借方', 2);
INSERT INTO kaikei."type_勘定要素" VALUES (3, '3', '負債', '貸方', 3);
INSERT INTO kaikei."type_勘定要素" VALUES (4, '5', '収益', '貸方', 4);
INSERT INTO kaikei."type_勘定要素" VALUES (5, '4', '資本', '貸方', 5);
INSERT INTO kaikei."type_勘定要素" VALUES (6, 'X', '', '不定', 100);

SELECT pg_catalog.setval('kaikei."type_勘定要素_id_seq"', 6, true);

ALTER TABLE ONLY kaikei."type_勘定要素"
    ADD CONSTRAINT "type_勘定要素_pkey" PRIMARY KEY (id);

ALTER TABLE ONLY kaikei."type_勘定要素"
    ADD CONSTRAINT "u_type_勘定要素コード" UNIQUE ("要素コード");

id列は、Laravelであれ、その他のフレームワークであれ必須であるので作りますが、要素コードという別の列を持ち、それにもUNIQUE制約をつけているのは、経験上の工夫。PostgreSQLでは、UNIQUE制約がある列は、被参照列として動作するし、id列をserialで無い実装を行うより楽。
並び順という列は、例えば貸借対照表を作成する場合、借方で資産、費用、どちらを先に帳票に乗せるか、計算上は別段意味がないのだけど、現実には決められた並びで表示されないとだめで、そのための順序。RDB使い出した頃は、RDBの各行に順序は存在しないという原則、そしてそれは正しいのだけど、それを遵守していたものだが、現実世界には並び順というのがあって、大抵それはそれなりの意味を持っている。
以上で、5要素を示すテーブル作成の終了。次は、資産、負債、資本、収益、費用、各要素に入る勘定の検討。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?