社内専用 gem:KDDI 請求書の「グループ別集計表」を抽出・整形し、レポートを生成します。
概要
この gem は、KDDI株式会社から発行された請求書ファイル(PDF/CSV)に含まれる「グループ別集計表」(③) のみを対象に、以下の手順でデータを抽出・整形します。
- テーブル化: グループ番号/対象院/費用項目/金額 を表形式でまとめる
- ソート: 費用項目別に並び替えたテーブルを作成する
- 集計: 費用項目ごとの行数と合計金額、および全費用項目の合計金額を算出する
⚠️ KDDI株式会社以外の請求書が入力された場合は、その旨を返して処理を終了します。
特徴
- KDDI 以外の請求書は自動判定してスキップ
- テーブルは内部で
Array<Hash>として表現し、必要に応じて CSV などにエクスポート可能 - 社内運用に最適化されたシンプル設計
インストール
社内 gem サーバーからインストール:
gem install kddi_invoice_multifunctionprinter --source https://gems.internal.example.com
または、ローカル開発用:
gem build kddi_invoice_multifunctionprinter.gemspec
gem install ./kddi_invoice_multifunctionprinter-0.1.0.gem
使い方
請求書ファイルを指定して実行するだけで、3つのアウトプットを得られます。
require 'kddi_invoice_multifunctionprinter'
# Extractor を初期化
extractor = KddiInvoiceMultifunctionprinter::Extractor.new(
input_path: 'path/to/invoice.pdf',
output_dir: 'path/to/output_dir'
)
# 抽出&レポート生成
result = extractor.extract!
# result には以下の構造を持つハッシュが返ります
# {
# raw_table: [ { group: '1', office: '本社', item: 'リース料', amount: 10000 }, … ],
# sorted_table: [ { group: '1', office: '本社', item: 'カウンター料金', amount: 5000 }, … ],
# summary: { 'カウンター料金' => { count: 2, total: 10000 }, … },
# grand_total: 30000
# }
puts "Raw Table:"
puts result[:raw_table].to_csv
puts "Sorted by 費用項目:"
puts result[:sorted_table].to_csv
puts "Summary per 費用項目:"
result[:summary].each do |item, stats|
puts "#{item}: #{stats[:count]} 行, 合計 ¥#{stats[:total]}"
end
puts "全費用項目合計: ¥#{result[:grand_total]}"
抽出ロジック詳細
- 対象範囲: PDF/CSV 内の「③グループ別集計表」のみをパース
- グループ番号: 青背景の行にある「●グループ:<番号>」
- 対象院: 同じく青背景で示される院名(省略禁止)
- 費用項目: 行頭に「▼」が付き、「カウンター料金」「保守オプション」「リース料」のいずれか("まとめてオフィス/" は除外)
- 金額: 項目に続く数字。末尾の "U" は除外して整数化
開発/テスト
# クローン
git clone git@internal.example.com:tkucho/kddi_invoice_multifunctionprinter.git
cd kddi_invoice_multifunctionprinter
# 依存インストール
bundle install
# テスト実行
bundle exec rspec
ライセンス
社内専用プロプライエタリソフトウェア All rights reserved.