社内専用 gem:KDDI 請求書の「グループ別集計表」を抽出・整形し、レポートを生成します。

概要

この gem は、KDDI株式会社から発行された請求書ファイル(PDF/CSV)に含まれる「グループ別集計表」(③) のみを対象に、以下の手順でデータを抽出・整形します。

  1. テーブル化: グループ番号/対象院/費用項目/金額 を表形式でまとめる
  2. ソート: 費用項目別に並び替えたテーブルを作成する
  3. 集計: 費用項目ごとの行数と合計金額、および全費用項目の合計金額を算出する

⚠️ 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.