フリーランスの皆様こんにちは。
請求書がめんどくさい。
Wordで作るのさえも面倒。
帳票職人としてJaspersoft Studio,ActiveReportsと弄って消耗してます。
帳票ツールも使いたくない。
大門未知子のためにAsciiDocで請求書を作ります。
メロンのお供に請求書。
できたソースはGitHubにフルオープンにしておきます
Invoice_adoc - GitHub
環境
- Windows10 Pro
- PowerShell v5.1
- Visual Studio Code
- AsciiDoc extension
- Git-Bash
- gitに付いてます
請求データ
- csv
- UTF8
数量と金額と合計はシェルスクリプトかPowerShellで計算させる。
Linux/Macの方はシェルスクリプトで動く。
Windowsの方はPowerShellを使えばいい。
Gitを導入されている方であればGit-Bashも使えます。
- data.csvを作成
- 計算済みのデータをresult.csvとして出力
データの入力は人間のやる仕事だ。
しかし、計算は人間のやる仕事ではない。
data.csvを計算させるスクリプトは下記のようになる。
# !/bin/sh
# ヘッダーを取得
sed -n '1p' data.csv > temp/header.csv
# ヘッダー行を抜く
# コンマ区切りで入出力
# 合計の計算
# 明細金額を計算 3行目の数量と4行目の金額を掛ける
# 合計行を追加
cat data.csv |
sed '1d' |
awk -F',' 'BEGIN {FS=",";OFS=","}{sum+=$3*$4;print $1,$2,$3,$4,$3*$4} END{print "","","","合計",sum}' > temp/temp.csv
# ヘッダーとデータを結合
cat temp/header.csv temp/temp.csv > result.csv
# 明細行の計算
$data |
Select-Object 日付,内容,数量,金額,@{name="明細額";expression={[INT]$_.数量*$_.金額}} |
Export-Csv result.csv -Encoding UTF8 -NoTypeInformation
# 合計を計算
$data=Import-Csv .\result.csv -Encoding UTF8
$sum=$data.明細額 | Measure-Object -Sum
$total=$sum.Sum
# 合計行を追加
",,,合計,$total" |Add-Content -Path .\result.csv -Encoding UTF8
上記のスクリプトを実行させるとdata.csvからresult.csvが出力されます。
data.csv
日付 | 内容 | 数量 | 金額 | 明細額 |
---|---|---|---|---|
3月13日 | 手術 | 2 | 10000000 | |
3月14日 | 手術 | 1 | 13000000 |
result.csv
日付 | 内容 | 数量 | 金額 | 明細額 |
---|---|---|---|---|
3月13日 | 手術 | 2 | 10000000 | 20000000 |
3月14日 | 手術 | 1 | 13000000 | 13000000 |
合計 | 33000000 |
AsciiDocで入力
下記のように入力します。
AsciiDocを編集するのにおすすめはVSCode。
AsciiDocというPluginを入れればプレビューまではやってくれます。
== 請求書
=== To
帝都医科大学付属病院
〒104-0045 東京都中央区築地9-3
蛭間 重勝 様
=== From
神原名医紹介所
神原 晶
image::stamp.jpg[width=40]
〒135-0031 東京都江東区佐賀1丁目4-1
=== Contents
下記の通り請求申し上げます。
[format="csv", options="header"]
|===
include::result.csv[]
|===
=== 振込先
●●銀行 ●●支店
(普通) 000-000-000000
カンバラメイイショウカイジョ
ポイント
右揃え左揃えはできない。
だから上から順番に書くデザインにする。
result.csvをincludeして表組にしている。
markdownにはない強み。
印鑑を画像で挿入している。
image::stamp.jpg[width=40]
印鑑さえ挿入されていれば何故か正式な文章として受け取ってくれる。
PDFに出力
一番手っ取り早いのはAsciidoctorを使う方法です。
Macの方はbrewでinstallしちゃうのが早いかもしれません。
会社ではLinuxに持ち上げてLinux上のAsciidoctorに処理させています。
$ asciidoctor-pdf invoice.adoc
WindowsにもAsciidocFXというツールがあります。
リンクを日本語にすると飛ばない。
今一つ日本語に弱いという問題があります。
最近は使ってません(´;ω;`)
イケてるフリーランスはMacユーザー多いから大丈夫じゃないかな。
生成した請求書のPDFをメール添付で送ってあげれば請求完了!