今回は、仕訳の初期化と決算ボタンを追加して、売買の結果が損益計算書と貸借対照表に反映されるようにします。
これまでの流れ
貸借対照表
tomo-mana.hatenablog.com
損益計算書
tomo-mana.hatenablog.com
今回は、仕訳の初期化と決算ボタンを追加して、売買の結果が損益計算書と貸借対照表に反映されるようにします。
今回追加する処理は単純ですが、仕訳が決算書に反映されるのを見るのは、なかなか面白いです。
コード
第4回のコードを以下のように変更します。
※注 2021.9.19)損益計算が間違っていました(Unity×簿記#5の計算方法が正しい)。コードは第9回で修正しました。
tomo-mana.hatenablog.com
(以下は修正前のコード)
public class InputWindow2 : MonoBehaviour { /* 中略 */ void ExecuteReset() { InitializeJournal(); if( !ReferenceEquals(bs, null) ){ bs.ChangeAreaValues( 10000, 0, 0, 0, 0 ); pl.ChangeAreaValues( 0, 0 ); } } void ExecuteSettle() { if( !ReferenceEquals(bs, null) ){ bs.ChangeAreaValues( tb.cash, tb.q_remain * unitPrice, 0, 0, 0 ); pl.ChangeAreaValues( tb.purchase, tb.sales ); } } void ButtonClicked(int buttonNo) { switch( buttonNo ){ case (int)BUTTON_NAME.BUTTON_PURCHASED: ExecutePurchase(); break; case (int)BUTTON_NAME.BUTTON_SALED: ExecuteSale(); break; case (int)BUTTON_NAME.BUTTON_SETTLE: ExecuteSettle(); break; case (int)BUTTON_NAME.BUTTON_RESET: ExecuteReset(); break; } } /* 以下略 */ }
貸借対照表と損益計算書にもそれぞれ以下のコードを追加しています。
貸借対照表 (BalanceSheet.cs)
public class BalanceSheet : MonoBehaviour { /* 略 */ public void ChangeAreaValues( int v0, int v1, int v2, int v3, int v4 ) { bsArea[(int)BS_AREA.BS_CASH].value = v0; bsArea[(int)BS_AREA.BS_FLA].value = v1; bsArea[(int)BS_AREA.BS_FIA].value = v2; bsArea[(int)BS_AREA.BS_FLL].value = v3; bsArea[(int)BS_AREA.BS_FIL].value = v4; RedrawBalanceSheet(); } }
損益計算書 (ProfitAndLoss.cs)
public class ProfitAndLoss : MonoBehaviour { /* 略 */ public void ChangeAreaValues( int v0, int v1 ) { plArea[(int)PL_AREA.PL_EXP].value = v0; plArea[(int)PL_AREA.PL_REV].value = v1; RedrawProfitAndLoss(); } }
動作テスト
決算仕訳を追加したことで、一気にゲーム感が出てきました。実質、これがゲームのコアになります。そろそろ動画にした方が分かりやすい感じになってきました。
リセットを押すと、損益がゼロ、貸借対照表は現金10000でスタートします。
1個仕入れて、その商品が売れないまま決算を迎えると、仕入れた商品は流動資産となり、損益上は損失になります。(仕入単価1000固定)
先ほど仕入れた商品を無事売り上げると、売り上げた商品(流動資産)は現金化し、損益上は利益になります。(売上単価1500固定)
これだけ単純な仕訳でシミュレートしてみると、最初は大量に商品を仕入れられないため、一気に利益を増やせないことが体感できます。
ゲームのURL(前回までと同じURLです)
tomo-mana.hatenablog.com