Revision | 55 (tree) |
---|---|
Time | 2020-09-14 23:50:30 |
Author | hirukawa_ryo |
* aoiro 0.7.1
依存ライブラリをアップデートしました。
pdf-brewerのアップデートによりフォントのロード処理が改善されます。これでOutOfMemoryErrorが解消するといいのだけど…。
総勘定元帳で元入金・控除前の所得金額の相手勘定科目「残高」が「諸口」と表示されるバグを修正しました。
@@ -4,6 +4,7 @@ | ||
4 | 4 | import java.nio.file.Files; |
5 | 5 | import java.nio.file.Path; |
6 | 6 | import java.nio.file.Paths; |
7 | +import java.util.HashSet; | |
7 | 8 | import java.util.List; |
8 | 9 | import java.util.Set; |
9 | 10 |
@@ -24,11 +25,14 @@ | ||
24 | 25 | import net.osdn.aoiro.report.layout.BalanceSheetLayout; |
25 | 26 | import net.osdn.aoiro.report.layout.ProfitAndLossLayout; |
26 | 27 | import net.osdn.aoiro.report.layout.StatementOfChangesInEquityLayout; |
28 | +import net.osdn.pdf_brewer.FontLoader; | |
27 | 29 | import net.osdn.util.io.AutoDetectReader; |
28 | 30 | |
29 | 31 | import static net.osdn.aoiro.ErrorMessage.error; |
30 | 32 | |
31 | 33 | public class Main { |
34 | + | |
35 | + public static FontLoader fontLoader; | |
32 | 36 | |
33 | 37 | public static void main(String[] args) { |
34 | 38 |
@@ -149,6 +153,12 @@ | ||
149 | 153 | // 総勘定元帳 |
150 | 154 | GeneralLedger generalLedger = new GeneralLedger(accountTitles, journalEntries, isSoloProprietorship, showMonthlyTotal); |
151 | 155 | |
156 | + Set<String> fontFileNames = new HashSet<String>(); | |
157 | + fontFileNames.addAll(FontLoader.FILENAMES_YUGOTHIC); | |
158 | + fontFileNames.addAll(FontLoader.FILENAMES_YUMINCHO); | |
159 | + fontLoader = new FontLoader(FontLoader.getDefaultFontDir(), fontFileNames, null); | |
160 | + | |
161 | + | |
152 | 162 | // 仕訳帳をファイルに出力します。 |
153 | 163 | // この処理は総勘定元帳(GeneralLedger)を作成してから呼び出す必要があります。GeneralLedgerによって仕訳帳の「元丁」が設定されるからです。 |
154 | 164 | generalJournal.writeTo(outputDir.resolve("仕訳帳.pdf")); |
@@ -20,6 +20,7 @@ | ||
20 | 20 | |
21 | 21 | import net.osdn.aoiro.AccountSettlement; |
22 | 22 | import net.osdn.aoiro.Util; |
23 | +import net.osdn.aoiro.cui.Main; | |
23 | 24 | import net.osdn.aoiro.model.AccountTitle; |
24 | 25 | import net.osdn.aoiro.model.AccountType; |
25 | 26 | import net.osdn.aoiro.model.Amount; |
@@ -689,12 +690,13 @@ | ||
689 | 690 | public void writeTo(Path path) throws IOException { |
690 | 691 | prepare(); |
691 | 692 | |
692 | - PdfBrewer brewer = new PdfBrewer(); | |
693 | + PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
693 | 694 | brewer.setCreator(Util.getPdfCreator()); |
694 | 695 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
695 | 696 | brewer.setTitle("貸借対照表"); |
696 | 697 | brewer.process(pb); |
697 | 698 | brewer.save(path); |
699 | + brewer.close(); | |
698 | 700 | } |
699 | 701 | |
700 | 702 | /** 次期開始仕訳を作成します。 |
@@ -12,6 +12,7 @@ | ||
12 | 12 | |
13 | 13 | import net.osdn.aoiro.AccountSettlement; |
14 | 14 | import net.osdn.aoiro.Util; |
15 | +import net.osdn.aoiro.cui.Main; | |
15 | 16 | import net.osdn.aoiro.model.Creditor; |
16 | 17 | import net.osdn.aoiro.model.Debtor; |
17 | 18 | import net.osdn.aoiro.model.JournalEntry; |
@@ -348,11 +349,12 @@ | ||
348 | 349 | public void writeTo(Path path) throws IOException { |
349 | 350 | prepare(); |
350 | 351 | |
351 | - PdfBrewer brewer = new PdfBrewer(); | |
352 | + PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
352 | 353 | brewer.setCreator(Util.getPdfCreator()); |
353 | 354 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
354 | 355 | brewer.setTitle("仕訳帳"); |
355 | 356 | brewer.process(pb); |
356 | 357 | brewer.save(path); |
358 | + brewer.close(); | |
357 | 359 | } |
358 | 360 | } |
@@ -14,6 +14,7 @@ | ||
14 | 14 | |
15 | 15 | import net.osdn.aoiro.AccountSettlement; |
16 | 16 | import net.osdn.aoiro.Util; |
17 | +import net.osdn.aoiro.cui.Main; | |
17 | 18 | import net.osdn.aoiro.model.Account; |
18 | 19 | import net.osdn.aoiro.model.AccountTitle; |
19 | 20 | import net.osdn.aoiro.model.AccountType; |
@@ -500,7 +501,24 @@ | ||
500 | 501 | public List<Account> getCounterpartAccounts(JournalEntry entry, Account account) { |
501 | 502 | List<Account> counterpartAccounts = new ArrayList<>(); //相手勘定科目 |
502 | 503 | |
503 | - if(account.getAccountTitle().getDisplayName().equals("元入金")) { | |
504 | + // 相手勘定が1件で決算勘定の場合は必ず相手勘定科目を出力します。 | |
505 | + boolean isCounterpartClosingAccount = false; | |
506 | + if(account instanceof Debtor) { | |
507 | + if(entry.getCreditors().size() == 1 && entry.getCreditors().get(0).getAccountTitle().isClosing()) { | |
508 | + isCounterpartClosingAccount = true; | |
509 | + } | |
510 | + } else if(account instanceof Creditor) { | |
511 | + if(entry.getDebtors().size() == 1 && entry.getDebtors().get(0).getAccountTitle().isClosing()) { | |
512 | + isCounterpartClosingAccount = true; | |
513 | + } | |
514 | + } | |
515 | + if(isCounterpartClosingAccount) { | |
516 | + if(account instanceof Debtor) { | |
517 | + counterpartAccounts.add(new Creditor(entry.getCreditors().get(0).getAccountTitle(), account.getAmount())); | |
518 | + } else if(account instanceof Creditor) { | |
519 | + counterpartAccounts.add(new Debtor(entry.getDebtors().get(0).getAccountTitle(), account.getAmount())); | |
520 | + } | |
521 | + } else if(account.getAccountTitle().getDisplayName().equals("元入金")) { | |
504 | 522 | // 元入金の場合は相手勘定科目を「諸口」とせずに、相手勘定科目を個別に出力します。 |
505 | 523 | // ただし、元入金側の勘定科目が2件以上ある場合は金額を算出できないので「諸口」とします。 |
506 | 524 | // 元入金側の勘定科目が1件の場合は、元入金の金額と相手勘定科目の合計金額が一致しますが、 |
@@ -558,12 +576,13 @@ | ||
558 | 576 | public void writeTo(Path path) throws IOException { |
559 | 577 | prepare(); |
560 | 578 | |
561 | - PdfBrewer brewer = new PdfBrewer(); | |
579 | + PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
562 | 580 | brewer.setCreator(Util.getPdfCreator()); |
563 | 581 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
564 | 582 | brewer.setTitle("総勘定元帳"); |
565 | 583 | brewer.process(pb); |
566 | 584 | brewer.save(path); |
585 | + brewer.close(); | |
567 | 586 | } |
568 | 587 | |
569 | 588 | /** 指定した勘定科目を含む仕訳データを取得します。 |
@@ -21,6 +21,7 @@ | ||
21 | 21 | |
22 | 22 | import net.osdn.aoiro.AccountSettlement; |
23 | 23 | import net.osdn.aoiro.Util; |
24 | +import net.osdn.aoiro.cui.Main; | |
24 | 25 | import net.osdn.aoiro.model.AccountTitle; |
25 | 26 | import net.osdn.aoiro.model.Amount; |
26 | 27 | import net.osdn.aoiro.model.Creditor; |
@@ -497,12 +498,13 @@ | ||
497 | 498 | public void writeTo(Path path) throws IOException { |
498 | 499 | prepare(); |
499 | 500 | |
500 | - PdfBrewer brewer = new PdfBrewer(); | |
501 | + PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
501 | 502 | brewer.setCreator(Util.getPdfCreator()); |
502 | 503 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
503 | 504 | brewer.setTitle("損益計算書"); |
504 | 505 | brewer.process(pb); |
505 | 506 | brewer.save(path); |
507 | + brewer.close(); | |
506 | 508 | } |
507 | 509 | |
508 | 510 | private static String formatMoney(long amount) { |
@@ -23,6 +23,7 @@ | ||
23 | 23 | |
24 | 24 | import net.osdn.aoiro.AccountSettlement; |
25 | 25 | import net.osdn.aoiro.Util; |
26 | +import net.osdn.aoiro.cui.Main; | |
26 | 27 | import net.osdn.aoiro.model.AccountTitle; |
27 | 28 | import net.osdn.aoiro.model.AccountType; |
28 | 29 | import net.osdn.aoiro.model.Amount; |
@@ -459,12 +460,13 @@ | ||
459 | 460 | public void writeTo(Path path) throws IOException { |
460 | 461 | prepare(); |
461 | 462 | |
462 | - PdfBrewer brewer = new PdfBrewer(); | |
463 | + PdfBrewer brewer = new PdfBrewer(Main.fontLoader); | |
463 | 464 | brewer.setCreator(Util.getPdfCreator()); |
464 | 465 | BrewerData pb = new BrewerData(printData, brewer.getFontLoader()); |
465 | 466 | brewer.setTitle("社員資本等変動計算書"); |
466 | 467 | brewer.process(pb); |
467 | 468 | brewer.save(path); |
469 | + brewer.close(); | |
468 | 470 | } |
469 | 471 | |
470 | 472 | private static String formatMoney(long amount) { |