第486話:クラウド会計と連携させる(その1)

2016年6月6日
「借方?、貸方?、、、ナニそれ??、おいしいの?!」


たしかに『財務会計用語』に対して "アレルギー反応" を示すプログラマは少なくない。

しかし、社会人なら是非とも知っておきたい単語だ。基本的なITスキルを問う『情報処理技術者試験』ですら、頻出の用語となっている。もっとも「かりかた・かしかた」という、似たような訳語を当てた福沢諭吉の罪も、それなりに悪い。。。


ちなみに実務上は「左列・右列」と呼んでも何ら問題ない。どちらの列も、単に「資産内訳表」に過ぎない。どうしても具体的に言いたければ、「左列:現金資産と現金的資産の内訳」、「右列:返す必要がある資産(借金)と返す必要が無い資産の内訳」と考えれば十分だ。


では、、、クラウドサービス提供会社が
  • 12か月分のクラウド利用権を販売した
  • 12万円で4月1日に一年契約した
  • 5月30日に入金される
という場合に、それぞれの「資産内訳表」(貸借対照表)はどのように変化していくのだろうか?


たとえば、、、

4月には、(まだ何も入金されてないものの)、すでにサービスを提供している訳で、「1か月分(1万円)の資産は増えている」とみなすことができる。「ツケで売る」とか「掛け売り」とか言われる(売掛金)。そして5月以降も毎月変化していく。。。

[販売報告プロセス]



結論を言えば、左右それぞれの増加減少は、以下の通りとなる。
04-01 売掛金:+1万円 / 売上高:+1万円
05-01 売掛金:+1万円 / 売上高:+1万円
05-30 普通預金:+12万円 売掛金:-2万円 / 前受金:+10万円
06-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
07-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
08-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
09-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
10-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
11-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
12-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
01-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
02-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円
03-01 (現金的資産かわらず) / 売上高:+1万円、前受金:-1万円

見れば明らかなように、6月以降は「右列:借金と借金以外の資産内訳」が変わっていくだけだ。「前受金」とは「前もって預かるお金」という意味で借金扱いとなる。

経理部門では、これら13の処理を、13枚の「伝票」を作って管理しているのだ。(紙じゃないけど)

ここで紹介するワークフローは、セールスチームによる「1.販売報告工程」が完了後に、これらの伝票が自動生成される仕組みだ。経理による「2.記帳工程」において、すでに伝票が作られた状態となっている。

[販売報告プロセス:「2.記帳する」画面]


▼スクリプト工程『伝票自動生成』の設定サンプル (サーバサイド JavaScript)
  1. //// == ワークフローデータの参照 / Retrieving ==
  2. //var recordDate = data.get("0"); // 請求日 "2016-03-01"
  3. var cashinDate = data.get("1"); // 入金予定日
  4. var salesVolume = data.get("2") - 0; // 請求金額
  5. var recordTitle = data.get("5") + ""; // 契約タイトル
  6.  
  7. var sMonth = data.get("3"); // 開始月(日付) "2016-03-01"
  8. sMonth = sMonth.getFirstTimeInMonth();
  9. var sMonthStr = data.get("3") + ""; // 開始月(日付) "2016-03-01"
  10. var eMonthStr = data.get("4") + ""; // 終了月(日付) "2016-03-01"
  11.  
  12.  
  13. //// == 演算 / Calculating ==
  14. var sMonthYYYY = sMonthStr.substring(0, 4) - 0;
  15. var sMonthMM = sMonthStr.substring(5, 7) - 0;
  16. var eMonthYYYY = eMonthStr.substring(0, 4) - 0;
  17. var eMonthMM = eMonthStr.substring(5, 7) - 0;
  18.  
  19. var numOfMon = (eMonthYYYY - sMonthYYYY) * 12 + eMonthMM - sMonthMM + 1;
  20. var monthlySales = salesVolume / numOfMon;
  21.  
  22. var mfRecord = "";
  23. var i=0;
  24. var j=0;
  25. for (i = 0; i < numOfMon; i++){
  26. var tmpDate = new com.questetra.bpms.util.AddableDate( sMonth.addMonths(i).getTime() );
  27. var tmpDateStr = tmpDate + "";
  28. var monthlyTitle = tmpDateStr.substring(0, 7) + " @ " + recordTitle;
  29.  
  30. if( cashinDate.after(tmpDate) ){
  31. mfRecord += tmpDateStr + "\t売掛金\t\t対象外\t\t";
  32. mfRecord += monthlySales + "\t\t売上高\t\t課税売上 8%\t\t";
  33. mfRecord += monthlySales + "\t\t";
  34. mfRecord += monthlyTitle + "\t\t\t\n";
  35. j = i + 1;
  36. } else {
  37. mfRecord += tmpDateStr + "\t前受金\t\t対象外\t\t";
  38. mfRecord += monthlySales + "\t\t売上高\t\t課税売上 8%\t\t";
  39. mfRecord += monthlySales + "\t\t";
  40. mfRecord += monthlyTitle + "\t\t\t\n";
  41. }
  42. }
  43.  
  44. var kakeCredit = monthlySales * j;
  45. var maeukeDeposit = salesVolume - kakeCredit;
  46.  
  47. mfRecord += cashinDate + "\t普通預金\tみずほ銀行\t対象外\t\t";
  48. mfRecord += salesVolume + "\t\t売掛金\t\t対象外\t\t";
  49. mfRecord += kakeCredit + "\t\t";
  50. mfRecord += recordTitle + "\t\t\t未実現\n";
  51. mfRecord += cashinDate + "\t\t\t\t\t";
  52. mfRecord += "0" + "\t\t前受金\t\t対象外\t\t";
  53. mfRecord += maeukeDeposit + "\t\t";
  54. mfRecord += recordTitle + "\t\t\t未実現\n";
  55.  
  56.  
  57. //// == ワークフローデータへの代入 / Updating ==
  58. retVal.put("6", mfRecord );

<データ項目一覧画面>

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

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿