請求書発行フローと会計システムの連携

2015年4月27日
全ての企業活動は「請求」のために行われている、と言っても過言ではない。しかし、その業務プロセス設計は難易度が高い。

例えば「見積書」(前回記事)であれば、大まかなに、(1)上司承認、(2)客先提出、(3)受注確認、といったステップになるだろう。その設計において、
  • 税務や会計などの「専門知識」
  • 他システム連携やデータ加工といった「システム知識」
  • 月次決算の迅速化といった外部圧力やそれに対する使命感
  • 会計記帳と財務出納の分離といった相互牽制(内部統制)の工夫
などは不要だ。(意外と「見積書発行フロー」は平和)

しかし一方で「請求書」の場合は、その下流工程に「売掛金の記帳」「入金の確認」「証憑としての保管」といった重要な作業が続く。実際、業種業態や会計方針、そして導入済みの他システムによって各社様々だ。業務プロセスの始点(開始ポイント)や終点(終了ポイント)ですら、その「あるべき姿」は各社違う。

以下のワークフローは、「請求書の発行後」にフォーカスされた業務プロセスだ。経理部門に閉じた業務プロセスではあるが、「会計ソフト/会計クラウドへの入力を軽減させる」などの工夫がある。

[請求書発行から会計記帳まで]


[請求書発行から会計記帳まで:「1.請求データ確認」画面]

この業務プロセスは、「前受金」の発生頻度が高い会社で、かつ、決済手段や業務クラウド基盤などの環境変化が激しい会社(恒久的な基幹システムを導入しづらい会社)が想定されている。

※「前受金とは何か?」の詳細は税理士に譲るとして、大まかに言えば、「消費税や法人税の課税判定にせよ、売上の集計にせよ、『資産の引渡しやサ-ビスの提供があった時』を基準にしなければならない」、というハナシだ。

具体的には、請求データが流し込まれた後、(1)請求書PDFの生成、(2)メールや郵送で送付、(3)会計データの登録、(4)入金確認、が続く。
特筆すべきは、会計システム側に入力しやすいデータに加工されている(会計システムにあわせたフォーマットで出力している)点だ。すなわち、
  • 「前受金」の入金を予定する「入金伝票」と、
  • 「前受金」を「売上」に変える「振替伝票」
などが出力されている。近い将来『クラウド型会計システム』と API 連携させるのだろう。。。

★[発行日書式処理]の設定画面

★[件名セット]の設定画面

★[for bookkeeping] の設定画面

★[for bookkeeping] のスクリプト例
// == 参照 / Retrieving ==
//mytable : com.questetra.bpms.core.model.formdata.ListArray;
var mytable = data.get("13"); // テーブル型データを取得

//startDay : com.questetra.bpms.util.AddableDate;
var startDay = data.get("8"); //請求発行日(date)

var charged = data.get("21"); // 総額を取得
var company = data.get("4"); // 請求先会社名を取得
var companyabst = company + " " + mytable.get(0, 0) + ""; // 社名+摘要

// == 演算 / Calculating ==
var months = mytable.get(0, 1);

var remainder = charged % months; // 総額を申込月数(1行目2列目)で割った余り
var monthlyCharge = Math.floor( charged / months ); // 総額を申込月数(1行目2列目)で割る
var monthlyCharge2 = monthlyCharge + 1;

// == 代入 / Updating ==
var formatter1 = new java.text.SimpleDateFormat("yyyy-MM-dd");
var formatter2 = new java.text.SimpleDateFormat("GGGGyyyy年MM月分", new java.util.Locale("ja", "JP", "JP"));

var bookkeepingText = ""; 
// 「2015-04-01, 売上高, 株式会社 京都大学 ホームページ運用, 10000, 0」
// 「2015-04-01, 入金, 株式会社 京都大学 ホームページ運用, 10000, 0」
// 
// 「2015-04-30, 売掛金, 株式会社 京都大学 ホームページ運用, 10000, 0」
// 「2015-05-31, 入金, 株式会社 京都大学 ホームページ運用, 10000, 0」
bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", 売上高, " + companyabst + ", " + charged + ", 0 \n"; 
bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", 入金, " + companyabst + ", " + charged + ", 0 \n\n"; 
bookkeepingText += formatter1.format(startDay.getLastDateInMonth());
bookkeepingText += ", 売掛金, " + companyabst + ", " + charged + ", 0 \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(1).getLastDateInMonth());
bookkeepingText += ", 入金, " + companyabst + ", " + charged + ", 0 \n"; 
retVal.put("27", bookkeepingText ); // ●一括売上● 日付, 勘定科目, 摘要, 入金, 出金

bookkeepingText = "";
// 「2015-04-01, 前受金, 株式会社 京都大学 ホームページ運用, 10000, 0」
// 「2015-04-01, 前受金, 株式会社 京都大学 ホームページ運用 2015年4月分, 0, 3334」
// 「2015-04-01, 売上高, 株式会社 京都大学 ホームページ運用 2015年4月分, 3334, 0」
// 「2015-05-01, 前受金, 株式会社 京都大学 ホームページ運用 2015年5月分, 0, 3333」
// 「2015-05-01, 売上高, 株式会社 京都大学 ホームページ運用 2015年5月分, 3333, 0」
// 「2015-06-01, 前受金, 株式会社 京都大学 ホームページ運用 2015年6月分, 0, 3333」
// 「2015-06-01, 売上高, 株式会社 京都大学 ホームページ運用 2015年6月分, 3333, 0」

bookkeepingText += formatter1.format(startDay);
bookkeepingText += ", 前受金, " + companyabst + ", " + charged + ", 0 \n"; 

var i=0;
for (i=0; i<months; i++){
if (i<remainder){
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", 前受金, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", 0, " + monthlyCharge2 + " \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", 売上高, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", " + monthlyCharge2 + ",0 \n"; 
}else{
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", 前受金, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", 0, " + monthlyCharge + " \n"; 
bookkeepingText += formatter1.format(startDay.addMonths(i).getLastDateInMonth());
bookkeepingText += ", 売上高, " + companyabst + " ";
bookkeepingText += formatter2.format(startDay.addMonths(i));
bookkeepingText += ", " + monthlyCharge + ",0 \n"; 
}
}
retVal.put("28", bookkeepingText ); // ●前受処理● 日付, 勘定科目, 摘要, 借方, 貸方


<データ項目一覧画面>



[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫


[英文記事(English Entry)]

0 件のコメント :

コメントを投稿