This is an automated email from the git hooks/post-receive script. New change to branch feature/1241-account-report in repository lima. See http://git.chorem.org/lima.git from f050c53 refs #1241 monté de version je Jasper report new 40e00d3 refs #1241 refactoring de code The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 40e00d316e8bdc85309beb5cc29316cae87509c4 Author: dcosse <cosse@codelutin.com> Date: Wed Sep 9 15:21:41 2015 +0200 refs #1241 refactoring de code Summary of changes: .../business/api/report/BalanceReportService.java | 15 +- .../ejb/report/BalanceReportServiceImpl.java | 190 +++++++++++++++------ .../lima/report/service/DocumentService.java | 21 ++- 3 files changed, 171 insertions(+), 55 deletions(-) -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/1241-account-report in repository lima. See http://git.chorem.org/lima.git commit 40e00d316e8bdc85309beb5cc29316cae87509c4 Author: dcosse <cosse@codelutin.com> Date: Wed Sep 9 15:21:41 2015 +0200 refs #1241 refactoring de code --- .../business/api/report/BalanceReportService.java | 15 +- .../ejb/report/BalanceReportServiceImpl.java | 190 +++++++++++++++------ .../lima/report/service/DocumentService.java | 21 ++- 3 files changed, 171 insertions(+), 55 deletions(-) diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/report/BalanceReportService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/report/BalanceReportService.java index b284fb4..1a23f70 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/report/BalanceReportService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/report/BalanceReportService.java @@ -45,5 +45,18 @@ public interface BalanceReportService { * @param subAccountsJasperReport Jasper sub account report for balance sub account representation * @return model for balance report */ - DocumentReport getBalanceDocumentReport(Date from, Date to, String selectedAccounts, String isBalanceGeneral, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport); + DocumentReport getGeneralBalanceDocumentReport(Date from, Date to, String selectedAccounts, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport); + + /** + * + * @param from + * @param to + * @param selectedAccounts + * @param bigDecimalFormat + * @param mainAccountsJasperReport + * @param subAccountsJasperReport + * @return + */ + DocumentReport getGlobalBalanceDocumentReport(Date from, Date to, String selectedAccounts, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport); + } diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/report/BalanceReportServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/report/BalanceReportServiceImpl.java index a9da2e0..dbf7208 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/report/BalanceReportServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/report/BalanceReportServiceImpl.java @@ -66,6 +66,8 @@ import static org.nuiton.i18n.I18n.t; @TransactionAttribute public class BalanceReportServiceImpl extends AbstractLimaService implements BalanceReportService { + public static final String GLOBAL_401_ACCOUNT_NUMBER = "4010000"; + public static final String GLOBAL_411_ACCOUNT_NUMBER = "4110000"; @EJB protected FinancialPeriodService financialPeriodService; @@ -92,46 +94,64 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal }; @Override - public DocumentReport getBalanceDocumentReport(Date from, Date to, String selectedAccounts, String isBalanceGeneralSt, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport) { + public DocumentReport getGeneralBalanceDocumentReport(Date from, Date to, String selectedAccounts, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport) { String reportName = t("lima-business.document.balanceReport.title"); - DocumentReport documentReport = CommonsDocumentReport.getDocumentReport(reportName, from, to, mainAccountsJasperReport, bigDecimalFormat, identityService); + DocumentReport documentReport = getBalanceDocumentReport(from, to, bigDecimalFormat, mainAccountsJasperReport, reportName); - documentReport.setColumnAccountTitle(t("lima-business.document.columnAccountTitle")); - documentReport.setColumnBalanceForPeriodTitle(t("lima-business.document.columnBalanceForPeriodTitle")); - documentReport.setColumnCreditTitle(t("lima-business.document.columnCreditTitle")); - documentReport.setColumnDateTitle(t("lima-business.document.columnDateTitle")); - documentReport.setColumnDebitTitle(t("lima-business.document.columnDebitTitle")); - documentReport.setColumnDescriptionTitle(t("lima-business.document.columnDescriptionTitle")); - documentReport.setColumnTotalForPeriodTitle(t("lima-business.document.columnTotalForPeriodTitle")); - documentReport.setColumnVoucherTitle(t("lima-business.document.columnVoucherTitle")); + BalanceGlobalResult balanceGlobalResult = new BalanceGlobalResult().invoke(); - documentReport.setLastPageColumnDescription(t("lima-business.document.balance.lastPageColumnDescription")); + BalanceTrial balanceTrial = new BalanceTrialImpl(); + balanceTrial.setReportsDatas(new ArrayList<ReportsDatas>()); - boolean isBalanceGeneral = StringUtils.isBlank(isBalanceGeneralSt) || Boolean.valueOf(isBalanceGeneralSt); + List<Account> accounts = getAccounts(selectedAccounts); - BigDecimal globalDebit = BigDecimal.ZERO; - BigDecimal globalCredit = BigDecimal.ZERO; - BigDecimal globalDebitBalance = BigDecimal.ZERO; - BigDecimal globalCreditBalance = BigDecimal.ZERO; + Collection<BalanceAccount> returnedAccounts = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(accounts)) { + Collections.sort(accounts, new AccountComparator()); - BalanceTrial balanceTrial = new BalanceTrialImpl(); - balanceTrial.setReportsDatas(new ArrayList<ReportsDatas>()); + setDocumentReportHeaderSelectedAccounts(documentReport, accounts); - AccountTopiaDao accountTopiaDao = getDaoHelper().getAccountDao(); - //for each account create a balance sheet with a ReportsDatas + HashMap<String, BalanceAccountImpl> accountsByClasses = new HashMap<>(); - List<Account> accounts; + //for each account create a balance sheet with a ReportsDatas + for (Account account : accounts) { + String accountClass = String.valueOf(account.getAccountNumber().charAt(0)); - //Remove Spaces - selectedAccounts = StringUtils.deleteWhitespace(selectedAccounts); + // all results for a account classes + BalanceAccountImpl accountSubAccounts = getBalanceAccountForAccountClass(bigDecimalFormat, subAccountsJasperReport, returnedAccounts, accountsByClasses, accountClass); - // find all if none specified - if (StringUtils.isBlank(selectedAccounts)) { - accounts = accountTopiaDao.findAll(); - } else { - accounts = accountService.stringToListAccounts(selectedAccounts); + // compute balance for the account classes + BalanceAccount subClassAccount = computeSubAccountBalance(accountClass, account, from, to, bigDecimalFormat); + + // only add it if there are results + if (subClassAccount != null) { + accountSubAccounts.addSubAccount(subClassAccount); + + balanceGlobalResult.addSubClassAccounts(subClassAccount); + } + } } + Iterables.removeIf(returnedAccounts, HAS_NO_ENTRY); + documentReport.addAllMainAccounts(returnedAccounts); + + setDocumentReportGlobalBalance(documentReport, balanceGlobalResult); + + return documentReport; + } + + @Override + public DocumentReport getGlobalBalanceDocumentReport(Date from, Date to, String selectedAccounts, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, JasperReport subAccountsJasperReport) { + String reportName = t("lima-business.document.balanceReport.title"); + DocumentReport documentReport = getBalanceDocumentReport(from, to, bigDecimalFormat, mainAccountsJasperReport, reportName); + + BalanceGlobalResult balanceGlobalResult = new BalanceGlobalResult().invoke(); + + BalanceTrial balanceTrial = new BalanceTrialImpl(); + balanceTrial.setReportsDatas(new ArrayList<ReportsDatas>()); + + List<Account> accounts = getAccounts(selectedAccounts); + Collection<BalanceAccount> returnedAccounts = new ArrayList<>(); if (CollectionUtils.isNotEmpty(accounts)) { Collections.sort(accounts, new AccountComparator()); @@ -143,6 +163,7 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal BalanceAccount sold401 = null; BalanceAccount sold411 = null; + //for each account create a balance sheet with a ReportsDatas for (Account account : accounts) { String accountClass = String.valueOf(account.getAccountNumber().charAt(0)); @@ -157,23 +178,17 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal // we group Account 401 and 411 with there sub accounts String accountNb = account.getAccountNumber(); - if (isBalanceGeneral && ((accountNb.startsWith(GROUP_401)) || (accountNb.startsWith(GROUP_411)))){ - BalanceAccount balanceAccount = null; + BalanceAccount balanceAccount = null; + if ((accountNb.startsWith(GROUP_401)) || (accountNb.startsWith(GROUP_411))){ if ((accountNb.startsWith(GROUP_401))){ if (sold401 == null) { - sold401 = new BalanceAccountImpl(); - sold401.setLabel(t("lima-business.document.balance.globalSupplier")); - sold401.setFormatter(bigDecimalFormat); - sold401.setAccountNumber("4010000"); + sold401 = getGlobalBalance4x(bigDecimalFormat, t("lima-business.document.balance.globalSupplier"), GLOBAL_401_ACCOUNT_NUMBER); accountSubAccounts.addSubAccount(sold401); } balanceAccount = sold401; } else if((accountNb.startsWith(GROUP_411))) { if (sold411 == null) { - sold411 = new BalanceAccountImpl(); - sold411.setLabel(t("lima-business.document.balance.globalClient")); - sold411.setFormatter(bigDecimalFormat); - sold411.setAccountNumber("4110000"); + sold411 = getGlobalBalance4x(bigDecimalFormat, t("lima-business.document.balance.globalClient"), GLOBAL_411_ACCOUNT_NUMBER); accountSubAccounts.addSubAccount(sold411); } balanceAccount = sold411; @@ -187,19 +202,12 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal addInWith(balanceAccount, subClassAccount); // add amounts to global result - globalDebit = globalDebit.add(subClassAccount.getAmountDebit()); - globalCredit = globalCredit.add(subClassAccount.getAmountCredit()); - globalDebitBalance = globalDebitBalance.add(subClassAccount.getDebitBalance()); - globalCreditBalance = globalCreditBalance.add(subClassAccount.getCreditBalance()); + balanceGlobalResult.addSubClassAccounts(subClassAccount); } - } else { accountSubAccounts.addSubAccount(subClassAccount); - globalDebit = globalDebit.add(subClassAccount.getAmountDebit()); - globalCredit = globalCredit.add(subClassAccount.getAmountCredit()); - globalDebitBalance = globalDebitBalance.add(subClassAccount.getDebitBalance()); - globalCreditBalance = globalCreditBalance.add(subClassAccount.getCreditBalance()); + balanceGlobalResult.addSubClassAccounts(subClassAccount); } } } @@ -208,11 +216,53 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal Iterables.removeIf(returnedAccounts, HAS_NO_ENTRY); documentReport.addAllMainAccounts(returnedAccounts); - documentReport.setTotalDebit(globalDebit); - documentReport.setTotalCredit(globalCredit); - documentReport.setDebitBalance(globalDebitBalance); - documentReport.setCreditBalance(globalCreditBalance); + setDocumentReportGlobalBalance(documentReport, balanceGlobalResult); + + return documentReport; + } + + protected BalanceAccount getGlobalBalance4x(DecimalFormat bigDecimalFormat, String label, String accountNumber) { + BalanceAccount sold401 = new BalanceAccountImpl(); + sold401.setLabel(label); + sold401.setFormatter(bigDecimalFormat); + sold401.setAccountNumber(accountNumber); + return sold401; + } + + protected List<Account> getAccounts(String selectedAccounts) { + AccountTopiaDao accountTopiaDao = getDaoHelper().getAccountDao(); + List<Account> accounts; + + selectedAccounts = StringUtils.deleteWhitespace(selectedAccounts); + // find all if none specified + if (StringUtils.isBlank(selectedAccounts)) { + accounts = accountTopiaDao.findAll(); + } else { + accounts = accountService.stringToListAccounts(selectedAccounts); + } + return accounts; + } + + protected void setDocumentReportGlobalBalance(DocumentReport documentReport, BalanceGlobalResult globalBalanceResult) { + documentReport.setTotalDebit(globalBalanceResult.globalDebit); + documentReport.setTotalCredit(globalBalanceResult.globalCredit); + documentReport.setDebitBalance(globalBalanceResult.globalDebitBalance); + documentReport.setCreditBalance(globalBalanceResult.globalCreditBalance); + } + + protected DocumentReport getBalanceDocumentReport(Date from, Date to, DecimalFormat bigDecimalFormat, JasperReport mainAccountsJasperReport, String reportName) { + DocumentReport documentReport = CommonsDocumentReport.getDocumentReport(reportName, from, to, mainAccountsJasperReport, bigDecimalFormat, identityService); + documentReport.setColumnAccountTitle(t("lima-business.document.columnAccountTitle")); + documentReport.setColumnBalanceForPeriodTitle(t("lima-business.document.columnBalanceForPeriodTitle")); + documentReport.setColumnCreditTitle(t("lima-business.document.columnCreditTitle")); + documentReport.setColumnDateTitle(t("lima-business.document.columnDateTitle")); + documentReport.setColumnDebitTitle(t("lima-business.document.columnDebitTitle")); + documentReport.setColumnDescriptionTitle(t("lima-business.document.columnDescriptionTitle")); + documentReport.setColumnTotalForPeriodTitle(t("lima-business.document.columnTotalForPeriodTitle")); + documentReport.setColumnVoucherTitle(t("lima-business.document.columnVoucherTitle")); + + documentReport.setLastPageColumnDescription(t("lima-business.document.balance.lastPageColumnDescription")); return documentReport; } @@ -309,4 +359,42 @@ public class BalanceReportServiceImpl extends AbstractLimaService implements Bal return balanceAccount; } + private class BalanceGlobalResult { + private BigDecimal globalDebit; + private BigDecimal globalCredit; + private BigDecimal globalDebitBalance; + private BigDecimal globalCreditBalance; + + public BigDecimal getGlobalDebit() { + return globalDebit; + } + + public BigDecimal getGlobalCredit() { + return globalCredit; + } + + public BigDecimal getGlobalDebitBalance() { + return globalDebitBalance; + } + + public BigDecimal getGlobalCreditBalance() { + return globalCreditBalance; + } + + public BalanceGlobalResult invoke() { + globalDebit = BigDecimal.ZERO; + globalCredit = BigDecimal.ZERO; + globalDebitBalance = BigDecimal.ZERO; + globalCreditBalance = BigDecimal.ZERO; + return this; + } + + public void addSubClassAccounts(BalanceAccount subClassAccount) { + globalDebit = globalDebit.add(subClassAccount.getAmountDebit()); + globalCredit = globalCredit.add(subClassAccount.getAmountCredit()); + globalDebitBalance = globalDebitBalance.add(subClassAccount.getDebitBalance()); + globalCreditBalance = globalCreditBalance.add(subClassAccount.getCreditBalance()); + } + + } } diff --git a/lima-report/src/main/java/org/chorem/lima/report/service/DocumentService.java b/lima-report/src/main/java/org/chorem/lima/report/service/DocumentService.java index 37206ec..ae35415 100644 --- a/lima-report/src/main/java/org/chorem/lima/report/service/DocumentService.java +++ b/lima-report/src/main/java/org/chorem/lima/report/service/DocumentService.java @@ -472,14 +472,29 @@ public class DocumentService { //############## balance ############## - public void createBalanceDocuments(Date beginDate, Date endDate, String isBalanceGeneral, String fromToAccount) { + public void createBalanceDocuments(Date beginDate, Date endDate, String isBalanceGeneralSt, String fromToAccount) { JasperReport balanceMainAccountsReport = jasperReports.getBalanceManAccountsReport(); JasperReport balanceSubAccountsReport = jasperReports.getBalanceSubAccountsReport(); - DocumentReport report = balanceReportService.getBalanceDocumentReport(beginDate, endDate, fromToAccount, isBalanceGeneral, - getDecimalFormat(), balanceMainAccountsReport, balanceSubAccountsReport); + + DocumentReport report = getDocumentReport(beginDate, endDate, fromToAccount, balanceMainAccountsReport, balanceSubAccountsReport, isBalanceGeneralSt); + jasperReports.generatePDFReport(DocumentsEnum.BALANCE, balanceFilePath, Lists.newArrayList(report)); } + protected DocumentReport getDocumentReport(Date beginDate, Date endDate, String fromToAccount, JasperReport balanceMainAccountsReport, JasperReport balanceSubAccountsReport, String isBalanceGeneralSt) { + boolean isBalanceGeneral = StringUtils.isBlank(isBalanceGeneralSt) || Boolean.valueOf(isBalanceGeneralSt); + + DocumentReport report; + if (isBalanceGeneral) { + report = balanceReportService.getGlobalBalanceDocumentReport(beginDate, endDate, fromToAccount, + getDecimalFormat(), balanceMainAccountsReport, balanceSubAccountsReport); + } else { + report = balanceReportService.getGeneralBalanceDocumentReport(beginDate, endDate, fromToAccount, + getDecimalFormat(), balanceMainAccountsReport, balanceSubAccountsReport); + } + return report; + } + //############## EntryBook ############# public void createEntryBooksDocuments(Date beginDate, Date endDate, List<String> entryBookCodes) { JasperReport entryBookEntryBooksReport = jasperReports.getEntryBookEntryBooksReport(); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm