• R/O
  • SSH
  • HTTPS

aoiro: Commit


Commit MetaInfo

Revisão28 (tree)
Hora2020-02-14 14:14:23
Autorhirukawa_ryo

Mensagem de Log

* aoiro 0.3.6
税抜経理方式で使用する勘定科目「仮受消費税等」「仮払消費税等」「未払消費税等」「未収消費税等」を追加しました。
合計がゼロの場合は貸借対照表・損益計算書に出力しない設定を追加しました。

Mudança Sumário

Diff

--- aoiro/trunk/default/個人/勘定科目.yml (revision 27)
+++ aoiro/trunk/default/個人/勘定科目.yml (revision 28)
@@ -6,11 +6,13 @@
66 商品,
77 建物, 建物附属設備, 機械装置, 車両運搬具, 工具器具備品, 土地,
88 事業主貸,
9- 開業費]
9+ 開業費,
10+ 仮払消費税等, 未収消費税等]
1011 負債: [支払手形, 買掛金, 借入金, 未払金, 前受金, 預り金,
11- 貸倒引当金]
12+ 貸倒引当金,
13+ 仮受消費税等, 未払消費税等]
1214 純資産: [事業主借, 元入金]
13- 収益: [売上, 雑収入,
15+ 収益: [売上, 家事消費等, 雑収入,
1416 期末商品棚卸高]
1517 費用: [仕入,
1618 租税公課, 荷造運賃, 水道光熱費, 旅費交通費, 通信費,
@@ -22,7 +24,7 @@
2224
2325 損益計算書:
2426 青色申告特別控除前の所得金額:
25- 売上金額 (雑収入を含む): [売上, 雑収入]
27+ 売上金額 (雑収入を含む): [売上, 家事消費等, 雑収入]
2628 売上原価:
2729 期首商品棚卸高: [期首商品棚卸高]
2830 仕入金額: [仕入]
@@ -42,8 +44,6 @@
4244 福利厚生費: [福利厚生費]
4345 給料賃金: [給料賃金]
4446 外注工賃: [外注工賃]
45- 給料賃金: [給料賃金]
46- 外注工賃: [外注工賃]
4747 利子割引料: [利子割引料]
4848 地代家賃: [地代家賃]
4949 貸倒金: [貸倒金]
@@ -70,6 +70,8 @@
7070 車両運搬具: [車両運搬具]
7171 工具器具備品: [工具器具備品]
7272 土地: [土地]
73+ 仮払消費税等: [仮払消費税等]
74+ 未収消費税等: [未収消費税等]
7375 繰延資産: [開業費]
7476 事業主貸: [事業主貸]
7577 負債:
@@ -79,6 +81,8 @@
7981 未払金: [未払金]
8082 前受金: [前受金]
8183 預り金: [預り金]
84+ 仮受消費税等: [仮受消費税等]
85+ 未払消費税等: [未払消費税等]
8286 貸倒引当金: [貸倒引当金]
8387 純資産:
8488 事業主借: [事業主借]
@@ -96,3 +100,6 @@
96100 前払金, 貸付金, 建物, 建物附属設備, 機械装置, 車両運搬具, 工具器具備品, 土地, 事業主貸,
97101 支払手形, 買掛金, 借入金, 未払金, 前受金, 預り金, 貸倒引当金,
98102 事業主借, 元入金, 控除前の所得金額]
103+
104+ゼロなら表示しない見出し:
105+ 貸借対照表: [仮払消費税等, 仮受消費税等]
--- aoiro/trunk/default/法人/勘定科目.yml (revision 27)
+++ aoiro/trunk/default/法人/勘定科目.yml (revision 28)
@@ -10,7 +10,7 @@
1010 貸倒引当金,
1111 未払費用, 未払法人税等]
1212 純資産: [資本金, 繰越利益剰余金]
13- 収益: [売上, 雑収入,
13+ 収益: [売上, 家事消費等, 雑収入,
1414 期末商品棚卸高,
1515 受取利息]
1616 費用: [仕入,
@@ -24,7 +24,7 @@
2424
2525 損益計算書:
2626 売上総利益:
27- 売上高: [売上, 雑収入]
27+ 売上高: [売上, 家事消費等, 雑収入]
2828 売上原価:
2929 期首商品棚卸高: [期首商品棚卸高]
3030 仕入金額: [仕入]
@@ -59,6 +59,8 @@
5959 工具器具備品: [工具器具備品]
6060 繰延資産: [創立費, 開業費]
6161 土地: [土地]
62+ 仮払消費税等: [仮払消費税等]
63+ 未収消費税等: [未収消費税等]
6264 負債:
6365 未払法人税等: [未払法人税等]
6466 未払費用: [未払費用]
@@ -68,6 +70,8 @@
6870 未払金: [未払金]
6971 前受金: [前受金]
7072 預り金: [預り金]
73+ 仮受消費税等: [仮受消費税等]
74+ 未払消費税等: [未払消費税等]
7175 貸倒引当金: [貸倒引当金]
7276 純資産:
7377 資本金: [資本金]
--- aoiro/trunk/src/main/java/net/osdn/aoiro/cui/Main.java (revision 27)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/cui/Main.java (revision 28)
@@ -143,7 +143,8 @@
143143 //損益計算書
144144 Node<Entry<List<AccountTitle>, Amount>> plRoot = accountTitlesLoader.getProfitAndLossRoot();
145145 Set<String> plAlwaysShownNames = accountTitlesLoader.getAlwaysShownNamesForProfitAndLoss();
146- ProfitAndLoss pl = new ProfitAndLoss(plRoot, journalEntries, isSoloProprietorship, plAlwaysShownNames);
146+ Set<String> plHiddenNamesIfZero = accountTitlesLoader.getHiddenNamesIfZeroForProfitAndLoss();
147+ ProfitAndLoss pl = new ProfitAndLoss(plRoot, journalEntries, isSoloProprietorship, plAlwaysShownNames, plHiddenNamesIfZero);
147148 pl.writeTo(new File("損益計算書.pdf"));
148149 System.out.println(" 損益計算書.pdf を出力しました。");
149150
@@ -150,7 +151,8 @@
150151 //貸借対照表
151152 Node<Entry<List<AccountTitle>, Amount[]>> bsRoot = accountTitlesLoader.getBalanceSheetRoot();
152153 Set<String> bsAlwaysShownNames = accountTitlesLoader.getAlwaysShownNamesForBalanceSheet();
153- BalanceSheet bs = new BalanceSheet(bsRoot, journalEntries, isSoloProprietorship, bsAlwaysShownNames);
154+ Set<String> bsHiddenNamesIfZero = accountTitlesLoader.getHiddenNamesIfZeroForBalanceSheet();
155+ BalanceSheet bs = new BalanceSheet(bsRoot, journalEntries, isSoloProprietorship, bsAlwaysShownNames, bsHiddenNamesIfZero);
154156 bs.writeTo(new File("貸借対照表.pdf"));
155157 System.out.println(" 貸借対照表.pdf を出力しました。");
156158
--- aoiro/trunk/src/main/java/net/osdn/aoiro/loader/yaml/YamlAccountTitlesLoader.java (revision 27)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/loader/yaml/YamlAccountTitlesLoader.java (revision 28)
@@ -59,6 +59,12 @@
5959
6060 /** 貸借対照表(B/S)に常に表示する見出しのリスト */
6161 private Set<String> bsAlwaysShownNames = new HashSet<String>();
62+
63+ /** ゼロの場合は損益計算書(P/L)に表示しない見出しのリスト */
64+ private Set<String> plHiddenNamesIfZero = new HashSet<String>();
65+
66+ /** ゼロの場合は貸借対照表(B/S)に表示しない見出しのリスト */
67+ private Set<String> bsHiddenNamesIfZero = new HashSet<String>();
6268
6369 public YamlAccountTitlesLoader(File file) throws IOException {
6470 String yaml = AutoDetectReader.readAll(file.toPath());
@@ -87,12 +93,23 @@
8793 }
8894 @SuppressWarnings("unchecked")
8995 List<String> netAssets = (List<String>)map.get("純資産");
90- for(String displayName : netAssets) {
91- AccountTitle accountTitle = new AccountTitle(AccountType.NetAssets, displayName);
92- accountTitles.add(accountTitle);
93- accountTitleByDisplayName.put(displayName, accountTitle);
96+ if(netAssets != null) {
97+ for(String displayName : netAssets) {
98+ AccountTitle accountTitle = new AccountTitle(AccountType.NetAssets, displayName);
99+ accountTitles.add(accountTitle);
100+ accountTitleByDisplayName.put(displayName, accountTitle);
101+ }
94102 }
95103 @SuppressWarnings("unchecked")
104+ List<String> equity = (List<String>)map.get("資本");
105+ if(equity != null) {
106+ for(String displayName : equity) {
107+ AccountTitle accountTitle = new AccountTitle(AccountType.NetAssets, displayName);
108+ accountTitles.add(accountTitle);
109+ accountTitleByDisplayName.put(displayName, accountTitle);
110+ }
111+ }
112+ @SuppressWarnings("unchecked")
96113 List<String> revenue = (List<String>)map.get("収益");
97114 for(String displayName : revenue) {
98115 AccountTitle accountTitle = new AccountTitle(AccountType.Revenue, displayName);
@@ -196,9 +213,34 @@
196213 }
197214 }
198215 }
216+
217+ obj = root.get("ゼロなら表示しない見出し");
218+ if(obj instanceof Map) {
219+ @SuppressWarnings("unchecked")
220+ Map<String, Object> map = (Map<String, Object>)obj;
221+ Object obj2 = map.get("損益計算書");
222+ if(obj2 instanceof List) {
223+ @SuppressWarnings("unchecked")
224+ List<Object> list = (List<Object>)obj2;
225+ for(Object o : list) {
226+ if(o != null) {
227+ plHiddenNamesIfZero.add(o.toString().trim());
228+ }
229+ }
230+ }
231+ Object obj3 = map.get("貸借対照表");
232+ if(obj3 instanceof List) {
233+ @SuppressWarnings("unchecked")
234+ List<Object> list = (List<Object>)obj3;
235+ for(Object o : list) {
236+ if(o != null) {
237+ bsHiddenNamesIfZero.add(o.toString().trim());
238+ }
239+ }
240+ }
241+ }
199242 }
200-
201-
243+
202244 private <T> void retrieve(Node<T> parent, Map<String, Object> map, NodeCallback<T> callback) {
203245 for(Map.Entry<String, Object> entry : map.entrySet()) {
204246 String key = entry.getKey();
@@ -311,9 +353,26 @@
311353 public Set<String> getAlwaysShownNamesForBalanceSheet() {
312354 return bsAlwaysShownNames;
313355 }
356+
357+ /** ゼロの場合に損益計算書に表示しない見出しのセットを返します。
358+ * このリストに含まれる見出しは、合計がゼロのときは表示されません。
359+ *
360+ * @return ゼロの場合に損益計算書に表示しない見出しのリスト
361+ */
362+ public Set<String> getHiddenNamesIfZeroForProfitAndLoss() {
363+ return plHiddenNamesIfZero;
364+ }
365+
366+ /** ゼロの場合に貸借対照表に表示しない見出しのセットを返します。
367+ * このリストに含まれる見出しは、合計がゼロのときは表示されません。
368+ *
369+ * @return ゼロの場合に貸借対照表に表示しない見出しのリスト
370+ */
371+ public Set<String> getHiddenNamesIfZeroForBalanceSheet() {
372+ return bsHiddenNamesIfZero;
373+ }
314374
315375
316-
317376 /*
318377 private <T> void dump(int indent, Node<List<AccountTitle>, T> node) {
319378 StringBuilder sb = new StringBuilder();
--- aoiro/trunk/src/main/java/net/osdn/aoiro/report/BalanceSheet.java (revision 27)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/report/BalanceSheet.java (revision 28)
@@ -46,6 +46,7 @@
4646 private List<JournalEntry> journalEntries;
4747 private boolean isSoloProprietorship;
4848 private Set<String> alwaysShownNames;
49+ private Set<String> hiddenNamesIfZero;
4950 private Date openingDate;
5051 private Date closingDate;
5152 private Map<AccountTitle, Amount> openingBalances = new HashMap<AccountTitle, Amount>();
@@ -57,11 +58,12 @@
5758 private List<String> pageData = new ArrayList<String>();
5859 private List<String> printData;
5960
60- public BalanceSheet(Node<Entry<List<AccountTitle>, Amount[]>> bsRoot, List<JournalEntry> journalEntries, boolean isSoloProprietorship, Set<String> alwaysShownNames) throws IOException {
61+ public BalanceSheet(Node<Entry<List<AccountTitle>, Amount[]>> bsRoot, List<JournalEntry> journalEntries, boolean isSoloProprietorship, Set<String> alwaysShownNames, Set<String> hiddenNamesIfZero) throws IOException {
6162 this.bsRoot = bsRoot;
6263 this.journalEntries = journalEntries;
6364 this.isSoloProprietorship = isSoloProprietorship;
6465 this.alwaysShownNames = alwaysShownNames != null ? alwaysShownNames : new HashSet<String>();
66+ this.hiddenNamesIfZero = hiddenNamesIfZero != null ? hiddenNamesIfZero : new HashSet<String>();
6567
6668 this.openingDate = AccountSettlement.getOpeningDate(journalEntries, isSoloProprietorship);
6769 this.closingDate = AccountSettlement.getClosingDate(journalEntries, isSoloProprietorship);
@@ -162,7 +164,7 @@
162164 assetsList = getList(child);
163165 } else if(child.getName().equals("負債")) {
164166 liabilitiesList = getList(child);
165- } else if(child.getName().equals("純資産")) {
167+ } else if(child.getName().equals("純資産") || child.getName().equals("資本")) {
166168 equityList = getList(child);
167169 }
168170 }
@@ -308,6 +310,10 @@
308310 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
309311 continue;
310312 }
313+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
314+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
315+ continue;
316+ }
311317 assetsRows++;
312318 }
313319 int liabilitiesRows = 1;
@@ -320,6 +326,10 @@
320326 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
321327 continue;
322328 }
329+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
330+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
331+ continue;
332+ }
323333 liabilitiesRows++;
324334 }
325335 int equityRows = 1;
@@ -332,6 +342,10 @@
332342 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
333343 continue;
334344 }
345+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
346+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
347+ continue;
348+ }
335349 equityRows++;
336350 }
337351 int rows = Math.max(assetsRows, liabilitiesRows + equityRows);
@@ -371,6 +385,10 @@
371385 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
372386 continue;
373387 }
388+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
389+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
390+ continue;
391+ }
374392 printData.add("\t\t\\box " + String.format("2 %.2f 35.5 %.2f", y, ROW_HEIGHT));
375393 printData.add("\t\t\\align center left");
376394 printData.add("\t\t\\text " + displayName);
@@ -397,6 +415,10 @@
397415 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
398416 continue;
399417 }
418+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
419+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
420+ continue;
421+ }
400422 printData.add("\t\t\\box " + String.format("89.5 %.2f 35.5 %.2f", y, ROW_HEIGHT));
401423 printData.add("\t\t\\align center left");
402424 printData.add("\t\t\\text " + displayName);
@@ -424,6 +446,10 @@
424446 if(openingAmount == null && closingAmount == null && !alwaysShownNames.contains(displayName)) {
425447 continue;
426448 }
449+ //期首・期末どちらもゼロで表示しない見出しに含まれている場合、印字をスキップします。
450+ if((openingAmount == null || openingAmount.getValue() == 0) && (closingAmount == null || closingAmount.getValue() == 0) && hiddenNamesIfZero.contains(displayName)) {
451+ continue;
452+ }
427453 printData.add("\t\t\\box " + String.format("89.5 %.2f 35.5 %.2f", y, ROW_HEIGHT));
428454 printData.add("\t\t\\align center left");
429455 printData.add("\t\t\\text " + displayName);
--- aoiro/trunk/src/main/java/net/osdn/aoiro/report/ProfitAndLoss.java (revision 27)
+++ aoiro/trunk/src/main/java/net/osdn/aoiro/report/ProfitAndLoss.java (revision 28)
@@ -42,6 +42,7 @@
4242 private Node<Entry<List<AccountTitle>, Amount>> plRoot;
4343 private List<JournalEntry> journalEntries;
4444 private Set<String> alwaysShownNames;
45+ private Set<String> hiddenNamesIfZero;
4546 private Date openingDate;
4647 private Date closingDate;
4748 private Map<AccountTitle, Amount> incomeSummaries = new HashMap<AccountTitle, Amount>();
@@ -50,10 +51,11 @@
5051 private List<String> pageData = new ArrayList<String>();
5152 private List<String> printData;
5253
53- public ProfitAndLoss(Node<Entry<List<AccountTitle>, Amount>> plRoot, List<JournalEntry> journalEntries, boolean isSoloProprietorship, Set<String> alwaysShownNames) throws IOException {
54+ public ProfitAndLoss(Node<Entry<List<AccountTitle>, Amount>> plRoot, List<JournalEntry> journalEntries, boolean isSoloProprietorship, Set<String> alwaysShownNames, Set<String> hiddenNamesIfZero) throws IOException {
5455 this.plRoot = plRoot;
5556 this.journalEntries = journalEntries;
5657 this.alwaysShownNames = alwaysShownNames != null ? alwaysShownNames : new HashSet<String>();
58+ this.hiddenNamesIfZero = hiddenNamesIfZero != null ? hiddenNamesIfZero : new HashSet<String>();
5759
5860 this.openingDate = AccountSettlement.getOpeningDate(journalEntries, isSoloProprietorship);
5961 this.closingDate = AccountSettlement.getClosingDate(journalEntries, isSoloProprietorship);
@@ -286,7 +288,11 @@
286288 if(amount == null && !alwaysShownNames.contains(node.getName())) {
287289 continue;
288290 }
289-
291+ //ゼロなら表示しない見出しに含まれていて、ゼロの場合、印字をスキップします。
292+ if((amount == null || amount.getValue() == 0) && hiddenNamesIfZero.contains(node.getName())) {
293+ continue;
294+ }
295+
290296 if(i >= 1) {
291297 if(node.isSubTotal()) {
292298 printData.add("\t\\line-style thin solid");
Show on old repository browser