再計算可能な公開仕様
計算式と判定方法
金額は各月の式を計算した直後に1円単位へ四捨五入し、その整数円を合計します。結果から月別値を逆算しません。
入力項目と範囲
| 分類 | 主な入力 | 範囲・注意 |
|---|---|---|
| 月額と稼働 | 月額の方式、月額、12か月分の稼働率 | 月額1~10,000,000円、稼働率0~100の整数。全月0%は入力エラー |
| 入金 | 入金遅延、実入金の方式、18か月分の実入金 | 遅延0~6か月。手入力は18か月必須 |
| 支出と残高 | 開始資金、固定費、生活資金移動、変動費率、準備費 | 生活資金移動は事業費と区別 |
| 予備と目標 | 予備率、12か月目の目標残高、最低残高 | 予備は任意の資金留保。実税額ではない |
月別請求と実入金
100%換算方式: billed[m] = round(base_amount × utilization[m] / 100)
契約月額方式: billed[m] = utilization[m] > 0 ? base_amount : 0
計算入金: received[(m - 1) + lag] += billed[m - 1]。表示月1~18は配列添字0~17に対応します。
支出、予備、月末残高
variable[m] = round(billed[m] × variable_rate / 100)
reserve[i] = round(received[i] × reserve_rate / 100)
cash_out[i] = fixed + living_transfer + variable[i] + reserve[i] + (i == 0 ? setup_cost : 0)
ending[i] = previous_ending + received[i] - cash_out[i]
予備額は納税額・社会保険料の計算ではなく、利用者が決めた資金留保です。
必要月額の逆算
実入金が計算方式の場合だけ、0円から10,000,000円まで1,000円刻みの全10,001候補を小さい順に評価します。二分探索は使いません。手入力実入金では月額を変えても入金が変わらないため逆算しません。
判定の優先順位
| 優先 | 状態 | 条件 |
|---|---|---|
| 0 | 入力エラー | 範囲外、月額0円、全月非稼働、不正配列など。4状態を返さない |
| 1 | 判断材料不足 | 資金前提が不明、または重要契約が未確認 |
| 2 | 資金不足リスク | 月末残高が0円未満 |
| 3 | 条件調整が必要 | 目標未達、安全残高割れ、必要月額が現在値を超える |
| 4 | 条件内 | 上記に該当しない |
主状態と別に、資金不足、安全残高割れ、目標未達、重要契約未確認、専門家確認待ちを同時表示します。主状態が判断材料不足でも資金不足警告は隠しません。