diff --git a/j-lawyer-client/lib/j-lawyer-invoicing/j-lawyer-invoicing.jar b/j-lawyer-client/lib/j-lawyer-invoicing/j-lawyer-invoicing.jar index a3a0fcbee..758c6b618 100644 Binary files a/j-lawyer-client/lib/j-lawyer-invoicing/j-lawyer-invoicing.jar and b/j-lawyer-client/lib/j-lawyer-invoicing/j-lawyer-invoicing.jar differ diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.form b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.form index 2e58f380c..1a4e2179e 100644 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.form +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/InvoiceDialog.form @@ -125,62 +125,49 @@ + - + - + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - @@ -191,7 +178,15 @@ - + + + + + + + + + @@ -199,7 +194,7 @@ - + @@ -209,7 +204,7 @@ - + @@ -232,18 +227,7 @@ - - - - - - - - - - - - + @@ -281,17 +265,6 @@ - - - - - - - - - - - @@ -327,17 +300,6 @@ - - - - - - - - - - - @@ -348,17 +310,6 @@ - - - - - - - - - - - @@ -411,22 +362,6 @@ - - - - - - - - - - - - - - - - @@ -467,8 +402,6 @@ - - @@ -663,27 +596,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -712,6 +624,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1019,6 +965,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 914b2c244..9b1514d20 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 @@ -664,6 +664,7 @@ You should also get your employer (if you work as a programmer) or school, package com.jdimension.jlawyer.client.editors.files; import com.jdimension.jlawyer.client.components.MultiCalDialog; +import com.jdimension.jlawyer.client.configuration.UserListCellRenderer; import com.jdimension.jlawyer.client.editors.EditorsRegistry; import com.jdimension.jlawyer.client.events.Event; import com.jdimension.jlawyer.client.events.EventBroker; @@ -683,6 +684,7 @@ You should also get your employer (if you work as a programmer) or school, import com.jdimension.jlawyer.client.utils.TableUtils; import com.jdimension.jlawyer.persistence.AddressBean; import com.jdimension.jlawyer.persistence.AppOptionGroupBean; +import com.jdimension.jlawyer.persistence.AppUserBean; import com.jdimension.jlawyer.persistence.ArchiveFileBean; import com.jdimension.jlawyer.persistence.ArchiveFileDocumentsBean; import com.jdimension.jlawyer.persistence.CaseAccountEntry; @@ -697,6 +699,10 @@ You should also get your employer (if you work as a programmer) or school, import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.StringWriter; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.time.LocalDateTime; @@ -724,6 +730,14 @@ You should also get your employer (if you work as a programmer) or school, import org.apache.log4j.Logger; import org.jlawyer.plugins.calculation.Cell; import org.jlawyer.plugins.calculation.StyledCalculationTable; +import org.mustangproject.BankDetails; +import org.mustangproject.Contact; +import org.mustangproject.Item; +import org.mustangproject.Product; +import org.mustangproject.TradeParty; +import org.mustangproject.ZUGFeRD.IZUGFeRDPaymentTerms; +import org.mustangproject.ZUGFeRD.Profiles; +import org.mustangproject.ZUGFeRD.ZUGFeRD2PullProvider; import themes.colors.DefaultColorTheme; /** @@ -771,7 +785,6 @@ public InvoiceDialog(ArchiveFilePanel caseView, ArchiveFileBean caseDto, java.aw this.jScrollPane1.getVerticalScrollBar().setUnitIncrement(16); this.jScrollPane2.getVerticalScrollBar().setUnitIncrement(16); - this.lblInvoiceDocument.setForeground(DefaultColorTheme.COLOR_DARK_GREY); this.lblHeader.setBackground(DefaultColorTheme.COLOR_DARK_GREY); this.textSearchPositionTemplate.putClientProperty("JTextField.showClearButton", true); @@ -947,6 +960,18 @@ public Component getTableCellRendererComponent(JTable table, Object value, boole this.textSearchPositionTemplateKeyReleased(null); this.lstPositionTemplates.setSelectedValue(null, false); + + List allUsers = UserSettings.getInstance().getLoginEnabledUsers(); + List l2 = new ArrayList<>(); + l2.add(""); + for (AppUserBean aub: allUsers) { + l2.add(aub.getPrincipalId()); + } + String[] userItems = l2.toArray(new String[0]); + StringUtils.sortIgnoreCase(userItems); + OptionsComboBoxModel userModel = new OptionsComboBoxModel(userItems); + this.cmbInvoiceSender.setModel(userModel); + this.cmbInvoiceSender.setRenderer(new UserListCellRenderer()); EventBroker b = EventBroker.getInstance(); b.subscribeConsumer(this, Event.TYPE_INVOICEPOSITIONADDED); @@ -968,16 +993,18 @@ public final void setEntry(Invoice invoice) { this.cmdCalculation.setEnabled(invoice != null && invoice.getId() != null); this.cmdTimesheetPositions.setEnabled(invoice != null && invoice.getId() != null); this.cmdApplyPositionTemplate.setEnabled(invoice != null && invoice.getId() != null); - this.cmdCreateInvoiceDocument.setEnabled(invoice != null && invoice.getId() != null); - this.cmdUploadInvoiceDocument.setEnabled(invoice != null && invoice.getId() != null); + this.cmdCreateInvoiceDocumentClassic.setEnabled(invoice != null && invoice.getId() != null); + this.cmdUploadInvoiceDocumentClassic.setEnabled(invoice != null && invoice.getId() != null); this.textSearchPositionTemplate.setEnabled(invoice != null && invoice.getId() != null); this.lstPositionTemplates.setEnabled(invoice != null && invoice.getId() != null); this.cmdSave.setEnabled(invoice != null && invoice.getId() != null); + this.cmbInvoiceSender.setSelectedItem(UserSettings.getInstance().getCurrentUser().getPrincipalId()); + this.currentEntry = invoice; - this.cmdNavigateToDocument.setEnabled(false); - this.cmdViewDocument.setEnabled(false); + this.cmdNavigateToDocumentClassic.setEnabled(false); + this.cmdViewDocumentClassic.setEnabled(false); this.clearPositionsPanel(); @@ -1019,14 +1046,22 @@ public final void setEntry(Invoice invoice) { if (invoice.getInvoiceType() != null) { this.cmbInvoiceType.setSelectedItem(invoice.getInvoiceType()); } + + if (invoice.getSender() != null) { + if (!ComponentUtils.containsItem(cmbInvoiceSender, invoice.getSender())) { + this.cmbInvoiceSender.addItem(invoice.getSender()); + } + this.cmbInvoiceSender.setSelectedItem(invoice.getSender()); + } + for (InvoicePool pl : this.invoicePools.values()) { if (pl.getId().equals(invoice.getLastPoolId())) { this.cmbInvoicePool.setSelectedItem(pl.getDisplayName()); } } if (invoice.getInvoiceDocument() != null) { - this.cmdNavigateToDocument.setEnabled(true); - this.cmdViewDocument.setEnabled(true); + this.cmdNavigateToDocumentClassic.setEnabled(true); + this.cmdViewDocumentClassic.setEnabled(true); } this.recipientAddress = invoice.getContact(); if (invoice.getContact() != null) { @@ -1104,25 +1139,20 @@ private void initComponents() { dtDue = new javax.swing.JTextField(); dtTo = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); - cmdNavigateToDocument = new javax.swing.JButton(); cmbCurrency = new javax.swing.JComboBox<>(); jLabel6 = new javax.swing.JLabel(); cmdDatePeriodTo = new javax.swing.JButton(); - cmdCreateInvoiceDocument = new javax.swing.JButton(); cmdDateDue = new javax.swing.JButton(); - cmdUploadInvoiceDocument = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); dtCreated = new javax.swing.JTextField(); dtFrom = new javax.swing.JTextField(); txtName = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); - cmbTableHeadersLanguage = new javax.swing.JComboBox<>(); jScrollPane1 = new javax.swing.JScrollPane(); taDescription = new javax.swing.JTextArea(); cmdDateCreated = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); - jSeparator1 = new javax.swing.JSeparator(); lblHeader = new javax.swing.JPanel(); cmbStatus = new javax.swing.JComboBox<>(); cmbInvoicePool = new javax.swing.JComboBox<>(); @@ -1133,11 +1163,12 @@ private void initComponents() { cmbInvoiceType = new javax.swing.JComboBox<>(); cmdGiroCode = new javax.swing.JButton(); cmdDatePeriodFrom = new javax.swing.JButton(); - cmdViewDocument = new javax.swing.JButton(); - lblInvoiceDocument = new javax.swing.JLabel(); lblRecipient = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); cmdSearchRecipient = new javax.swing.JButton(); + cmbInvoiceSender = new javax.swing.JComboBox<>(); + jLabel17 = new javax.swing.JLabel(); + jLabel18 = new javax.swing.JLabel(); splitMain = new javax.swing.JSplitPane(); jPanel2 = new javax.swing.JPanel(); cmdAddPosition = new javax.swing.JButton(); @@ -1157,6 +1188,19 @@ private void initComponents() { chkTaxes = new javax.swing.JCheckBox(); jScrollPane2 = new javax.swing.JScrollPane(); pnlInvoicePositions = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + jSeparator1 = new javax.swing.JSeparator(); + cmdCreateInvoiceDocumentClassic = new javax.swing.JButton(); + cmbTableHeadersLanguage = new javax.swing.JComboBox<>(); + cmdUploadInvoiceDocumentClassic = new javax.swing.JButton(); + cmdViewDocumentClassic = new javax.swing.JButton(); + cmdNavigateToDocumentClassic = new javax.swing.JButton(); + jLabel15 = new javax.swing.JLabel(); + cmdViewDocumentXml = new javax.swing.JButton(); + cmdNavigateToDocumentXml = new javax.swing.JButton(); + jLabel16 = new javax.swing.JLabel(); + cmdCreateInvoiceDocumentXml = new javax.swing.JButton(); + Hochladen = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); jScrollPane4 = new javax.swing.JScrollPane(); tblPayments = new javax.swing.JTable(); @@ -1202,14 +1246,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabel3.setFont(jLabel3.getFont()); jLabel3.setText("Zeitraum:"); - cmdNavigateToDocument.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/mail_forward.png"))); // NOI18N - cmdNavigateToDocument.setToolTipText("zum Dokument wechseln"); - cmdNavigateToDocument.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNavigateToDocumentActionPerformed(evt); - } - }); - cmbCurrency.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); jLabel6.setFont(jLabel6.getFont()); @@ -1222,14 +1258,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - cmdCreateInvoiceDocument.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/editcopy.png"))); // NOI18N - cmdCreateInvoiceDocument.setToolTipText("Dokument erzeugen"); - cmdCreateInvoiceDocument.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdCreateInvoiceDocumentActionPerformed(evt); - } - }); - cmdDateDue.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/schedule.png"))); // NOI18N cmdDateDue.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1237,14 +1265,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - cmdUploadInvoiceDocument.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons16/material/baseline_file_upload_black_48dp.png"))); // NOI18N - cmdUploadInvoiceDocument.setToolTipText("Dokument zum Beleg laden"); - cmdUploadInvoiceDocument.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdUploadInvoiceDocumentActionPerformed(evt); - } - }); - jLabel4.setFont(jLabel4.getFont()); jLabel4.setText("-"); @@ -1263,9 +1283,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabel5.setFont(jLabel5.getFont()); jLabel5.setText("fällig:"); - cmbTableHeadersLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "DE", "EN", "FR", "NL" })); - cmbTableHeadersLanguage.setToolTipText("Sprache der Tabellenspaltenbezeichner"); - taDescription.setColumns(20); taDescription.setFont(taDescription.getFont()); taDescription.setRows(5); @@ -1373,17 +1390,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - cmdViewDocument.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/find.png"))); // NOI18N - cmdViewDocument.setToolTipText("Dokument anzeigen"); - cmdViewDocument.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdViewDocumentActionPerformed(evt); - } - }); - - lblInvoiceDocument.setFont(lblInvoiceDocument.getFont().deriveFont(lblInvoiceDocument.getFont().getStyle() | java.awt.Font.BOLD, lblInvoiceDocument.getFont().getSize()-2)); - lblInvoiceDocument.setText("Dokument zum Beleg:"); - lblRecipient.setFont(lblRecipient.getFont()); lblRecipient.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/warning.png"))); // NOI18N lblRecipient.setText("Empfänger ..."); @@ -1397,6 +1403,15 @@ public void mousePressed(java.awt.event.MouseEvent evt) { } }); + cmbInvoiceSender.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + + jLabel17.setFont(jLabel17.getFont()); + jLabel17.setText("Sender:"); + + jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel18.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/info.png"))); // NOI18N + jLabel18.setToolTipText("Anhand des Rechnungssenders bestimmen sich u.a. Absender und Zahlungsinformationen \nfür die elektronische Rechnung. \nBitte sicherstellen, dass diese Informationen aktuell sind (Administration - Nutzerverwaltung)."); + javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( @@ -1412,52 +1427,40 @@ public void mousePressed(java.awt.event.MouseEvent evt) { .addComponent(jLabel5) .addComponent(jLabel6) .addComponent(jLabel3) - .addComponent(jLabel7)) + .addComponent(jLabel7) + .addComponent(jLabel17)) .addGap(21, 21, 21) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtName) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 709, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 718, Short.MAX_VALUE) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(dtCreated, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdDateCreated)) .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(lblRecipient, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(dtFrom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSearchRecipient)) + .addComponent(cmdDatePeriodFrom) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dtTo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdDatePeriodTo)) .addGroup(jPanel4Layout.createSequentialGroup() + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(dtDue) + .addComponent(cmbCurrency, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdDateDue)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(dtCreated, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdDateCreated)) - .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(dtFrom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdDatePeriodFrom) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel4) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dtTo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdDatePeriodTo)) - .addGroup(jPanel4Layout.createSequentialGroup() - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(dtDue) - .addComponent(cmbCurrency, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdDateDue))) - .addGap(0, 0, Short.MAX_VALUE)))) - .addComponent(jSeparator1) - .addGroup(jPanel4Layout.createSequentialGroup() - .addComponent(lblInvoiceDocument) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdCreateInvoiceDocument) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmbTableHeadersLanguage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdUploadInvoiceDocument) - .addGap(18, 18, 18) - .addComponent(cmdViewDocument) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdNavigateToDocument) - .addGap(0, 0, Short.MAX_VALUE))) + .addComponent(lblRecipient, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmbInvoiceSender, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel18, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmdSearchRecipient, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( @@ -1465,13 +1468,19 @@ public void mousePressed(java.awt.event.MouseEvent evt) { .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(lblHeader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmbInvoiceSender, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel17)) + .addComponent(jLabel18, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(lblRecipient, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.LEADING)) .addComponent(cmdSearchRecipient)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) @@ -1479,7 +1488,7 @@ public void mousePressed(java.awt.event.MouseEvent evt) { .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(dtCreated, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel7) @@ -1499,17 +1508,7 @@ public void mousePressed(java.awt.event.MouseEvent evt) { .addComponent(cmdDateDue)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cmbCurrency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdCreateInvoiceDocument, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdNavigateToDocument, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdViewDocument, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdUploadInvoiceDocument, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmbTableHeadersLanguage, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(lblInvoiceDocument, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(84, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Kopf", jPanel4); @@ -1693,6 +1692,146 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jTabbedPane1.addTab("Positionen", splitMain); + cmdCreateInvoiceDocumentClassic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/editcopy.png"))); // NOI18N + cmdCreateInvoiceDocumentClassic.setText("Erstellen"); + cmdCreateInvoiceDocumentClassic.setToolTipText("Dokument erzeugen"); + cmdCreateInvoiceDocumentClassic.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdCreateInvoiceDocumentClassicActionPerformed(evt); + } + }); + + cmbTableHeadersLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "DE", "EN", "FR", "NL" })); + cmbTableHeadersLanguage.setToolTipText("Sprache der Tabellenspaltenbezeichner"); + + cmdUploadInvoiceDocumentClassic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons16/material/baseline_file_upload_black_48dp.png"))); // NOI18N + cmdUploadInvoiceDocumentClassic.setText("Hochladen"); + cmdUploadInvoiceDocumentClassic.setToolTipText("Dokument zum Beleg laden"); + cmdUploadInvoiceDocumentClassic.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdUploadInvoiceDocumentClassicActionPerformed(evt); + } + }); + + cmdViewDocumentClassic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/find.png"))); // NOI18N + cmdViewDocumentClassic.setToolTipText("Dokument anzeigen"); + cmdViewDocumentClassic.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdViewDocumentClassicActionPerformed(evt); + } + }); + + cmdNavigateToDocumentClassic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/mail_forward.png"))); // NOI18N + cmdNavigateToDocumentClassic.setToolTipText("zum Dokument wechseln"); + cmdNavigateToDocumentClassic.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdNavigateToDocumentClassicActionPerformed(evt); + } + }); + + jLabel15.setFont(jLabel15.getFont()); + jLabel15.setText("Rechnungsdokument"); + + cmdViewDocumentXml.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/find.png"))); // NOI18N + cmdViewDocumentXml.setToolTipText("Dokument anzeigen"); + cmdViewDocumentXml.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdViewDocumentXmlActionPerformed(evt); + } + }); + + cmdNavigateToDocumentXml.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/mail_forward.png"))); // NOI18N + cmdNavigateToDocumentXml.setToolTipText("zum Dokument wechseln"); + cmdNavigateToDocumentXml.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdNavigateToDocumentXmlActionPerformed(evt); + } + }); + + jLabel16.setText("elektronische Rechnung"); + + cmdCreateInvoiceDocumentXml.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/editcopy.png"))); // NOI18N + cmdCreateInvoiceDocumentXml.setText("Erstellen"); + cmdCreateInvoiceDocumentXml.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdCreateInvoiceDocumentXmlActionPerformed(evt); + } + }); + + Hochladen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons16/material/baseline_file_upload_black_48dp.png"))); // NOI18N + Hochladen.setText("Hochladen"); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(cmdViewDocumentClassic) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdNavigateToDocumentClassic)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(cmdViewDocumentXml) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdNavigateToDocumentXml))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel15) + .addComponent(jLabel16))) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(24, 24, 24) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(cmdCreateInvoiceDocumentClassic) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmbTableHeadersLanguage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(cmdUploadInvoiceDocumentClassic) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(3, 3, 3) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cmdCreateInvoiceDocumentXml) + .addComponent(Hochladen)))))) + .addGap(0, 597, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jSeparator1))) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdNavigateToDocumentClassic) + .addComponent(cmdViewDocumentClassic) + .addComponent(jLabel15, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdCreateInvoiceDocumentClassic, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmbTableHeadersLanguage)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdUploadInvoiceDocumentClassic, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 4, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(cmdNavigateToDocumentXml, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmdViewDocumentXml, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel16, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdCreateInvoiceDocumentXml) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(Hochladen) + .addContainerGap()) + ); + + jTabbedPane1.addTab("Dokumente", jPanel1); + tblPayments.setAutoCreateRowSorter(true); tblPayments.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { @@ -1909,6 +2048,7 @@ private void fillCurrentEntry() throws Exception { this.currentEntry.setSmallBusiness(this.chkTaxes.isSelected()); this.currentEntry.setContact(this.recipientAddress); this.currentEntry.setCurrency(this.cmbCurrency.getSelectedItem().toString()); + this.currentEntry.setSender(this.cmbInvoiceSender.getSelectedItem().toString()); } private void save() { @@ -2169,7 +2309,7 @@ private void formatFooterRow(StyledCalculationTable ct, int footerRowIndex) { ct.getCellAt(footerRowIndex, 1).setItalic(true); ct.getCellAt(footerRowIndex, 2).setItalic(true); ct.getCellAt(footerRowIndex, 3).setItalic(true); - ct.getCellAt(footerRowIndex,4).setItalic(true); + ct.getCellAt(footerRowIndex, 4).setItalic(true); ct.getCellAt(footerRowIndex, 5).setItalic(true); } else { ct.getCellAt(footerRowIndex, 1).setItalic(false); @@ -2264,7 +2404,7 @@ private void cmdRemoveAllPositionsActionPerformed(java.awt.event.ActionEvent evt if (response == JOptionPane.NO_OPTION) { return; } - + ClientSettings settings = ClientSettings.getInstance(); try { JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(settings.getLookupProperties()); @@ -2291,7 +2431,7 @@ private void cmdSearchRecipientMousePressed(java.awt.event.MouseEvent evt) {//GE this.popRecipients.show(this.cmdSearchRecipient, evt.getX(), evt.getY()); }//GEN-LAST:event_cmdSearchRecipientMousePressed - private void cmdCreateInvoiceDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCreateInvoiceDocumentActionPerformed + private void cmdCreateInvoiceDocumentClassicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCreateInvoiceDocumentClassicActionPerformed if (this.caseView != null) { if (this.currentEntry != null) { this.save(); @@ -2306,11 +2446,11 @@ private void cmdCreateInvoiceDocumentActionPerformed(java.awt.event.ActionEvent 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); } - - byte[] giroCode=null; + + byte[] giroCode = null; try { JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); - if(this.currentEntry!=null) { + if (this.currentEntry != null) { giroCode = locator.lookupInvoiceServiceRemote().getGiroCode(this.currentEntry.getTotalGross(), this.currentEntry.getInvoiceNumber()); } } catch (Exception ex) { @@ -2328,13 +2468,13 @@ private void cmdCreateInvoiceDocumentActionPerformed(java.awt.event.ActionEvent log.error("error loading invoice document", ex); JOptionPane.showMessageDialog(this, "Fehler beim Laden des Belegdokuments: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } - this.cmdViewDocument.setEnabled(true); - this.cmdNavigateToDocument.setEnabled(true); + this.cmdViewDocumentClassic.setEnabled(true); + this.cmdNavigateToDocumentClassic.setEnabled(true); } } - }//GEN-LAST:event_cmdCreateInvoiceDocumentActionPerformed + }//GEN-LAST:event_cmdCreateInvoiceDocumentClassicActionPerformed - private void cmdViewDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdViewDocumentActionPerformed + private void cmdViewDocumentClassicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdViewDocumentClassicActionPerformed if (this.currentEntry != null && this.currentEntry.getInvoiceDocument() != null) { try { @@ -2353,12 +2493,12 @@ private void cmdViewDocumentActionPerformed(java.awt.event.ActionEvent evt) {//G JOptionPane.showMessageDialog(this, "Fehler beim Öffnen des Dokuments: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } } - }//GEN-LAST:event_cmdViewDocumentActionPerformed + }//GEN-LAST:event_cmdViewDocumentClassicActionPerformed - private void cmdNavigateToDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNavigateToDocumentActionPerformed + private void cmdNavigateToDocumentClassicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNavigateToDocumentClassicActionPerformed if (this.caseView != null && this.currentEntry != null && this.currentEntry.getInvoiceDocument() != null) this.caseView.selectDocument(this.currentEntry.getInvoiceDocument().getName()); - }//GEN-LAST:event_cmdNavigateToDocumentActionPerformed + }//GEN-LAST:event_cmdNavigateToDocumentClassicActionPerformed private void chkTaxesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkTaxesActionPerformed this.updateTotals(null); @@ -2409,7 +2549,7 @@ private void textSearchPositionTemplateKeyReleased(java.awt.event.KeyEvent evt) } }//GEN-LAST:event_textSearchPositionTemplateKeyReleased - private void cmdUploadInvoiceDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdUploadInvoiceDocumentActionPerformed + private void cmdUploadInvoiceDocumentClassicActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdUploadInvoiceDocumentClassicActionPerformed if (this.caseView != null) { if (this.currentEntry != null) { this.save(); @@ -2424,11 +2564,11 @@ private void cmdUploadInvoiceDocumentActionPerformed(java.awt.event.ActionEvent log.error("error loading invoice document", ex); JOptionPane.showMessageDialog(this, "Fehler beim Laden des Belegdokuments: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } - this.cmdViewDocument.setEnabled(true); - this.cmdNavigateToDocument.setEnabled(true); + this.cmdViewDocumentClassic.setEnabled(true); + this.cmdNavigateToDocumentClassic.setEnabled(true); } } - }//GEN-LAST:event_cmdUploadInvoiceDocumentActionPerformed + }//GEN-LAST:event_cmdUploadInvoiceDocumentClassicActionPerformed private void lstPositionTemplatesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstPositionTemplatesMouseClicked if (evt.getClickCount() == 2) { @@ -2444,15 +2584,15 @@ private void cmdTimesheetPositionsActionPerformed(java.awt.event.ActionEvent evt private void cmdGiroCodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGiroCodeActionPerformed try { - float amount=0f; - boolean validAmount=false; + float amount = 0f; + boolean validAmount = false; try { - amount=cf.parse(this.lblInvoiceTotal.getText()).floatValue(); - validAmount=true; + amount = cf.parse(this.lblInvoiceTotal.getText()).floatValue(); + validAmount = true; } catch (Throwable t) { log.error("error parsing invoice total: " + this.lblInvoiceTotal.getText(), t); } - if(validAmount) { + if (validAmount) { GirocodeDialog gcd = new GirocodeDialog(this, true, amount, this.lblInvoiceNumber.getText()); FrameUtils.centerDialog(gcd, this); gcd.setVisible(true); @@ -2466,6 +2606,151 @@ private void cmdGiroCodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F }//GEN-LAST:event_cmdGiroCodeActionPerformed + private void cmdViewDocumentXmlActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdViewDocumentXmlActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_cmdViewDocumentXmlActionPerformed + + private void cmdNavigateToDocumentXmlActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNavigateToDocumentXmlActionPerformed + // TODO add your handling code here: + }//GEN-LAST:event_cmdNavigateToDocumentXmlActionPerformed + + private void cmdCreateInvoiceDocumentXmlActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCreateInvoiceDocumentXmlActionPerformed + if (this.caseView != null) { + if (this.currentEntry != null) { + this.save(); + } + + if(this.currentEntry.getSender()==null) { + JOptionPane.showMessageDialog(this, "Es ist kein Rechnungssender definiert, E-Rechnung kann nicht erstellt werden.", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + + AppUserBean senderUser=null; + try { + JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); + senderUser = locator.lookupSystemManagementRemote().getUser(currentEntry.getSender()); + if(senderUser==null) { + JOptionPane.showMessageDialog(this, "Rechnungssender '" + currentEntry.getSender() + " kann nicht gefunden werden.", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + } catch (Exception ex) { + log.error("error getting invoice sender", ex); + JOptionPane.showMessageDialog(this, "Rechnungssender '" + currentEntry.getSender() + " kann nicht gefunden werden: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); + return; + } + + org.mustangproject.Invoice i = new org.mustangproject.Invoice(); + //i.setReferenceNumber("991-01484-64")//leitweg-id + i.setNumber(this.currentEntry.getInvoiceNumber()); + i.setDueDate(this.currentEntry.getDueDate()); + i.setIssueDate(this.currentEntry.getCreationDate()); + i.setDetailedDeliveryPeriod(this.currentEntry.getPeriodFrom(), this.currentEntry.getPeriodTo()); + + if (StringUtils.isEmpty(senderUser.getCompany()) + || StringUtils.isEmpty(senderUser.getStreet()) + || StringUtils.isEmpty(senderUser.getZipCode()) + || StringUtils.isEmpty(senderUser.getCity()) + || StringUtils.isEmpty(senderUser.getCountryCodeInvoicing()) + ) { + JOptionPane.showMessageDialog(this, "Informationen des Rechnungssenders unvollständig: Adresse. Bitte im Menü 'Administration' - 'Nutzerverwaltung' ergänzen", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + TradeParty sender = new TradeParty(senderUser.getCompany(), senderUser.getStreet(), senderUser.getZipCode(), senderUser.getCity(), senderUser.getCountryCodeInvoicing()); + if(!StringUtils.isEmpty(senderUser.getAdjunct())) + sender.setAdditionalAddressExtension(senderUser.getAdjunct()); + if(!StringUtils.isEmpty(senderUser.getTaxNr())) + sender.addTaxID(senderUser.getTaxNr()); + if(!StringUtils.isEmpty(senderUser.getTaxVatId())) + sender.addVATID(senderUser.getTaxVatId()); + + + if (StringUtils.isEmpty(senderUser.getBankBic()) + || StringUtils.isEmpty(senderUser.getBankIban()) + ) { + JOptionPane.showMessageDialog(this, "Informationen des Rechnungssenders unvollständig: Bankverbindung. Bitte im Menü 'Administration' - 'Nutzerverwaltung' ergänzen", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + // zahlung per überweisung + sender.addBankDetails(new BankDetails(senderUser.getBankIban(), senderUser.getBankBic())); + // zahlug per lastschrift + //sender.addDebitDetails(debitDetail); + + + if (StringUtils.isEmpty(senderUser.getDisplayName()) + || StringUtils.isEmpty(senderUser.getPhone()) + || StringUtils.isEmpty(senderUser.getEmail())) { + JOptionPane.showMessageDialog(this, "Informationen des Rechnungssenders unvollständig: Anzeigename/Telefon/E-Mail. Bitte im Menü 'Administration' - 'Nutzerverwaltung' ergänzen", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + sender.setContact(new Contact(senderUser.getDisplayName(), senderUser.getPhone(), senderUser.getEmail())); + + i.setSender(sender); + + if(currentEntry.getContact()==null) { + JOptionPane.showMessageDialog(this, "Rechnungsempfänger fehlt.", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + if (StringUtils.isEmpty(currentEntry.getContact().toDisplayName()) + || StringUtils.isEmpty(currentEntry.getContact().getStreet()) + || StringUtils.isEmpty(currentEntry.getContact().getZipCode()) + || StringUtils.isEmpty(currentEntry.getContact().getCity()) + ) { + JOptionPane.showMessageDialog(this, "Informationen des Rechnungsempfängers unvollständig: Adresse.", com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_WARNING, JOptionPane.WARNING_MESSAGE); + return; + } + i.setRecipient(new TradeParty(currentEntry.getContact().toDisplayName(), currentEntry.getContact().getStreet() + " " + currentEntry.getContact().getStreetNumber(), currentEntry.getContact().getZipCode(), currentEntry.getContact().getCity(), "DE")); + + List positions = null; + try { + JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); + positions = locator.lookupArchiveFileServiceRemote().getInvoicePositions(this.currentEntry.getId()); + } catch (Exception ex) { + log.error("error getting invoice positions", ex); + JOptionPane.showMessageDialog(this, "Fehler beim Laden der Rechnungspositionen: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); + return; + } + + // line items + for (InvoicePosition pos : positions) { + float taxRate = pos.getTaxRate(); + if (!this.currentEntry.isSmallBusiness()) { + taxRate = 0f; + } + i.addItem(new Item(new Product(pos.getName(), pos.getDescription(), "C62", new BigDecimal(taxRate)), /*price*/ new BigDecimal(pos.getUnitPrice()), /*qty*/ new BigDecimal(pos.getUnits()))); + } + + ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider(); + zf2p.setProfile(Profiles.getByName("XRechnung")); + zf2p.generateXML(i); + String theXML = new String(zf2p.getXML()); + try { + StringWriter sw = new StringWriter(); + //BufferedWriter writer = new BufferedWriter(new FileWriter("xrechnung.xml")); + BufferedWriter writer = new BufferedWriter(sw); + writer.write(theXML); + writer.close(); + System.out.println("e-Invoice:"); + System.out.println(sw.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + +// ArchiveFileDocumentsBean invoiceDoc = this.caseView.newDocumentDialog(null, currentEntry, this.getInvoicePositionsAsTable(this.cmbTableHeadersLanguage.getSelectedItem().toString()), timesheetPosTable, giroCode); +// if (this.currentEntry != null) { +// this.save(); +// try { +// JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(ClientSettings.getInstance().getLookupProperties()); +// currentEntry.setInvoiceDocument(locator.lookupArchiveFileServiceRemote().getInvoiceDocument(currentEntry.getId())); +// } catch (Exception ex) { +// log.error("error loading invoice document", ex); +// JOptionPane.showMessageDialog(this, "Fehler beim Laden des Belegdokuments: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); +// } +// this.cmdViewDocumentClassic.setEnabled(true); +// this.cmdNavigateToDocumentClassic.setEnabled(true); +// } + } + }//GEN-LAST:event_cmdCreateInvoiceDocumentXmlActionPerformed + /** * @param args the command line arguments */ @@ -2507,9 +2792,11 @@ public void windowClosing(java.awt.event.WindowEvent e) { } // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton Hochladen; private javax.swing.JCheckBox chkTaxes; private javax.swing.JComboBox cmbCurrency; private javax.swing.JComboBox cmbInvoicePool; + private javax.swing.JComboBox cmbInvoiceSender; private javax.swing.JComboBox cmbInvoiceType; private javax.swing.JComboBox cmbStatus; private javax.swing.JComboBox cmbTableHeadersLanguage; @@ -2518,19 +2805,22 @@ public void windowClosing(java.awt.event.WindowEvent e) { private javax.swing.JButton cmdCalculation; private javax.swing.JButton cmdCancel; private javax.swing.JButton cmdConfirmInvoiceNumber; - private javax.swing.JButton cmdCreateInvoiceDocument; + private javax.swing.JButton cmdCreateInvoiceDocumentClassic; + private javax.swing.JButton cmdCreateInvoiceDocumentXml; private javax.swing.JButton cmdDateCreated; private javax.swing.JButton cmdDateDue; private javax.swing.JButton cmdDatePeriodFrom; private javax.swing.JButton cmdDatePeriodTo; private javax.swing.JButton cmdGiroCode; - private javax.swing.JButton cmdNavigateToDocument; + private javax.swing.JButton cmdNavigateToDocumentClassic; + private javax.swing.JButton cmdNavigateToDocumentXml; private javax.swing.JButton cmdRemoveAllPositions; private javax.swing.JButton cmdSave; private javax.swing.JButton cmdSearchRecipient; private javax.swing.JButton cmdTimesheetPositions; - private javax.swing.JButton cmdUploadInvoiceDocument; - private javax.swing.JButton cmdViewDocument; + private javax.swing.JButton cmdUploadInvoiceDocumentClassic; + private javax.swing.JButton cmdViewDocumentClassic; + private javax.swing.JButton cmdViewDocumentXml; private javax.swing.JTextField dtCreated; private javax.swing.JTextField dtDue; private javax.swing.JTextField dtFrom; @@ -2541,6 +2831,10 @@ public void windowClosing(java.awt.event.WindowEvent e) { private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel17; + private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -2549,6 +2843,7 @@ public void windowClosing(java.awt.event.WindowEvent e) { private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; @@ -2559,7 +2854,6 @@ public void windowClosing(java.awt.event.WindowEvent e) { private javax.swing.JSeparator jSeparator1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JPanel lblHeader; - private javax.swing.JLabel lblInvoiceDocument; private javax.swing.JLabel lblInvoiceNumber; private javax.swing.JLabel lblInvoiceTax; private javax.swing.JLabel lblInvoiceTotal; diff --git a/j-lawyer-invoicing/dependency-reduced-pom.xml b/j-lawyer-invoicing/dependency-reduced-pom.xml index 920437a32..65f48ef08 100644 --- a/j-lawyer-invoicing/dependency-reduced-pom.xml +++ b/j-lawyer-invoicing/dependency-reduced-pom.xml @@ -54,6 +54,7 @@ org.jlawyer.** org.xml.** + org.mustangproject.** diff --git a/j-lawyer-invoicing/pom.xml b/j-lawyer-invoicing/pom.xml index 9623be27f..a8c1eba7a 100644 --- a/j-lawyer-invoicing/pom.xml +++ b/j-lawyer-invoicing/pom.xml @@ -100,6 +100,7 @@ org.jlawyer.** org.xml.** + org.mustangproject.** diff --git a/j-lawyer-server-entities/src/java/com/jdimension/jlawyer/persistence/Invoice.java b/j-lawyer-server-entities/src/java/com/jdimension/jlawyer/persistence/Invoice.java index 92a38ced7..2e7a7175f 100644 --- a/j-lawyer-server-entities/src/java/com/jdimension/jlawyer/persistence/Invoice.java +++ b/j-lawyer-server-entities/src/java/com/jdimension/jlawyer/persistence/Invoice.java @@ -745,10 +745,15 @@ public class Invoice implements Serializable { @Column(name = "small_business") protected boolean smallBusiness=true; + // invoice recipient @JoinColumn(name = "contact_id", referencedColumnName = "id") @ManyToOne(fetch = FetchType.EAGER) protected AddressBean contact; + // invoice sender + @Column(name = "sender_id") + private String sender; + @Column(name = "total") protected float total=0f; @@ -759,12 +764,16 @@ public class Invoice implements Serializable { @OneToOne(fetch = FetchType.EAGER) protected ArchiveFileDocumentsBean invoiceDocument; + @JoinColumn(name = "einvoice_document", referencedColumnName = "id") + @OneToOne(fetch = FetchType.EAGER) + private ArchiveFileDocumentsBean electronicInvoiceDocument; + @Column(name = "currency") protected String currency="EUR"; @Column(name = "last_pool_id") protected String lastPoolId; - + public Invoice() { } @@ -1099,5 +1108,33 @@ public float getTotalGross() { public void setTotalGross(float totalGross) { this.totalGross = totalGross; } + + /** + * @return the sender + */ + public String getSender() { + return sender; + } + + /** + * @param sender the sender to set + */ + public void setSender(String sender) { + this.sender = sender; + } + + /** + * @return the electronicInvoiceDocument + */ + public ArchiveFileDocumentsBean getElectronicInvoiceDocument() { + return electronicInvoiceDocument; + } + + /** + * @param electronicInvoiceDocument the electronicInvoiceDocument to set + */ + public void setElectronicInvoiceDocument(ArchiveFileDocumentsBean electronicInvoiceDocument) { + this.electronicInvoiceDocument = electronicInvoiceDocument; + } } diff --git a/j-lawyer-server-entities/src/java/db/migration/V2_7_0_7__AddSenderToInvoice.sql b/j-lawyer-server-entities/src/java/db/migration/V2_7_0_7__AddSenderToInvoice.sql new file mode 100644 index 000000000..52da4c321 --- /dev/null +++ b/j-lawyer-server-entities/src/java/db/migration/V2_7_0_7__AddSenderToInvoice.sql @@ -0,0 +1,7 @@ +alter table invoices add `sender_id` VARCHAR(50) BINARY DEFAULT NULL; + +alter table invoices add `einvoice_document` VARCHAR(50) BINARY; +alter table invoices add CONSTRAINT einvoices_casedocuments_fk FOREIGN KEY (einvoice_document) REFERENCES case_documents (id) ON DELETE SET NULL; + +insert into server_settings(settingKey, settingValue) values('jlawyer.server.database.version','2.7.0.7') ON DUPLICATE KEY UPDATE settingValue = '2.7.0.7'; +commit; \ No newline at end of file diff --git a/j-lawyer-server/j-lawyer-server-ejb/nbproject/project.properties b/j-lawyer-server/j-lawyer-server-ejb/nbproject/project.properties index 19174b417..b8ca11034 100644 --- a/j-lawyer-server/j-lawyer-server-ejb/nbproject/project.properties +++ b/j-lawyer-server/j-lawyer-server-ejb/nbproject/project.properties @@ -22,7 +22,7 @@ file.reference.poi-excelant-4.1.2.jar=lib/poi/poi-excelant-4.1.2.jar file.reference.poi-ooxml-4.1.2.jar=lib/poi/poi-ooxml-4.1.2.jar file.reference.poi-ooxml-schemas-4.1.2.jar=lib/poi/poi-ooxml-schemas-4.1.2.jar file.reference.poi-scratchpad-4.1.2.jar=lib/poi/poi-scratchpad-4.1.2.jar -j2ee.platform.classpath=${j2ee.server.home}/modules/system/layers/base/javax/activation/api/main/jakarta.activation-1.2.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/annotation/api/main/jboss-annotations-api_1.3_spec-2.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/batch/api/main/jboss-batch-api_1.0_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/ejb/api/main/jboss-ejb-api_3.2_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/el/api/main/jboss-el-api_3.0_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/enterprise/api/main/jakarta.enterprise.cdi-api-2.0.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/enterprise/concurrent/api/main/jboss-concurrency-api_1.0_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/faces/api/main/jboss-jsf-api_2.3_spec-3.1.0.SP01.jar:${j2ee.server.home}/modules/system/layers/base/javax/inject/api/main/jakarta.inject-api-1.0.5.jar:${j2ee.server.home}/modules/system/layers/base/javax/interceptor/api/main/jboss-interceptors-api_1.2_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/jms/api/main/jboss-jms-api_2.0_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/json/api/main/jakarta.json-api-1.1.6.jar:${j2ee.server.home}/modules/system/layers/base/javax/json/bind/api/main/jakarta.json.bind-api-1.0.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/jws/api/main/jsr181-api-1.0-MR1.jar:${j2ee.server.home}/modules/system/layers/base/javax/mail/api/main/jakarta.mail-1.6.7.jar:${j2ee.server.home}/modules/system/layers/base/javax/management/j2ee/api/main/jboss-j2eemgmt-api_1.1_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/orb/api/main/openjdk-orb-8.1.7.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/persistence/api/main/jakarta.persistence-api-2.2.3.jar:${j2ee.server.home}/modules/system/layers/base/javax/resource/api/main/jboss-connector-api_1.7_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/auth/message/api/main/jboss-jaspi-api_1.1_spec-2.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/enterprise/api/main/jakarta.security.enterprise-api-1.0.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/jacc/api/main/jboss-jacc-api_1.5_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/api/main/jboss-servlet-api_4.0_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jsp/api/main/jboss-jsp-api_2.3_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-compat-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-impl-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-spec-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/transaction/api/main/jboss-transaction-api_1.3_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/validation/api/main/jakarta.validation-api-2.0.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/websocket/api/main/jboss-websocket-api_1.1_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/ws/rs/api/main/jboss-jaxrs-api_2.1_spec-2.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/wsdl4j/api/main/wsdl4j-1.6.3.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.3_spec-2.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/rpc/api/main/jboss-jaxrpc-api_1.1_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/soap/api/main/jboss-saaj-api_1.4_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/ws/api/main/jboss-jaxws-api_2.3_spec-2.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/org/glassfish/javax/enterprise/concurrent/main/jakarta.enterprise.concurrent-1.1.1.jar +j2ee.platform.classpath=${j2ee.server.home}/modules/system/layers/base/javax/activation/api/main/activation-1.1.1.jar:${j2ee.server.home}/modules/system/layers/base/javax/annotation/api/main/jboss-annotations-api_1.3_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/batch/api/main/jboss-batch-api_1.0_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/ejb/api/main/jboss-ejb-api_3.2_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/el/api/main/jboss-el-api_3.0_spec-1.0.13.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/enterprise/api/main/cdi-api-2.0.SP1.jar:${j2ee.server.home}/modules/system/layers/base/javax/enterprise/concurrent/api/main/jboss-concurrency-api_1.0_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/faces/api/main/jboss-jsf-api_2.3_spec-2.3.9.SP01.jar:${j2ee.server.home}/modules/system/layers/base/javax/inject/api/main/javax.inject-1.jar:${j2ee.server.home}/modules/system/layers/base/javax/interceptor/api/main/jboss-interceptors-api_1.2_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/jms/api/main/jboss-jms-api_2.0_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/json/api/main/javax.json-api-1.1.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/json/bind/api/main/javax.json.bind-api-1.0.jar:${j2ee.server.home}/modules/system/layers/base/javax/jws/api/main/jsr181-api-1.0-MR1.jar:${j2ee.server.home}/modules/system/layers/base/javax/mail/api/main/javax.mail-1.6.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/management/j2ee/api/main/jboss-j2eemgmt-api_1.1_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/orb/api/main/openjdk-orb-8.1.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/persistence/api/main/javax.persistence-api-2.2.jar:${j2ee.server.home}/modules/system/layers/base/javax/resource/api/main/jboss-connector-api_1.7_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/auth/message/api/main/jboss-jaspi-api_1.1_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/enterprise/api/main/javax.security.enterprise-api-1.0.jar:${j2ee.server.home}/modules/system/layers/base/javax/security/jacc/api/main/jboss-jacc-api_1.5_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/api/main/jboss-servlet-api_4.0_spec-1.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jsp/api/main/jboss-jsp-api_2.3_spec-1.0.3.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-compat-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-impl-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/servlet/jstl/api/main/taglibs-standard-spec-1.2.6-RC1.jar:${j2ee.server.home}/modules/system/layers/base/javax/transaction/api/main/jboss-transaction-api_1.2_spec-1.1.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/validation/api/main/validation-api-2.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/websocket/api/main/jboss-websocket-api_1.1_spec-1.1.3.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/ws/rs/api/main/jboss-jaxrs-api_2.1_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/wsdl4j/api/main/wsdl4j-1.6.3.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.3_spec-1.0.1.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/rpc/api/main/jboss-jaxrpc-api_1.1_spec-1.0.2.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/soap/api/main/jboss-saaj-api_1.3_spec-1.0.6.Final.jar:${j2ee.server.home}/modules/system/layers/base/javax/xml/ws/api/main/jboss-jaxws-api_2.3_spec-1.0.0.Final.jar:${j2ee.server.home}/modules/system/layers/base/org/glassfish/javax/el/main/javax.el-impl-3.0.1-b08-jbossorg-1.jar:${j2ee.server.home}/modules/system/layers/base/org/glassfish/javax/enterprise/concurrent/main/javax.enterprise.concurrent-1.0.jar:${j2ee.server.home}/modules/system/layers/base/org/glassfish/javax/json/main/javax.json-1.1.2.jar javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir}:\