회계하면 손익계산표, 현금흐름표, 대차대조표 이 세가지가 기본인데, 매번 회계관련 이벤트 발생마다 이것들을 업데이트 하는 데이터 중심 언어를 설계하고 있다.


예를들어, 고정자산을 구입한다고 해봐. 그럼 JSON 스타일로 이렇게 표현하는거지


{:book :buy-pp&e

 :transaction

 [{:book :transfer

   :amount amount

   :from {:class :cash :account cash-account-id}

   :to   {:class :fixed-assets@cost :account fixed-asset-account-id}}

  ]

 }


회계엔진은 이걸  받아들이면 


1. 대차대조표에 들어갈 항목을 알아냄 - 현금이 고정자산 쪽으로 이동

2. 현금흐름표에 들어갈 항목을 알아냄 - 고정자산 클래스 쪽으로 현금이 이동 했으므로 고정자산 취득 발생

3. 손익계산표에 들어갈 항목을 알아냄 - 이건 임금지불, 제품관련 트랜잭션, 영업비용발생, 연구개발비용발생, 이런 경우에만 해당


몇가지 기본규칙만 정해주면 간단한 언어로 구성된 데이터를 받아서 타당한 데이터인지 검사할 뿐 아니라 각종 회계표를 자동으로 업데이트 하게 할 수 있는 시스템이 됨.




난 개노가다 없는 이런 시스템을 선호함