Author: vsalaun Date: 2011-07-01 16:03:16 +0200 (Fri, 01 Jul 2011) New Revision: 3195 Url: http://chorem.org/repositories/revision/lima/3195 Log: #345 changing and refactoring retained earnings service and swing (report a nouveau) Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/FiscalPeriodService.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java 2011-07-01 14:03:16 UTC (rev 3195) @@ -25,22 +25,44 @@ package org.chorem.lima.business.ejb; +import static org.nuiton.i18n.I18n._; + +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; import java.util.Date; +import java.util.Iterator; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import org.apache.commons.lang.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.lima.beans.BalanceTrial; +import org.chorem.lima.beans.ReportsDatas; import org.chorem.lima.business.AccountingRules; import org.chorem.lima.business.LimaBusinessException; import org.chorem.lima.business.LimaConfig; import org.chorem.lima.business.LimaException; +import org.chorem.lima.business.ejbinterface.AccountService; +import org.chorem.lima.business.ejbinterface.EntryBookService; import org.chorem.lima.business.ejbinterface.FinancialPeriodServiceLocal; +import org.chorem.lima.business.ejbinterface.FinancialTransactionServiceLocal; import org.chorem.lima.business.ejbinterface.FiscalPeriodService; import org.chorem.lima.business.ejbinterface.FiscalPeriodServiceLocal; +import org.chorem.lima.business.ejbinterface.ReportService; +import org.chorem.lima.business.utils.FinancialPeriodComparator; +import org.chorem.lima.entity.Account; +import org.chorem.lima.entity.AccountImpl; +import org.chorem.lima.entity.ClosedPeriodicEntryBook; +import org.chorem.lima.entity.Entry; +import org.chorem.lima.entity.EntryBook; +import org.chorem.lima.entity.EntryImpl; import org.chorem.lima.entity.FinancialPeriod; +import org.chorem.lima.entity.FinancialTransaction; +import org.chorem.lima.entity.FinancialTransactionImpl; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.entity.FiscalPeriodDAO; import org.chorem.lima.entity.LimaCallaoDAOHelper; @@ -67,7 +89,19 @@ protected AccountingRules accountingRules; @EJB - private FinancialPeriodServiceLocal financialPeriodService; + protected AccountService accountService; + + @EJB + protected FinancialPeriodServiceLocal financialPeriodService; + + @EJB + protected EntryBookService entryBookService; + + @EJB + protected ReportService reportService; + + @EJB + protected FinancialTransactionServiceLocal financialTransactionService; public FiscalPeriodServiceImpl() { LimaConfig config = LimaConfig.getInstance(); @@ -285,7 +319,221 @@ } } + @Override + public void addRetainedEarnings(FiscalPeriod fiscalPeriod, boolean newyear, + EntryBook entryBook) throws LimaException { + + TopiaContext topiaContext = null; + try { + + //sets dates + // - endRetainedEarnings: last day of the closing year + // - beginRetainedEarnings: first open day of the following year + Date endRetainedEarnings = fiscalPeriod.getBeginDate(); + Date beginRetainedEarnings = null; + + topiaContext = beginTransaction(); + + //Sets entryBook + //search for the entryBook to use using param + boolean found = false; + List<EntryBook> entryBooksList = entryBookService.getAllEntryBooks(); + for (EntryBook entry : entryBooksList) { + if (!found && entry.getCode().equals(entryBook.getCode()) + && entry.getLabel().equals(entryBook.getLabel())) { + entryBook = entry; + found = true; + } + } + //if entrybook isn't found + //then create it + if (!found) { + entryBookService.createEntryBook(entryBook); + entryBooksList = entryBookService.getAllEntryBooks(); + for (EntryBook entry : entryBooksList) { + if (!found && entry.getCode().equals(entryBook.getCode()) + && entry.getLabel().equals(entryBook.getLabel())) { + entryBook = entry; + found = true; + } + } + } + + //Sets accounts, check if they exist, if not create them + //-> 8 COMPTES SPECIAUX + // -> 89 BILAN + // -> 890 Bilan d'ouverture + // -> 891 Bilan de cloture + + //89 BILAN + Account accountMaster = accountService.getAccountByNumber("89"); + if (accountMaster == null) { + Account accountSuperMaster = accountService.getAccountByNumber("8"); + accountMaster.setAccountNumber("89"); + accountMaster.setLabel("BILAN"); + accountService.createAccount(accountSuperMaster, accountMaster); + accountMaster = accountService.getAccountByNumber("89"); + } + + //890 Bilan d'ouverture + Account beginRetainedAccount = accountService.getAccountByNumber("890"); + if (beginRetainedAccount == null) { + beginRetainedAccount = new AccountImpl(); + beginRetainedAccount.setAccountNumber("890"); + beginRetainedAccount.setLabel("Bilan d'ouverture"); + accountService.createAccount(accountMaster, beginRetainedAccount); + beginRetainedAccount = accountService.getAccountByNumber("890"); + } + + //891 Bilan de cloture + Account endRetainedAccount = accountService.getAccountByNumber("891"); + if (endRetainedAccount == null) { + endRetainedAccount = new AccountImpl(); + endRetainedAccount.setAccountNumber("891"); + endRetainedAccount.setLabel("Bilan de clôture"); + accountService.createAccount(accountMaster, endRetainedAccount); + endRetainedAccount = accountService.getAccountByNumber("891"); + } + + //look for the last financial period from the previous fiscal year + Collection<FinancialPeriod> fperiod = fiscalPeriod.getFinancialPeriod(); + + Iterator itr = fperiod.iterator(); + FinancialPeriod lastFPeriod = null; + while (itr.hasNext()) { + lastFPeriod = (FinancialPeriod) itr.next(); + } + //check if the last financial period isn't blocked + if (lastFPeriod.getLocked()) { + throw new LimaException("The last financial period from the fiscal period is blocked"); + } + + FinancialPeriod beginfinancialPeriod = null; + //settings to be done only if a new year exists + if (newyear) { + //look for the first financial period on the new fiscal year which is unlocked + found = false; + List<ClosedPeriodicEntryBook> resultsArray = + new ArrayList<ClosedPeriodicEntryBook>(); + List<ClosedPeriodicEntryBook> closedPeriodicEntryBook = + financialPeriodService.getAllClosedPeriodicEntryBooksFromUnblockedFiscalPeriod(); + Collections.sort(closedPeriodicEntryBook, new FinancialPeriodComparator()); + resultsArray.addAll(closedPeriodicEntryBook); + for (ClosedPeriodicEntryBook cPeriodicEntryBook : resultsArray) { + //check for - unlocked financial period + // - date after the closing fiscal year + // - unlocked entrybook + // - right code and label + if (!found && !cPeriodicEntryBook.getFinancialPeriod().getLocked() + && cPeriodicEntryBook.getFinancialPeriod().getBeginDate().after(fiscalPeriod.getEndDate()) + && !cPeriodicEntryBook.getLocked() + && cPeriodicEntryBook.getEntryBook().getCode().equals(entryBook.getCode()) + && cPeriodicEntryBook.getEntryBook().getLabel().equals(entryBook.getLabel())) { + found = true; + beginfinancialPeriod = cPeriodicEntryBook.getFinancialPeriod(); + } + } + if (!found) { + throw new LimaException("Can't set financial period on the following fiscal year "); + } + } + + //holds entries of all closing transactions + FinancialTransaction endfinancialTransaction = new FinancialTransactionImpl(); + if (lastFPeriod != null) { + System.out.println("not null"); + //Sets the endfinancialTransaction + endfinancialTransaction.setAmountDebit(BigDecimal.ZERO); + endfinancialTransaction.setAmountCredit(BigDecimal.ZERO); + endfinancialTransaction.setEntryBook(entryBook); + endfinancialTransaction.setFinancialPeriod(lastFPeriod); + endfinancialTransaction.setTransactionDate(fiscalPeriod.getEndDate()); + financialTransactionService.createFinancialTransaction(endfinancialTransaction); + } + + //holds entries of all opening transactions + FinancialTransaction beginfinancialTransaction = new FinancialTransactionImpl(); + if (newyear) { + if (found) { + //Sets the endfinancialTransaction + beginfinancialTransaction.setAmountDebit(BigDecimal.ZERO); + beginfinancialTransaction.setAmountCredit(BigDecimal.ZERO); + beginfinancialTransaction.setEntryBook(entryBook); + beginfinancialTransaction.setFinancialPeriod(beginfinancialPeriod); + beginfinancialTransaction.setTransactionDate(beginfinancialPeriod.getBeginDate()); + financialTransactionService.createFinancialTransaction(beginfinancialTransaction); + } + } + + //Sets date for description, e.g: Report à nouveau (DATE) + Calendar calendar = Calendar.getInstance(); + calendar.setTime(fiscalPeriod.getEndDate()); + + //Sets entries + Entry beginEntry = null; + + + BalanceTrial results = reportService.generateBalanceTrial(fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate(), null, false, false); + + List<ReportsDatas> reportsDatasList = (List<ReportsDatas>) results.getReportsDatas(); + + for (ReportsDatas report : reportsDatasList) { + //Account class from 1 to 5 and only non zero amount + if (report.getAccount().getAccountNumber().substring(0, 1).matches("[1-5]") + && !report.getAmountSolde().equals(BigDecimal.ZERO)) { + //close accounts by removing amounts from all class 1 to 5 accounts + beginEntry = new EntryImpl(); + beginEntry.setDescription(_("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); + beginEntry.setVoucher(_("lima-business.financialtransaction.retainedearnings.voucher")); + beginEntry.setFinancialTransaction(endfinancialTransaction); + beginEntry.setAccount(report.getAccount()); + beginEntry.setAmount(report.getAmountSolde().abs()); + beginEntry.setDebit(!report.getSoldeDebit()); + financialTransactionService.createEntryWithTransaction(beginEntry, topiaContext); + //save amounts inside account number 891 + beginEntry = new EntryImpl(); + beginEntry.setDescription(_("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); + beginEntry.setVoucher(_("lima-business.financialtransaction.retainedearnings.voucher")); + beginEntry.setFinancialTransaction(endfinancialTransaction); + beginEntry.setAccount(endRetainedAccount); + beginEntry.setAmount(report.getAmountSolde().abs()); + beginEntry.setDebit(report.getSoldeDebit()); + financialTransactionService.createEntryWithTransaction(beginEntry, topiaContext); + //open new year accounts if new year exists and a date has been found for the transaction + if (newyear && found) { + //give back amounts from class 1 to 5 accounts + beginEntry = new EntryImpl(); + beginEntry.setDescription(_("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); + beginEntry.setVoucher(_("lima-business.financialtransaction.retainedearnings.voucher")); + beginEntry.setFinancialTransaction(beginfinancialTransaction); + beginEntry.setAccount(report.getAccount()); + beginEntry.setAmount(report.getAmountSolde().abs()); + beginEntry.setDebit(report.getSoldeDebit()); + financialTransactionService.createEntryWithTransaction(beginEntry, topiaContext); + //close account by removing amount from account number 890 + beginEntry = new EntryImpl(); + beginEntry.setDescription(_("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); + beginEntry.setVoucher(_("lima-business.financialtransaction.retainedearnings.voucher")); + beginEntry.setFinancialTransaction(beginfinancialTransaction); + beginEntry.setAccount(endRetainedAccount); + beginEntry.setAmount(report.getAmountSolde().abs()); + beginEntry.setDebit(!report.getSoldeDebit()); + financialTransactionService.createEntryWithTransaction(beginEntry, topiaContext); + } + } + } + //if no problem appeared, commit + commitTransaction(topiaContext); + } + catch (TopiaException ex) { + doCatch(topiaContext, ex, log); + } + finally { + doFinally(topiaContext, log); + } + } + protected TopiaContext beginTransaction() throws TopiaException { // basic check done, make check in database // TODO move it into JTA Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/FiscalPeriodService.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/FiscalPeriodService.java 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejbinterface/FiscalPeriodService.java 2011-07-01 14:03:16 UTC (rev 3195) @@ -28,6 +28,7 @@ import java.util.List; import javax.ejb.Remote; import org.chorem.lima.business.LimaException; +import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.FiscalPeriod; /** @@ -52,5 +53,13 @@ void createFiscalPeriod(FiscalPeriod fiscalPeriod) throws LimaException; - void blockFiscalPeriod(FiscalPeriod fiscalPeriod) throws LimaException; + void blockFiscalPeriod(FiscalPeriod fiscalPeriod) throws LimaException; + + /** + * Methods for report retained earnings + * @param previousFiscalPeriod, fiscalPeriod, entryBook + * @throws LimaException + */ + + void addRetainedEarnings(FiscalPeriod fiscalPeriod, boolean newyear, EntryBook entryBook) throws LimaException; } Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodTableModel.java 2011-07-01 14:03:16 UTC (rev 3195) @@ -29,7 +29,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; -import java.util.Date; import java.util.List; @@ -41,11 +40,9 @@ import org.chorem.lima.business.FinancialTransactionServiceMonitorable; import org.chorem.lima.business.FiscalPeriodServiceMonitorable; import org.chorem.lima.business.ImportServiceMonitorable; -import org.chorem.lima.business.LimaBusinessException; import org.chorem.lima.business.LimaException; import org.chorem.lima.business.ServiceListener; import org.chorem.lima.business.utils.FiscalPeriodComparator; -import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.service.LimaServiceFactory; @@ -245,33 +242,6 @@ refresh(); } } - - /** - * Sets FiscalPeriods and call for performing adding retained earnings - * @param selectedRow - * @param entryBook - * @throws LimaException - */ - public void addRetainedEarnings(int selectedRow, EntryBook entryBook, Date date) throws LimaException { - - FiscalPeriod fiscalPeriod = getFiscalPeriodAtRow(selectedRow); - //check if the current fiscal period isn't block - if (fiscalPeriod.getLocked()) { - throw new LimaBusinessException("The fiscal period is blocked"); - } - if (selectedRow == 0) { - throw new LimaBusinessException("Can't find previous fiscal period"); - } - - //check if the previous fiscal period exists, if so check if it is blocked - FiscalPeriod previousFiscalPeriod = getFiscalPeriodAtRow(selectedRow-1); - if (!previousFiscalPeriod.getLocked()) { - throw new LimaBusinessException("The previous fiscal period isn't blocked"); - } - - financialTransactionService.addRetainedEarnings(previousFiscalPeriod, fiscalPeriod, entryBook, date); - - } @Override public void notifyMethod(String serviceName, String methodeName) { Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodView.jaxx 2011-07-01 14:03:16 UTC (rev 3195) @@ -66,10 +66,4 @@ onActionPerformed="getHandler().blockFiscalPeriod()" /> </cell> </row> - <row> - <cell fill="horizontal"> - <JButton id="ranButton" text="lima.charts.fiscalperiod.addretainedearnings" enabled="{isSelectedPeriod()}" - onActionPerformed="getHandler().addRetainedEarnings()" /> - </cell> - </row> </Table> Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2011-07-01 14:03:16 UTC (rev 3195) @@ -34,10 +34,13 @@ import org.nuiton.util.DateUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.lima.business.FinancialTransactionServiceMonitorable; +import org.chorem.lima.business.FiscalPeriodServiceMonitorable; import org.chorem.lima.business.LimaException; import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.EntryBookImpl; import org.chorem.lima.entity.FiscalPeriod; +import org.chorem.lima.service.LimaServiceFactory; import org.chorem.lima.ui.fiscalperiod.AddPeriod; import org.chorem.lima.ui.fiscalperiod.FiscalPeriodView; import org.chorem.lima.util.DialogHelper; @@ -61,8 +64,15 @@ protected FiscalPeriodTableModel tableModel; + /** Service. */ + protected FiscalPeriodServiceMonitorable fiscalPeriodService; + protected FiscalPeriodViewHandler(FiscalPeriodView view) { this.view=view; + + fiscalPeriodService = + LimaServiceFactory.getInstance().getService( + FiscalPeriodServiceMonitorable.class); } public void addFiscalPeriod() { @@ -108,19 +118,38 @@ int selectedRow = fiscalPeriodeTable.getSelectedRow(); FiscalPeriodTableModel model = (FiscalPeriodTableModel)getView().getFiscalPeriodTable().getModel(); - + System.out.println(fiscalPeriodeTable.getRowCount() + " " + selectedRow); // blocked it try { FiscalPeriod selectedFiscalPeriod = model.getFiscalPeriodAtRow(selectedRow); + //check if the user want to block the fiscal year int response = JOptionPane.showConfirmDialog(getView(), _("lima.charts.fiscalperiod.question.blocked"), _("lima.common.question"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); - if (response == JOptionPane.YES_OPTION) { - model.blockFiscalPeriod(selectedFiscalPeriod); + //use to tell if the user wants to create a new fiscal year + boolean newyear = false; + //check if two fiscal periods are open + if (model.getRowCount()-1 != selectedRow) { + newyear = true; //two are open + } else { + //check if the user want to create a new fiscal year + response = + JOptionPane.showConfirmDialog(getView(), + _("lima.charts.fiscalperiod.question.newyear"), + _("lima.common.question"), JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + //create a new fiscal year + if (response == JOptionPane.YES_OPTION) { + addFiscalPeriod(); + newyear = true; + } + } + addRetainedEarnings(selectedFiscalPeriod, newyear); + //model.blockFiscalPeriod(selectedFiscalPeriod); } } catch (LimaException eee) { if (log.isErrorEnabled()) { @@ -131,40 +160,29 @@ } /** - * Checks confirmation from user + * * Sets EntryBook and Date to use */ - public void addRetainedEarnings() { + public void addRetainedEarnings(FiscalPeriod selectedFiscalPeriod, boolean newyear) { JXTable fiscalPeriodeTable = getView().getFiscalPeriodTable(); int selectedRow = fiscalPeriodeTable.getSelectedRow(); FiscalPeriodTableModel model = (FiscalPeriodTableModel)getView().getFiscalPeriodTable().getModel(); try { - int response = JOptionPane.showConfirmDialog(view, _("lima.charts.fiscalperiod.addretainedearnings"), - _("lima.common.question"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); - - if (response == JOptionPane.YES_OPTION) { - //Sets EntryBook - EntryBook newEntryBook = new EntryBookImpl(); - RetainedEarningsEntryBookForm entryBookForm = new RetainedEarningsEntryBookForm(view); - entryBookForm.setEntryBook(newEntryBook); - // jaxx constructor don't call super() ? - entryBookForm.setLocationRelativeTo(view); - entryBookForm.setVisible(true); - // null == cancel action - EntryBook entryBook = entryBookForm.getEntryBook(); - if (entryBook != null) { - //Sets Date - RetainedEarningsDateForm dateForm = new RetainedEarningsDateForm(view); - // jaxx constructor don't call super() ? - dateForm.setLocationRelativeTo(view); - dateForm.setVisible(true); - // null == cancel action - Date date = dateForm.getBeginDatePicker().getDate(); - if (date != null) { - model.addRetainedEarnings(selectedRow, entryBook, date); - } - } + //Sets EntryBook + EntryBook newEntryBook = new EntryBookImpl(); + RetainedEarningsEntryBookForm entryBookForm = new RetainedEarningsEntryBookForm(view); + entryBookForm.setEntryBook(newEntryBook); + // jaxx constructor don't call super() ? + entryBookForm.setLocationRelativeTo(view); + entryBookForm.setVisible(true); + // null == cancel action + EntryBook entryBook = entryBookForm.getEntryBook(); + if (entryBook != null) { + System.out.println(selectedFiscalPeriod); + System.out.println(newyear); + System.out.println(entryBook); + fiscalPeriodService.addRetainedEarnings(selectedFiscalPeriod, newyear, entryBook); } } catch (LimaException eee) { if (log.isErrorEnabled()) { Modified: trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties =================================================================== --- trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties 2011-07-01 13:58:36 UTC (rev 3194) +++ trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties 2011-07-01 14:03:16 UTC (rev 3195) @@ -31,7 +31,8 @@ lima.charts.fiscalperiod.block=Block fiscalperiod lima.charts.fiscalperiod.create=Create fiscalperiod lima.charts.fiscalperiod.question.blocked=Block fiscalperiod -lima.charts.fiscalperiod.question.morethan12=This period is longer than 12 months. Do you really create this ? +lima.charts.fiscalperiod.question.morethan12=This period is longer than 12 months. Do you really create this ? +lima.charts.fiscalperiod.question.newyear=Do you want to create a new fiscal year ? lima.charts.fiscalyear=Fiscal Years lima.common.account=Account lima.common.amount=Amount @@ -82,6 +83,7 @@ lima.config.ui.fullscreen.description=FullScreen lima.daily=Daily lima.documents=Documents\u2026 +lima.documents.error=Can't create document on an open fiscal year lima.entries=Entries lima.entries.addEntry=Add entry lima.entries.addTransaction=Add transaction @@ -213,6 +215,8 @@ lima.tab.home=Home lima.table.account=Account lima.table.balance=Balance +lima.table.begin.credit=Beginning Balance Credit +lima.table.begin.debit=Beginning Balance Debit lima.table.closure=Closed lima.table.code=Code lima.table.collectedvat=Collected VAT @@ -250,3 +254,4 @@ lima.tooltip.lettering=<html>Add a letter on many entries <br/>Select many rows with combination ctrl + click</html> lima.warning.nimbus.landf=Could not find Numbus Look&Feel limma.config.thousandseparator.description= +nuitonutil.error.applicationconfig.save=