個人と企業とのやり取りの中で「何日締めの翌月何日払い」みたいなのを計算できるモジュール作りました。
もちろん「10日締めの月末払い」も計算できますし、土日祝を自動判定して休日なら翌営業日にずらす判定も行います。
正直、なんでこんなモジュールが存在しないんだ?って思いました。
どの企業もこの辺ゴリゴリ自作のサブルーチンこさえてるんでしょうか?
SYNOPSIS
use Date::CutOff::JP;
my $dco = Date::CutOff::JP->new({ cutoff => 0, late => 1, payday => 0 });
my %calculated = $dco->calc_date('2019-01-01');
print $calculated{'cutoff'}; # '2019-01-31'
print $calculated{'payday'}; # '2019-02-28'
問題点
依存するモジュールを差し替えて対応済みです。
日本の祝日への対応はすでにあるモジュールに依存しました。
その関係で最新の祝日(山の日と今年5月の天皇即位の日)に対応できてません。
レポジトリが見当たりませんが、perlライセンスなので勝手にフォークしてGitHubに修正バージョンをあげようかと思うのですが、そういう時ってみなさんどうしてます?
一応ご覧になるかどうかわかりませんけど、GitHubにあげてください!ってメールはしてみましたが…
ソース等はGitHubをご確認ください。
誰か適切なテスト書いてくれ〜。
参考
Calendar::Japanese::Holiday 0.05 を扱う上での注意点
本件はメールで作者に報告して前向きな回答をいただきました1が、修正されるまで下記のように注意する必要があります。
use Calendar::Japanese::Holiday;
my $date = "2019-02-11";
my ($y, $m, $d ) = split "-", $date;
return isHoliday( $y, $m, $d, 1 );
のように使うと、$y
,$m
,$d
が文字コンテキストの数字( '2019', '02', '11' )
となりundef
を返します。
return isHoliday( $y, 0+$m, 0+$d, 1 );
とすることで回避できました
-
本日、0.06にて修正されました。 ↩