diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java index 18f1d5f56..864189322 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java @@ -2086,7 +2086,7 @@ private void cmbTemplatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN- PartiesTriplet triplet=new PartiesTriplet(pe.getAddress(), pe.getReferenceType(), pe.getInvolvement()); partiesTriplets.add(triplet); } - HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, new HashMap<>(), caseLawyer, caseAssistant, author, null, null, null, null, null, null); + HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, new HashMap<>(), caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); this.txtSubject.setText(TemplatesUtil.replacePlaceHolders(tpl.getSubject(), htValues)); placeHolderNames = TemplatesUtil.getPlaceHoldersInTemplate(tpl.getBody(), allPartyTypesPlaceholders,new ArrayList<>()); @@ -2095,7 +2095,7 @@ private void cmbTemplatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN- ht.put(ph, ""); } - htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, new HashMap<>(), caseLawyer, caseAssistant, author, null, null, null, null, null, null); + htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, new HashMap<>(), caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); String t = TemplatesUtil.replacePlaceHolders(tpl.getBody(), htValues) + System.getProperty("line.separator"); int cursorIndex = t.indexOf(PLACEHOLDER_CURSOR); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/drebis/freetext/FreeTextStep.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/drebis/freetext/FreeTextStep.java index 1f02ad3e3..11b7af57c 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/drebis/freetext/FreeTextStep.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/drebis/freetext/FreeTextStep.java @@ -973,7 +973,7 @@ private void cmbTemplatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN- for (String ph : placeHolderNames) { ht.put(ph, ""); } - HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, contextArchiveFile, partiesTriplets, null, null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null); + HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, contextArchiveFile, partiesTriplets, null, null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); String t = TemplatesUtil.replacePlaceHolders(tpl.getBody(), htValues); int cursorIndex = t.indexOf(EmailTemplate.PLACEHOLDER_CURSOR); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java index 6adf5997b..d44c0d0d6 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java @@ -723,6 +723,7 @@ public class AddDocumentFromTemplateDialog extends javax.swing.JDialog implement private byte[] giroCode = null; private String ingoText=null; private StyledCalculationTable timesheetsTable = null; + private StyledCalculationTable timesheetSummaryTable = null; private List allPartyTypes = null; private Collection formPlaceHolders = new ArrayList<>(); private HashMap formPlaceHolderValues = new HashMap<>(); @@ -734,7 +735,7 @@ public class AddDocumentFromTemplateDialog extends javax.swing.JDialog implement private DocumentNameTemplate nameTemplate = null; public AddDocumentFromTemplateDialog(java.awt.Frame parent, boolean modal, ArchiveFilePanel casePanel, CaseFolderPanel targetTable, ArchiveFileBean aFile, List involved) { - this(parent, modal, casePanel, targetTable, aFile, involved, null, null, null, null, null, null, null); + this(parent, modal, casePanel, targetTable, aFile, involved, null, null, null, null, null, null, null, null); } /** @@ -754,7 +755,7 @@ public AddDocumentFromTemplateDialog(java.awt.Frame parent, boolean modal, Archi * @param giroCode * @param ingoText */ - public AddDocumentFromTemplateDialog(java.awt.Frame parent, boolean modal, ArchiveFilePanel casePanel, CaseFolderPanel targetTable, ArchiveFileBean aFile, List involved, GenericCalculationTable calculationTable, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, byte[] giroCode, String ingoText) { + public AddDocumentFromTemplateDialog(java.awt.Frame parent, boolean modal, ArchiveFilePanel casePanel, CaseFolderPanel targetTable, ArchiveFileBean aFile, List involved, GenericCalculationTable calculationTable, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, StyledCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) { super(parent, modal); this.calculationTable = calculationTable; @@ -764,6 +765,7 @@ public AddDocumentFromTemplateDialog(java.awt.Frame parent, boolean modal, Archi this.ingoText = ingoText; this.invoiceTable = invoiceTable; this.timesheetsTable = timesheetsTable; + this.timesheetSummaryTable = timesheetSummaryTable; this.targetTable = targetTable; this.aFile = aFile; @@ -1803,7 +1805,7 @@ private void templateSelection() { for (String ph : placeHoldersBody) { ht.put(ph, ""); } - ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, aFile, partiesTriplets, this.cmbDictateSigns.getSelectedItem().toString(), this.calculationTable, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, this.invoice, this.invoiceSender, this.invoiceTable, this.timesheetsTable, giroCode, ingoText); + ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, aFile, partiesTriplets, this.cmbDictateSigns.getSelectedItem().toString(), this.calculationTable, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, this.invoice, this.invoiceSender, this.invoiceTable, this.timesheetsTable, this.timesheetSummaryTable, giroCode, ingoText); int emptyValues = 0; for (String key : ht.keySet()) { diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java index 785cfa4d1..823f1f8e6 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java @@ -4574,11 +4574,11 @@ private void cmdSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST }//GEN-LAST:event_cmdSaveActionPerformed - public ArchiveFileDocumentsBean newDocumentDialog(GenericCalculationTable table, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, byte[] giroCode, String ingoText) { - return this.newDocumentActionPerformedImpl(table, invoice, invoiceSender, invoiceTable, timesheetsTable, giroCode, ingoText); + public ArchiveFileDocumentsBean newDocumentDialog(GenericCalculationTable table, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, StyledCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) { + return this.newDocumentActionPerformedImpl(table, invoice, invoiceSender, invoiceTable, timesheetsTable, timesheetSummaryTable, giroCode, ingoText); } - private ArchiveFileDocumentsBean newDocumentActionPerformedImpl(GenericCalculationTable table, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, byte[] giroCode, String ingoText) { + private ArchiveFileDocumentsBean newDocumentActionPerformedImpl(GenericCalculationTable table, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, StyledCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) { List involved = new ArrayList<>(); @@ -4599,7 +4599,7 @@ private ArchiveFileDocumentsBean newDocumentActionPerformedImpl(GenericCalculati } } - AddDocumentFromTemplateDialog dlg = new AddDocumentFromTemplateDialog(EditorsRegistry.getInstance().getMainWindow(), true, this, this.caseFolderPanel1, this.dto, involved, table, invoice, invoiceSender, invoiceTable, timesheetsTable, giroCode, ingoText); + AddDocumentFromTemplateDialog dlg = new AddDocumentFromTemplateDialog(EditorsRegistry.getInstance().getMainWindow(), true, this, this.caseFolderPanel1, this.dto, involved, table, invoice, invoiceSender, invoiceTable, timesheetsTable, timesheetSummaryTable, giroCode, ingoText); dlg.setTitle("Dokument hinzufügen"); FrameUtils.centerDialog(dlg, EditorsRegistry.getInstance().getMainWindow()); dlg.setVisible(true); @@ -4632,7 +4632,7 @@ public void saveInvolvements() { } } - private void newDocumentActionPerformedImpl(StyledCalculationTable rvgTable, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, byte[] giroCode, String ingoText) { + private void newDocumentActionPerformedImpl(StyledCalculationTable rvgTable, Invoice invoice, AppUserBean invoiceSender, StyledCalculationTable invoiceTable, StyledCalculationTable timesheetsTable, StyledCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) { // save all forms to have the latest data available for document creation this.saveFormData(); @@ -4658,7 +4658,7 @@ private void newDocumentActionPerformedImpl(StyledCalculationTable rvgTable, Inv } } - AddDocumentFromTemplateDialog dlg = new AddDocumentFromTemplateDialog(EditorsRegistry.getInstance().getMainWindow(), true, this, this.caseFolderPanel1, this.dto, involved, rvgTable, invoice, invoiceSender, invoiceTable, timesheetsTable, giroCode, ingoText); + AddDocumentFromTemplateDialog dlg = new AddDocumentFromTemplateDialog(EditorsRegistry.getInstance().getMainWindow(), true, this, this.caseFolderPanel1, this.dto, involved, rvgTable, invoice, invoiceSender, invoiceTable, timesheetsTable, timesheetSummaryTable, giroCode, ingoText); dlg.setTitle("Dokument hinzufügen"); FrameUtils.centerDialog(dlg, EditorsRegistry.getInstance().getMainWindow()); dlg.setVisible(true); @@ -4667,7 +4667,7 @@ private void newDocumentActionPerformedImpl(StyledCalculationTable rvgTable, Inv private void cmdNewDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNewDocumentActionPerformed - this.newDocumentActionPerformedImpl(null, null, null, null, null, null, null); + this.newDocumentActionPerformedImpl(null, null, null, null, null, null, null, null); }//GEN-LAST:event_cmdNewDocumentActionPerformed diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.java index 4ae406413..9e5561f72 100644 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.java @@ -706,6 +706,7 @@ You should also get your employer (if you work as a programmer) or school, import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; @@ -714,6 +715,7 @@ You should also get your employer (if you work as a programmer) or school, import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TreeMap; import java.util.stream.Collectors; @@ -2172,35 +2174,48 @@ private StyledCalculationTable getTimesheetPositionsAsTable(List posList, String language) { + + if (posList == null || posList.isEmpty()) { + return null; + } + + StyledCalculationTable ct = new StyledCalculationTable(); + SimpleDateFormat dfDateTime = null; + DecimalFormat currencyFormat=null; + if ("EN".equalsIgnoreCase(language)) { + ct.addHeaders("Person", "Duration", "Total"); + dfDateTime = new SimpleDateFormat("MM/dd/yyyy"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.US)); + } else if ("FR".equalsIgnoreCase(language)) { + ct.addHeaders("Personne", "Durée", "Somme"); + dfDateTime = new SimpleDateFormat("dd/MM/yyyy"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.FRANCE)); + } else if ("NL".equalsIgnoreCase(language)) { + ct.addHeaders("Persoon", "Tijd", "Totaal"); + dfDateTime = new SimpleDateFormat("dd-MM-yyyy"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(new Locale("nl", "NL"))); + } else { + ct.addHeaders("Person", "Dauer", "Total"); + dfDateTime = new SimpleDateFormat("dd.MM.yyyy"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.GERMANY)); + } + + if (ServerSettings.getInstance().getSettingAsBoolean("plugins.global.tableproperties.table.emptyRows", true)) { + ct.addRow("", "", ""); + } + + HashMap personMillis=new HashMap(); + HashMap personTotal=new HashMap(); + for (TimesheetPosition pos : posList) { + + long millis=pos.getStopped().getTime() - pos.getStarted().getTime(); + BigDecimal total=pos.getTotal(); + + if(personMillis.containsKey(pos.getPrincipal())) + personMillis.put(pos.getPrincipal(), personMillis.get(pos.getPrincipal()) + millis); + else + personMillis.put(pos.getPrincipal(), millis); + + if(personTotal.containsKey(pos.getPrincipal())) + personTotal.put(pos.getPrincipal(), personTotal.get(pos.getPrincipal()).add(total)); + else + personTotal.put(pos.getPrincipal(), total); + + } + + for(String principal: personMillis.keySet()) { + String person=principal; + AppUserBean personUser = UserSettings.getInstance().getUser(principal); + if (personUser != null && !StringUtils.isEmpty(personUser.getDisplayName())) { + person = personUser.getDisplayName(); + } + float totalMinutes = ((float) (personMillis.get(principal)) / 1000f / 60f); + int hours = new Float(totalMinutes).intValue() / 60; + int minutes = new Float(totalMinutes).intValue() % 60; + ct.addRow(person, String.format("%02d:%02d", hours, minutes), currencyFormat.format(personTotal.get(principal))); + } + + if (ServerSettings.getInstance().getSettingAsBoolean("plugins.global.tableproperties.table.emptyRows", true)) { + ct.addRow("", "", "", "", "", ""); + } + + //HeaderRow + ct.setRowForeGround(0, new Color(ServerSettings.getInstance().getSettingAsInt("plugins.global.tableproperties.header.fore.color", Color.BLACK.getRGB()))); + ct.setRowBackGround(0, new Color(ServerSettings.getInstance().getSettingAsInt("plugins.global.tableproperties.header.back.color", Color.LIGHT_GRAY.getRGB()))); + ct.setRowBold(0, ServerSettings.getInstance().getSettingAsBoolean("plugins.global.tableproperties.header.Bold", true)); + + //TableLayout + ct.setColumnAlignment(0, Cell.ALIGNMENT_LEFT); + ct.setColumnAlignment(1, Cell.ALIGNMENT_RIGHT); + ct.setColumnAlignment(2, Cell.ALIGNMENT_RIGHT); + ct.getCellAt(0, 1).setAlignment(Cell.ALIGNMENT_LEFT); + ct.setRowFontSize(0, 12); + ct.setColumnWidth(0, 65); + ct.setColumnWidth(1, 55); + ct.setColumnWidth(2, 55); ct.setLineBorder(ServerSettings.getInstance().getSettingAsBoolean("plugins.global.tableproperties.table.lines", true)); ct.setBorderColor(new Color(ServerSettings.getInstance().getSettingAsInt("plugins.global.tableproperties.table.lines.color", Color.BLACK.getRGB()))); ct.setFontFamily(ServerSettings.getInstance().getSetting("plugins.global.tableproperties.table.fontfamily", "Arial")); @@ -2238,14 +2345,19 @@ private StyledCalculationTable getInvoicePositionsAsTable(String language) { int rowcount = 0; StyledCalculationTable ct = new StyledCalculationTable(); + DecimalFormat currencyFormat=null; if ("EN".equalsIgnoreCase(language)) { ct.addHeaders("", "Position", "Qty", "Rate", "Tax", "Amount"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.US)); } else if ("FR".equalsIgnoreCase(language)) { ct.addHeaders("", "Article de facture", "Quantité", "Prix unitaire", "TPS", "Au total"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.FRANCE)); } else if ("NL".equalsIgnoreCase(language)) { ct.addHeaders("", "Factuuritem", "Aantal", "Prijs", "BTW", "Totaal"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(new Locale("nl", "NL"))); } else { ct.addHeaders("", "Position", "Menge", "Einzel", "USt.", "Gesamt"); + currencyFormat=new DecimalFormat("#,##0.00", DecimalFormatSymbols.getInstance(Locale.GERMANY)); } if (ServerSettings.getInstance().getSettingAsBoolean("plugins.global.tableproperties.table.emptyRows", true)) { ct.addRow("", "", "", "", "", ""); @@ -2275,9 +2387,9 @@ private StyledCalculationTable getInvoicePositionsAsTable(String language) { positionIndex = positionIndex + 1; if (StringUtils.isEmpty(pos.getDescription())) { - ct.addRow("" + positionIndex, pos.getName(), cf.format(pos.getUnits()), cf.format(pos.getUnitPrice()), percentageFormat.format(t), cf.format(u.multiply(up)) + " " + this.cmbCurrency.getSelectedItem()); + ct.addRow("" + positionIndex, pos.getName(), currencyFormat.format(pos.getUnits()), currencyFormat.format(pos.getUnitPrice()), percentageFormat.format(t), currencyFormat.format(u.multiply(up)) + " " + this.cmbCurrency.getSelectedItem()); } else { - ct.addRow("" + positionIndex, pos.getName() + ": " + pos.getDescription(), cf.format(pos.getUnits()), cf.format(pos.getUnitPrice()), percentageFormat.format(t), cf.format(u.multiply(up)) + " " + this.cmbCurrency.getSelectedItem()); + ct.addRow("" + positionIndex, pos.getName() + ": " + pos.getDescription(), currencyFormat.format(pos.getUnits()), currencyFormat.format(pos.getUnitPrice()), percentageFormat.format(t), currencyFormat.format(u.multiply(up)) + " " + this.cmbCurrency.getSelectedItem()); } rowcount = rowcount + 1; @@ -2292,27 +2404,27 @@ private StyledCalculationTable getInvoicePositionsAsTable(String language) { int footerRowTotal = -1; Map taxRateToTaxTotalSorted = new TreeMap<>(taxRateToTaxTotal); if ("EN".equalsIgnoreCase(language)) { - footerRowNet = ct.addRow("", "Net", "", "", "", cf.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); + footerRowNet = ct.addRow("", "Net", "", "", "", currencyFormat.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); for (BigDecimal taxRate : taxRateToTaxTotalSorted.keySet()) { - footerRowTaxes.add(ct.addRow("", "Tax " + percentageFormat.format(taxRate) + "%", "", "", "", cf.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); + footerRowTaxes.add(ct.addRow("", "Tax " + percentageFormat.format(taxRate) + "%", "", "", "", currencyFormat.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); } footerRowTotal = ct.addRow("", "Balance Due", "", "", "", lblInvoiceTotal.getText() + " " + this.cmbCurrency.getSelectedItem()); } else if ("FR".equalsIgnoreCase(language)) { - footerRowNet = ct.addRow("", "Sous Total", "", "", "", cf.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); + footerRowNet = ct.addRow("", "Sous Total", "", "", "", currencyFormat.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); for (BigDecimal taxRate : taxRateToTaxTotalSorted.keySet()) { - footerRowTaxes.add(ct.addRow("", "TPS " + percentageFormat.format(taxRate) + "%", "", "", "", cf.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); + footerRowTaxes.add(ct.addRow("", "TPS " + percentageFormat.format(taxRate) + "%", "", "", "", currencyFormat.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); } footerRowTotal = ct.addRow("", "Montant Dû", "", "", "", lblInvoiceTotal.getText() + " " + this.cmbCurrency.getSelectedItem()); } else if ("NL".equalsIgnoreCase(language)) { - footerRowNet = ct.addRow("", "Subtotal", "", "", "", cf.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); + footerRowNet = ct.addRow("", "Subtotal", "", "", "", currencyFormat.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); for (BigDecimal taxRate : taxRateToTaxTotalSorted.keySet()) { - footerRowTaxes.add(ct.addRow("", "BTW " + percentageFormat.format(taxRate) + "%", "", "", "", cf.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); + footerRowTaxes.add(ct.addRow("", "BTW " + percentageFormat.format(taxRate) + "%", "", "", "", currencyFormat.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); } footerRowTotal = ct.addRow("", "Totaal te betalen", "", "", "", lblInvoiceTotal.getText() + " " + this.cmbCurrency.getSelectedItem()); } else { - footerRowNet = ct.addRow("", "Netto", "", "", "", cf.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); + footerRowNet = ct.addRow("", "Netto", "", "", "", currencyFormat.format(totalNet) + " " + this.cmbCurrency.getSelectedItem()); for (BigDecimal taxRate : taxRateToTaxTotalSorted.keySet()) { - footerRowTaxes.add(ct.addRow("", "USt. " + percentageFormat.format(taxRate) + "%", "", "", "", cf.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); + footerRowTaxes.add(ct.addRow("", "USt. " + percentageFormat.format(taxRate) + "%", "", "", "", currencyFormat.format(taxRateToTaxTotal.get(taxRate)) + " " + this.cmbCurrency.getSelectedItem())); } footerRowTotal = ct.addRow("", "Zahlbetrag", "", "", "", lblInvoiceTotal.getText() + " " + this.cmbCurrency.getSelectedItem()); } @@ -2561,10 +2673,12 @@ private void cmdCreateInvoiceDocumentActionPerformed(java.awt.event.ActionEvent // generate document via template system // upon PDF creation, embed XRechnung XML StyledCalculationTable timesheetPosTable = null; + StyledCalculationTable timesheetSummaryTable = null; try { JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); List times = locator.lookupArchiveFileServiceRemote().getTimesheetPositionsForInvoice(this.currentEntry.getId()); timesheetPosTable = this.getTimesheetPositionsAsTable(times, this.cmbTableHeadersLanguage.getSelectedItem().toString()); + timesheetSummaryTable = this.getTimesheetSummaryAsTable(times, this.cmbTableHeadersLanguage.getSelectedItem().toString()); } catch (Exception ex) { log.error("error getting timesheet positions table", ex); JOptionPane.showMessageDialog(this, "Fehler beim Laden Zeiterfassungspositionen: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); @@ -2581,7 +2695,7 @@ private void cmdCreateInvoiceDocumentActionPerformed(java.awt.event.ActionEvent JOptionPane.showMessageDialog(this, ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } - ArchiveFileDocumentsBean invoiceDoc = this.caseView.newDocumentDialog(null, currentEntry, senderUser, this.getInvoicePositionsAsTable(this.cmbTableHeadersLanguage.getSelectedItem().toString()), timesheetPosTable, giroCode, null); + ArchiveFileDocumentsBean invoiceDoc = this.caseView.newDocumentDialog(null, currentEntry, senderUser, this.getInvoicePositionsAsTable(this.cmbTableHeadersLanguage.getSelectedItem().toString()), timesheetPosTable, timesheetSummaryTable, giroCode, null); if (invoiceDoc != null && this.currentEntry != null) { this.save(); try { @@ -2828,16 +2942,18 @@ private void cmdCreateTimesheetDocumentActionPerformed(java.awt.event.ActionEven } StyledCalculationTable timesheetPosTable = null; + StyledCalculationTable timesheetSummaryTable = null; try { JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); List times = locator.lookupArchiveFileServiceRemote().getTimesheetPositionsForInvoice(this.currentEntry.getId()); timesheetPosTable = this.getTimesheetPositionsAsTable(times, this.cmbTableHeadersLanguage.getSelectedItem().toString()); + timesheetSummaryTable = this.getTimesheetSummaryAsTable(times, this.cmbTableHeadersLanguage.getSelectedItem().toString()); } catch (Exception ex) { log.error("error getting timesheet positions table", ex); JOptionPane.showMessageDialog(this, "Fehler beim Laden Zeiterfassungspositionen: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } - ArchiveFileDocumentsBean timesheetDoc = this.caseView.newDocumentDialog(null, currentEntry, senderUser, this.getInvoicePositionsAsTable(this.cmbTableHeadersLanguage.getSelectedItem().toString()), timesheetPosTable, null, null); + ArchiveFileDocumentsBean timesheetDoc = this.caseView.newDocumentDialog(null, currentEntry, senderUser, this.getInvoicePositionsAsTable(this.cmbTableHeadersLanguage.getSelectedItem().toString()), timesheetPosTable, timesheetSummaryTable, null, null); } }//GEN-LAST:event_cmdCreateTimesheetDocumentActionPerformed diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java index 91187527f..b2ad94f2f 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java @@ -2258,7 +2258,7 @@ private void cmbTemplatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN- partiesTriplets.add(triplet); } // get all placeholder values for the given set of placeholders - HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null); + HashMap htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); this.txtSubject.setText(TemplatesUtil.replacePlaceHolders(tpl.getSubject(), htValues)); placeHolderNames = TemplatesUtil.getPlaceHoldersInTemplate(tpl.getBody(), allPartyTypesPlaceholders, this.formPlaceHolders); @@ -2266,7 +2266,7 @@ private void cmbTemplatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN- for (String ph : placeHolderNames) { ht.put(ph, ""); } - htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null); + htValues = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, this.contextArchiveFile, partiesTriplets, this.contextDictateSign, null, this.formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); if (this.cloudLink != null) { htValues.put("{{CLOUD_LINK}}", this.cloudLink); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/massmail/GenerateMassMailDocumentsDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/massmail/GenerateMassMailDocumentsDialog.java index 1935d3875..6438e7787 100644 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/massmail/GenerateMassMailDocumentsDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/massmail/GenerateMassMailDocumentsDialog.java @@ -993,7 +993,7 @@ private void cmdAddDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GE partiesTriplets.add(triplet); } - ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, null, partiesTriplets, null, null, new HashMap<>(), null, null, null, null, null, null, null, null, null); + ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, null, partiesTriplets, null, null, new HashMap<>(), null, null, null, null, null, null, null, null, null, null); for (String key: ht.keySet()) { Object[] row = new Object[]{key, ht.get(key)}; @@ -1104,7 +1104,7 @@ private void lstTemplatesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRS PartiesTriplet triplet = new PartiesTriplet(pe.getAddress(), pe.getReferenceType(), pe.getInvolvement()); partiesTriplets.add(triplet); } - ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, null, partiesTriplets, null, null, new HashMap<>(), null, null, null, null, null, null, null, null, null); + ht = locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, null, partiesTriplets, null, null, new HashMap<>(), null, null, null, null, null, null, null, null, null, null); for (String key: ht.keySet()) { Object[] row = new Object[]{key, ht.get(key)}; diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/utils/TemplatesUtil.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/utils/TemplatesUtil.java index 50aad31cb..e321a9afe 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/utils/TemplatesUtil.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/utils/TemplatesUtil.java @@ -728,7 +728,7 @@ public static HashMap getPlaceHolderValues(String content, Archi } } - return locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, contextArchiveFile, partiesTriplets, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, null, null, null, null); + return locator.lookupSystemManagementRemote().getPlaceHolderValues(ht, contextArchiveFile, partiesTriplets, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, null, null, null, null, null); } catch (Exception ex) { log.error("Error getting placeholder values", ex); diff --git a/j-lawyer-server-api/src/com/jdimension/jlawyer/services/SystemManagementRemote.java b/j-lawyer-server-api/src/com/jdimension/jlawyer/services/SystemManagementRemote.java index afd386ba5..10654bbbb 100644 --- a/j-lawyer-server-api/src/com/jdimension/jlawyer/services/SystemManagementRemote.java +++ b/j-lawyer-server-api/src/com/jdimension/jlawyer/services/SystemManagementRemote.java @@ -814,7 +814,7 @@ public interface SystemManagementRemote { MappingTable updateMappingTable(MappingTable mt) throws Exception; - HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception; + HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception; List getAssistants(); diff --git a/j-lawyer-server-common/src/com/jdimension/jlawyer/documents/PlaceHolders.java b/j-lawyer-server-common/src/com/jdimension/jlawyer/documents/PlaceHolders.java index 54e9e535c..b06bfebfc 100755 --- a/j-lawyer-server-common/src/com/jdimension/jlawyer/documents/PlaceHolders.java +++ b/j-lawyer-server-common/src/com/jdimension/jlawyer/documents/PlaceHolders.java @@ -846,6 +846,7 @@ public class PlaceHolders { public static final String BEL_ABSUSTIDNR = "{{BEL_ABSUSTIDNR}}"; public static final String ZE_TABELLE = "{{ZE_TABELLE}}"; + public static final String ZE_SUMMEN = "{{ZE_SUMMEN}}"; public static final String INGO_TEXT = "{{INGO_TEXT}}"; @@ -857,6 +858,7 @@ public class PlaceHolders { ALLTABLEPLACEHOLDERS.add(BEL_TABELLE); ALLTABLEPLACEHOLDERS.add(BEL_GIROCODE); ALLTABLEPLACEHOLDERS.add(ZE_TABELLE); + ALLTABLEPLACEHOLDERS.add(ZE_SUMMEN); } public static String insertAt(String origin, String insert, int position) { diff --git a/j-lawyer-server/j-lawyer-io/src/java/org/jlawyer/io/rest/v6/TemplatesEndpointV6.java b/j-lawyer-server/j-lawyer-io/src/java/org/jlawyer/io/rest/v6/TemplatesEndpointV6.java index 1141bed2f..b89a7f2ec 100644 --- a/j-lawyer-server/j-lawyer-io/src/java/org/jlawyer/io/rest/v6/TemplatesEndpointV6.java +++ b/j-lawyer-server/j-lawyer-io/src/java/org/jlawyer/io/rest/v6/TemplatesEndpointV6.java @@ -894,7 +894,7 @@ public Response addDocumentFromTemplate(@PathParam("caseId") String caseId, @Pat log.warn("Unable to find assistant " + aFile.getLawyer(), t); } - placeHoldersInTemplateMap = system.getPlaceHolderValues(placeHoldersInTemplateMap, aFile, parties, "", null, formsPlaceHolders, userLawyer, userAssistant, null, null, null, null, null, null, null); + placeHoldersInTemplateMap = system.getPlaceHolderValues(placeHoldersInTemplateMap, aFile, parties, "", null, formsPlaceHolders, userLawyer, userAssistant, null, null, null, null, null, null, null, null); for (RestfulPlaceholderV6 rph : placeHolderValues) { String key = rph.getPlaceHolderKey(); @@ -1044,7 +1044,7 @@ public Response getEmailFromTemplate(@PathParam("templateName") String templateN } // get all placeholder values for the given set of placeholders - HashMap htValues = system.getPlaceHolderValues(ht, aFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null); + HashMap htValues = system.getPlaceHolderValues(ht, aFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); String subject = CommonTemplatesUtil.replacePlaceHolders(tpl.getSubject(), htValues); placeHolderNames = CommonTemplatesUtil.getPlaceHoldersInTemplate(tpl.getBody(), allPartyTypesPlaceholders, formPlaceHolders); @@ -1052,7 +1052,7 @@ public Response getEmailFromTemplate(@PathParam("templateName") String templateN for (String ph : placeHolderNames) { ht.put(ph, ""); } - htValues = system.getPlaceHolderValues(ht, aFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null); + htValues = system.getPlaceHolderValues(ht, aFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, author, null, null, null, null, null, null, null); htValues.put("{{CLOUD_LINK}}", ""); diff --git a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/documents/ServerTemplatesUtil.java b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/documents/ServerTemplatesUtil.java index 5ba470d53..08afe5a65 100644 --- a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/documents/ServerTemplatesUtil.java +++ b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/documents/ServerTemplatesUtil.java @@ -737,7 +737,7 @@ public HashMap getPlaceHolderValues(String content, ArchiveFileB parties.add(new PartiesTriplet(aab.getAddressKey(), aab.getReferenceType(), aab)); } - return sys.getPlaceHolderValuesUnrestricted(ht, contextArchiveFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, null, invoice, invoiceSender, null, null, null, null); + return sys.getPlaceHolderValuesUnrestricted(ht, contextArchiveFile, parties, "", null, formPlaceHolderValues, caseLawyer, caseAssistant, null, invoice, invoiceSender, null, null, null, null, null); } catch (Exception ex) { log.error("Error getting placeholder values", ex); diff --git a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagement.java b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagement.java index 94ed1b03f..81d34b436 100644 --- a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagement.java +++ b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagement.java @@ -2383,14 +2383,14 @@ public String getTemplatesBaseDir(int templateType) throws Exception { } @Override - public HashMap getPlaceHolderValuesUnrestricted(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception { - return PlaceHolderServerUtils.getPlaceHolderValues(placeHolders, aFile, selectedParties, dictateSign, calculationTable, formsPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, invoiceTable, timesheetsTable, giroCode, ingoText); + public HashMap getPlaceHolderValuesUnrestricted(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception { + return PlaceHolderServerUtils.getPlaceHolderValues(placeHolders, aFile, selectedParties, dictateSign, calculationTable, formsPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, invoiceTable, timesheetsTable, timesheetSummaryTable, giroCode, ingoText); } @Override @RolesAllowed({"loginRole"}) - public HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception { - return PlaceHolderServerUtils.getPlaceHolderValues(placeHolders, aFile, selectedParties, dictateSign, calculationTable, formsPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, invoiceTable, timesheetsTable, giroCode, ingoText); + public HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception { + return PlaceHolderServerUtils.getPlaceHolderValues(placeHolders, aFile, selectedParties, dictateSign, calculationTable, formsPlaceHolderValues, caseLawyer, caseAssistant, author, invoice, invoiceSender, invoiceTable, timesheetsTable, timesheetSummaryTable, giroCode, ingoText); } @Override diff --git a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagementLocal.java b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagementLocal.java index 269b197ad..cbaef3028 100644 --- a/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagementLocal.java +++ b/j-lawyer-server/j-lawyer-server-ejb/src/java/com/jdimension/jlawyer/services/SystemManagementLocal.java @@ -730,8 +730,8 @@ public interface SystemManagementLocal { List getPlaceHoldersForTemplate(int templateType, String templatePath, String templateName, String caseId) throws Exception; - HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception; - HashMap getPlaceHolderValuesUnrestricted(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception; + HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception; + HashMap getPlaceHolderValuesUnrestricted(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception; DocumentNameTemplate getDefaultDocumentNameTemplate() throws Exception; diff --git a/j-lawyer-server/j-lawyer-server-ejb/src/java/org/jlawyer/utils/PlaceHolderServerUtils.java b/j-lawyer-server/j-lawyer-server-ejb/src/java/org/jlawyer/utils/PlaceHolderServerUtils.java index 4866fe9ce..75411c637 100644 --- a/j-lawyer-server/j-lawyer-server-ejb/src/java/org/jlawyer/utils/PlaceHolderServerUtils.java +++ b/j-lawyer-server/j-lawyer-server-ejb/src/java/org/jlawyer/utils/PlaceHolderServerUtils.java @@ -693,7 +693,7 @@ public class PlaceHolderServerUtils extends PlaceHolders { private static final String DATE_FORMAT = "dd.MM.yyyy"; - public static HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, byte[] giroCode, String ingoText) throws Exception { + public static HashMap getPlaceHolderValues(HashMap placeHolders, ArchiveFileBean aFile, List selectedParties, String dictateSign, GenericCalculationTable calculationTable, HashMap formsPlaceHolderValues, AppUserBean caseLawyer, AppUserBean caseAssistant, AppUserBean author, Invoice invoice, AppUserBean invoiceSender, GenericCalculationTable invoiceTable, GenericCalculationTable timesheetsTable, GenericCalculationTable timesheetSummaryTable, byte[] giroCode, String ingoText) throws Exception { DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.GERMANY); DecimalFormat currencyFormat = new DecimalFormat("#,##0.00", symbols); @@ -1405,6 +1405,10 @@ public static HashMap getPlaceHolderValues(HashMap