• R/O
  • SSH
  • HTTPS

aoiro: Commit


Commit MetaInfo

Revisão29 (tree)
Hora2020-02-14 15:15:16
Autorhirukawa_ryo

Mensagem de Log

* aoiro 0.3.6
収益・費用のうち損益計算書に含まれていない勘定科目を警告表示するようにしました。
資産・負債・純資産(資本)のうち貸借対照表に含まれていない勘定科目を警告表示するようにしました。

Mudança Sumário

Diff

--- aoiro/trunk/src/main/java/net/osdn/aoiro/cui/Main.java (revision 28)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/cui/Main.java (revision 29)
@@ -116,9 +116,10 @@
116116 YamlJournalsLoader journalsLoader = new YamlJournalsLoader(journalEntryFile, accountTitles);
117117 List<JournalEntry> journalEntries = journalsLoader.getJournalEntries();
118118 System.out.println(" (" + (++processNumber) + ") 仕訳   | " + journalEntryFile.getAbsolutePath() + " (" + journalEntries.size() + "件)");
119+ System.out.println();
119120
120- System.out.println("");
121-
121+ accountTitlesLoader.validate();
122+
122123 if(!skipSettlement) {
123124 //決算
124125 System.out.println("決算処理を実行しています . . .");
--- aoiro/trunk/src/main/java/net/osdn/aoiro/loader/yaml/YamlAccountTitlesLoader.java (revision 28)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/loader/yaml/YamlAccountTitlesLoader.java (revision 29)
@@ -15,6 +15,7 @@
1515
1616 import com.esotericsoftware.yamlbeans.YamlReader;
1717
18+import net.osdn.aoiro.model.Account;
1819 import net.osdn.aoiro.model.AccountTitle;
1920 import net.osdn.aoiro.model.AccountType;
2021 import net.osdn.aoiro.model.Amount;
@@ -283,6 +284,60 @@
283284 }
284285 }
285286 }
287+
288+ /** 指定したノードの勘定科目を再帰的に収集して返します。
289+ *
290+ * @param node 損益計算書または貸借対照表のツリーノード
291+ * @return 収集した勘定科目のセット
292+ */
293+ private <V> Set<AccountTitle> retrieve(Node<Map.Entry<List<AccountTitle>, V>> node) {
294+ Set<AccountTitle> accountTitles = new HashSet<AccountTitle>();
295+ for(AccountTitle accountTitle : node.getValue().getKey()) {
296+ accountTitles.add(accountTitle);
297+ }
298+ for(Node<Map.Entry<List<AccountTitle>, V>> child : node.getChildren()) {
299+ accountTitles.addAll(retrieve(child));
300+ }
301+ return accountTitles;
302+ }
303+
304+ public boolean validate() {
305+ boolean valid = true;
306+
307+ Set<AccountTitle> plAccountTitles = retrieve(plRoot);
308+ for(AccountTitle accountTitle : accountTitles) {
309+ if(accountTitle.getType() == AccountType.Revenue && !plAccountTitles.contains(accountTitle)) {
310+ System.out.println(" [警告] 損益計算書に「" + accountTitle.getDisplayName() + "」が含まれていません。");
311+ valid = false;
312+ }
313+ if(accountTitle.getType() == AccountType.Expense && !plAccountTitles.contains(accountTitle)) {
314+ System.out.println(" [警告] 損益計算書に「" + accountTitle.getDisplayName() + "」が含まれていません。");
315+ valid = false;
316+ }
317+ }
318+
319+ Set<AccountTitle> bsAccountTitles = retrieve(bsRoot);
320+ for(AccountTitle accountTitle : accountTitles) {
321+ if(accountTitle.getType() == AccountType.Assets && !bsAccountTitles.contains(accountTitle)) {
322+ System.out.println(" [警告] 貸借対照表に「" + accountTitle.getDisplayName() + "」が含まれていません。");
323+ valid = false;
324+ }
325+ if(accountTitle.getType() == AccountType.Liabilities && !bsAccountTitles.contains(accountTitle)) {
326+ System.out.println(" [警告] 貸借対照表に「" + accountTitle.getDisplayName() + "」が含まれていません。");
327+ valid = false;
328+ }
329+ if(accountTitle.getType() == AccountType.NetAssets && !bsAccountTitles.contains(accountTitle)) {
330+ System.out.println(" [警告] 貸借対照表に「" + accountTitle.getDisplayName() + "」が含まれていません。");
331+ valid = false;
332+ }
333+ }
334+
335+ if(!valid) {
336+ System.out.println();
337+ }
338+
339+ return valid;
340+ }
286341
287342
288343 public Set<AccountTitle> getAccountTitles() {
Show on old repository browser