but it's up to us to change

犬は吠えるがキャラバンは進む


2013-12-17 (Tue) [長年日記]

seisan.rb を gem 化した

えにしテック内の立替経費精算の処理に使用してきた seisan.rb を gem 化した。

https://github.com/enishitech/seisan

立替経費精算管理のリポジトリを用意して精算内容を月毎に yaml で記録していくことで 、月末処理時に rake タスクを実行することで Excel のレポートを生成できるようになっています。

% tree
.
├── Gemfile
├── Gemfile.lock
├── Rakefile
├── config.yaml
├── data
│   └── 2013
│       └── 07
│           ├── 20130704-sato.yaml
│           └── 20130705-shimada.yaml
└── output

% cat data/2013/07/20130704-sato.yaml 
applicant: 佐藤

expense:
 - date: 2013-07-03
   amount: 105
   remarks: 電池代

 - date: 2013-07-04
   amount: 2080
   remarks: JR% bundle exec rake TARGET=2013/07
Processing 2013/07 ...
Loaded 2 files
Processed 4 expenses
Wrote to output/2013-07.xlsx

えにしテックの立替経費精算フローの話

えにしテックでは立替経費精算の管理は以下のように行っていました。

  1. 社員: 経費の立替え
  2. 社員: 領収証の提出とともに「立替え内容」を報告
  3. 精算担当: 月末締め、当月払いで当月分の立替経費精算を処理
  4. 精算担当: 処理した立替経費精算の記録(2で報告された「立替え内容」を一覧にしたもの)を月ごとに会計事務所へ Excel フォーマットで提出

上記フローの「立替え内容」は元々 Google Spread Sheet で管理していたのですが、

  • きちんと履歴管理をしたい
  • マスタのデータを手元にとっておきたい

という要件から、社内でシステム化することにしました。

seisan.rb

社内システムといってもそんな大げさなものではなく、

  • 立替経費精算管理のリポジトリを社内に用意
  • 経費を立替えた社員は精算内容を yaml で記録してリポジトリに push
  • 月末処理時にレポート生成のスクリプトを実行して Excel のレポートを作成

という感じで要件を満たしています。

yaml の読み込みには gimlet 、Excel の出力には axlsx をそれぞれ使っています。便利。

seisan.rb を導入することで、開発時と同じ道具立てで立替経費精算の申請、処理、提出書類の作成を行えるようになりました。便利。

使い方

立替経費精算記録用のリポジトリを準備します。

% mkdir seisan
% cd seisan
% git init

以下の内容で Gemfile を作成し、

% cat Gemfile
source 'https://rubygems.org'

gem 'rake'
gem 'seisan'

bundle を実施します。

% bundle 

次に、以下の内容で Rakefile を作成します。

% cat Rakefile
require 'seisan/task'

これで以下の rake タスクが使えるようになります。

% bundle exec rake -T
rake seisan  # Generate seisan report

実際に使う際はこんな感じです。

% bundle exec rake TARGET=2013/07 
Processing 2013/07 ...
Loaded 0 files
Processed 0 expenses
Wrote to output/2013-07.xlsx

yaml データは data ディレクトリ配下で管理することを想定しています。その下に年/月(2013/07)という感じでディレクトリを掘って、そこにデータを記録していき、レポート生成時には対象の年/月をTARGETで指定しています。具体的な例はリポジトリに含めたサンプルを見てもらうのが早そう。

ぼくらのニーズを満たすために作ったものなので、他の人の役に立つかは全然わかりませんが、誰かの何かの役に立つと幸いです。

Tags: enishitech