PageRenderTime 56ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/src/mpv5/ui/panels/JournalPanel.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 1223 lines | 1035 code | 134 blank | 54 comment | 108 complexity | d433f5dba6b2624597f503a1ca595a41 MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. /*
  2. * This file is part of YaBS.
  3. *
  4. * YaBS is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * YaBS is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with YaBS. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /*
  18. * HistoryPanel.java
  19. *
  20. * Created on 30.03.2009, 12:05:51
  21. */
  22. package mpv5.ui.panels;
  23. import enoa.handler.TableHandler;
  24. import enoa.handler.TemplateHandler;
  25. import java.awt.Component;
  26. import java.awt.event.ActionEvent;
  27. import java.awt.event.ActionListener;
  28. import java.util.ArrayList;
  29. import java.util.Arrays;
  30. import java.util.Date;
  31. import java.util.HashMap;
  32. import java.util.List;
  33. import javax.swing.DefaultComboBoxModel;
  34. import javax.swing.DefaultListModel;
  35. import javax.swing.JComponent;
  36. import javax.swing.SwingUtilities;
  37. import javax.swing.table.DefaultTableModel;
  38. import javax.swing.table.TableCellRenderer;
  39. import javax.swing.table.TableModel;
  40. import mpv5.db.common.Context;
  41. import mpv5.db.common.DatabaseObject;
  42. import mpv5.db.common.DatabaseObject.Entity;
  43. import mpv5.db.common.NodataFoundException;
  44. import mpv5.db.common.QueryCriteria2;
  45. import mpv5.db.common.QueryHandler;
  46. import mpv5.db.common.QueryParameter;
  47. import mpv5.db.common.Templateable;
  48. import mpv5.db.objects.Account;
  49. import mpv5.db.objects.Contact;
  50. import mpv5.db.objects.Expense;
  51. import mpv5.globals.Headers;
  52. import mpv5.db.objects.Group;
  53. import mpv5.db.objects.Item;
  54. import mpv5.db.objects.Revenue;
  55. import mpv5.db.objects.Template;
  56. import mpv5.db.objects.User;
  57. import mpv5.globals.Constants;
  58. import mpv5.globals.Messages;
  59. import mpv5.logging.Log;
  60. import mpv5.ui.beans.MPCombobox;
  61. import mpv5.ui.dialogs.DialogForFile;
  62. import mpv5.ui.dialogs.Popup;
  63. import mpv5.ui.misc.MPTable;
  64. import mpv5.ui.popups.TablePopUp;
  65. import mpv5.utils.arrays.ArrayUtilities;
  66. import mpv5.utils.date.DateConverter;
  67. import mpv5.utils.date.vTimeframe;
  68. import mpv5.utils.export.DTAFile;
  69. import mpv5.utils.export.Export;
  70. import mpv5.utils.jobs.Job;
  71. import mpv5.utils.jobs.Waitable;
  72. import mpv5.utils.models.MPComboBoxModelItem;
  73. import mpv5.utils.models.MPTableModel;
  74. import mpv5.utils.models.MPTreeModel;
  75. import mpv5.utils.tables.ExcelAdapter;
  76. import mpv5.utils.tables.TableFormat;
  77. import mpv5.utils.text.TypeConversion;
  78. import mpv5.ui.misc.TableViewPersistenceHandler;
  79. import mpv5.utils.numberformat.FormatNumber;
  80. /**
  81. *
  82. * FIXME unpaid??
  83. */
  84. public class JournalPanel extends javax.swing.JPanel implements ListPanel {
  85. private static JournalPanel t;
  86. private static final long serialVersionUID = 1L;
  87. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  88. public static JComponent instanceOf() {
  89. if (t == null) {
  90. t = new JournalPanel();
  91. }
  92. return t;
  93. }
  94. private Contact dataOwner;
  95. private Template journalOrContactTemplate;
  96. /**
  97. * Creates new form HistoryPanel
  98. */
  99. public JournalPanel() {
  100. initComponents();
  101. setName("journalpanel");
  102. new ExcelAdapter(jTable1);
  103. setPopup();
  104. jPanel5.setEnabled(false);
  105. jTabbedPane1.removeTabAt(0);
  106. jLabel3.setEnabled(false);
  107. jLabel4.setEnabled(false);
  108. jLabel4.setText("");
  109. jTabbedPane1.setSelectedComponent(jPanel4);
  110. validate();
  111. timeframeChooser1.setTime(new vTimeframe(DateConverter.getDate(DateConverter.getYear()), new Date()));
  112. bydateend.setSelected(User.getCurrentUser().getProperties().getProperty(this, bydateend, Boolean.FALSE));
  113. expbydateend.setSelected(User.getCurrentUser().getProperties().getProperty(this, expbydateend, Boolean.FALSE));
  114. groups.setSearchEnabled(true);
  115. groups.setContext(Context.getGroup());
  116. groups.triggerSearch();
  117. users.setSearchEnabled(true);
  118. users.setContext(Context.getUser());
  119. users.setModel();
  120. try {
  121. DefaultListModel al = new DefaultListModel();
  122. ArrayList<DatabaseObject> accounts = DatabaseObject.getObjects(Context.getAccounts());
  123. for (int i = 0; i < accounts.size(); i++) {
  124. DatabaseObject databaseObject = accounts.get(i);
  125. al.addElement((Account) databaseObject);
  126. }
  127. jList1.setModel(al);
  128. } catch (NodataFoundException nodataFoundException) {
  129. Log.Debug(this, nodataFoundException.getMessage());
  130. }
  131. statusc.getComboBox().setModel(new DefaultComboBoxModel(new Object[]{Messages.ALL, Messages.STATUS_PAID, Messages.STATUS_UNPAID, Messages.STATUS_CANCELLED}));
  132. prinitingComboBox1.init(jTable1);
  133. refresh(null, null);
  134. jButton4.setEnabled(false);
  135. loadTemplate();
  136. ((MPTable) jTable1).setPersistanceHandler(new TableViewPersistenceHandler((MPTable) jTable1, this));
  137. }
  138. public JournalPanel(Contact dataOwner) {
  139. initComponents();
  140. setPopup();
  141. jLabel4.setText(dataOwner.__getCname());
  142. timeframeChooser1.setTime(new vTimeframe(DateConverter.getDate(DateConverter.getYear()), new Date()));
  143. prinitingComboBox1.init(jTable1);
  144. this.dataOwner = dataOwner;
  145. groups.setSearchEnabled(true);
  146. groups.setContext(Context.getGroup());
  147. groups.triggerSearch();
  148. try {
  149. DefaultListModel al = new DefaultListModel();
  150. ArrayList<DatabaseObject> accounts = DatabaseObject.getObjects(Context.getAccounts());
  151. for (int i = 0; i < accounts.size(); i++) {
  152. DatabaseObject databaseObject = accounts.get(i);
  153. al.addElement((Account) databaseObject);
  154. }
  155. jList1.setModel(al);
  156. } catch (NodataFoundException nodataFoundException) {
  157. Log.Debug(this, nodataFoundException.getMessage());
  158. }
  159. statusc.getComboBox().setModel(new DefaultComboBoxModel(new Object[]{Messages.ALL, Messages.STATUS_PAID, Messages.STATUS_UNPAID}));
  160. refresh(null, null);
  161. jTree1.setCellRenderer(MPTreeModel.getRenderer());
  162. jTree1.setModel(new MPTreeModel(dataOwner, null));
  163. jTree1.addMouseListener(MPTreeModel.getDefaultTreeListener(jTree1));
  164. prinitingComboBox1.init(jTable1);
  165. // TreeFormat.expandTree(jTree1);
  166. loadTemplate();
  167. ((MPTable) jTable1).setPersistanceHandler(new TableViewPersistenceHandler((MPTable) jTable1, this));
  168. }
  169. /**
  170. * This method is called from within the constructor to initialize the form.
  171. * WARNING: Do NOT modify this code. The content of this method is always
  172. * regenerated by the Form Editor.
  173. */
  174. @SuppressWarnings("unchecked")
  175. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  176. private void initComponents() {
  177. buttonGroup1 = new javax.swing.ButtonGroup();
  178. buttonGroup2 = new javax.swing.ButtonGroup();
  179. jPanel1 = new javax.swing.JPanel();
  180. jTabbedPane1 = new javax.swing.JTabbedPane();
  181. jPanel5 = new javax.swing.JPanel();
  182. jScrollPane2 = new javax.swing.JScrollPane();
  183. jTree1 = new javax.swing.JTree();
  184. jPanel10 = new javax.swing.JPanel();
  185. filternone = new javax.swing.JRadioButton();
  186. filterinvoice = new javax.swing.JRadioButton();
  187. filterorders = new javax.swing.JRadioButton();
  188. filteroffers = new javax.swing.JRadioButton();
  189. jPanel4 = new javax.swing.JPanel();
  190. jScrollPane1 = new javax.swing.JScrollPane();
  191. jTable1 = new mpv5.ui.misc.MPTable(this) {
  192. private static final long serialVersionUID = 1L;
  193. public Component prepareRenderer(TableCellRenderer renderer,
  194. int rowIndex, int vColIndex) {
  195. Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
  196. if (c instanceof JComponent) {
  197. JComponent jc = (JComponent)c;
  198. jc.setToolTipText(String.valueOf(getValueAt(rowIndex, vColIndex)));
  199. }
  200. return c;
  201. }
  202. };
  203. jPanel2 = new javax.swing.JPanel();
  204. jPanel7 = new javax.swing.JPanel();
  205. bydateend = new javax.swing.JCheckBox();
  206. groups = new mpv5.ui.beans.MPCombobox();
  207. jLabel8 = new javax.swing.JLabel();
  208. statusc = new mpv5.ui.beans.MPCombobox();
  209. includechildgroups = new javax.swing.JCheckBox();
  210. jLabel2 = new javax.swing.JLabel();
  211. users = new mpv5.ui.beans.MPCombobox();
  212. jLabel6 = new javax.swing.JLabel();
  213. expbydateend = new javax.swing.JCheckBox();
  214. jPanel8 = new javax.swing.JPanel();
  215. jLabel3 = new javax.swing.JLabel();
  216. jLabel5 = new javax.swing.JLabel();
  217. jLabel4 = new javax.swing.JLabel();
  218. timeframeChooser1 = new mpv5.ui.beans.TimeframeChooser();
  219. jPanel6 = new javax.swing.JPanel();
  220. jScrollPane3 = new javax.swing.JScrollPane();
  221. jList1 = new javax.swing.JList();
  222. jButton1 = new javax.swing.JButton();
  223. count = new javax.swing.JLabel();
  224. jPanel3 = new javax.swing.JPanel();
  225. jButton4 = new javax.swing.JButton();
  226. prinitingComboBox1 = new mpv5.ui.beans.PrinitingComboBox();
  227. revenueNetto = new mpv5.ui.beans.LabeledTextField();
  228. volumeNetto = new mpv5.ui.beans.LabeledTextField();
  229. volumeBrutto = new mpv5.ui.beans.LabeledTextField();
  230. taxVolume = new mpv5.ui.beans.LabeledTextField();
  231. jPanel9 = new javax.swing.JPanel();
  232. setName("Form"); // NOI18N
  233. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  234. jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("JournalPanel.jPanel1.border.title"))); // NOI18N
  235. jPanel1.setName("jPanel1"); // NOI18N
  236. jTabbedPane1.setName("jTabbedPane1"); // NOI18N
  237. jPanel5.setName("jPanel5"); // NOI18N
  238. jPanel5.setLayout(new java.awt.BorderLayout());
  239. jScrollPane2.setName("jScrollPane2"); // NOI18N
  240. javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
  241. jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
  242. jTree1.setName("jTree1"); // NOI18N
  243. jScrollPane2.setViewportView(jTree1);
  244. jPanel5.add(jScrollPane2, java.awt.BorderLayout.CENTER);
  245. jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("JournalPanel.jPanel10.border.title"))); // NOI18N
  246. jPanel10.setName("jPanel10"); // NOI18N
  247. jPanel10.setPreferredSize(new java.awt.Dimension(874, 45));
  248. jPanel10.setLayout(new javax.swing.BoxLayout(jPanel10, javax.swing.BoxLayout.LINE_AXIS));
  249. buttonGroup2.add(filternone);
  250. filternone.setSelected(true);
  251. filternone.setText(bundle.getString("JournalPanel.filternone.text")); // NOI18N
  252. filternone.setName("filternone"); // NOI18N
  253. filternone.addItemListener(new java.awt.event.ItemListener() {
  254. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  255. filternoneItemStateChanged(evt);
  256. }
  257. });
  258. jPanel10.add(filternone);
  259. buttonGroup2.add(filterinvoice);
  260. filterinvoice.setText(bundle.getString("JournalPanel.filterinvoice.text")); // NOI18N
  261. filterinvoice.setName("filterinvoice"); // NOI18N
  262. filterinvoice.addItemListener(new java.awt.event.ItemListener() {
  263. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  264. filterinvoiceItemStateChanged(evt);
  265. }
  266. });
  267. jPanel10.add(filterinvoice);
  268. buttonGroup2.add(filterorders);
  269. filterorders.setText(bundle.getString("JournalPanel.filterorders.text")); // NOI18N
  270. filterorders.setName("filterorders"); // NOI18N
  271. filterorders.addItemListener(new java.awt.event.ItemListener() {
  272. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  273. filterordersItemStateChanged(evt);
  274. }
  275. });
  276. jPanel10.add(filterorders);
  277. buttonGroup2.add(filteroffers);
  278. filteroffers.setText(bundle.getString("JournalPanel.filteroffers.text")); // NOI18N
  279. filteroffers.setName("filteroffers"); // NOI18N
  280. filteroffers.addItemListener(new java.awt.event.ItemListener() {
  281. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  282. filteroffersItemStateChanged(evt);
  283. }
  284. });
  285. jPanel10.add(filteroffers);
  286. jPanel5.add(jPanel10, java.awt.BorderLayout.NORTH);
  287. jTabbedPane1.addTab(bundle.getString("JournalPanel.jPanel5.TabConstraints.tabTitle"), jPanel5); // NOI18N
  288. jPanel4.setName("jPanel4"); // NOI18N
  289. jPanel4.setLayout(new java.awt.BorderLayout(2, 0));
  290. jScrollPane1.setName("jScrollPane1"); // NOI18N
  291. jScrollPane1.setPreferredSize(new java.awt.Dimension(452, 430));
  292. jTable1.setAutoCreateRowSorter(true);
  293. jTable1.setModel(new javax.swing.table.DefaultTableModel(
  294. new Object [][] {
  295. },
  296. new String [] {
  297. }
  298. ));
  299. jTable1.setFillsViewportHeight(true);
  300. jTable1.setName("jTable1"); // NOI18N
  301. jTable1.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
  302. jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
  303. public void mouseClicked(java.awt.event.MouseEvent evt) {
  304. jTable1MouseClicked(evt);
  305. }
  306. });
  307. jScrollPane1.setViewportView(jTable1);
  308. jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);
  309. jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("JournalPanel.jPanel2.border.title"))); // NOI18N
  310. jPanel2.setName("jPanel2"); // NOI18N
  311. jPanel2.setPreferredSize(new java.awt.Dimension(734, 200));
  312. jPanel2.setRequestFocusEnabled(false);
  313. jPanel7.setBackground(new java.awt.Color(255, 255, 255));
  314. jPanel7.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  315. jPanel7.setName("jPanel7"); // NOI18N
  316. bydateend.setBackground(new java.awt.Color(255, 255, 255));
  317. bydateend.setFont(bydateend.getFont());
  318. bydateend.setText(bundle.getString("JournalPanel.bydateend.text")); // NOI18N
  319. bydateend.setName("bydateend"); // NOI18N
  320. bydateend.addItemListener(new java.awt.event.ItemListener() {
  321. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  322. bydateendItemStateChanged(evt);
  323. }
  324. });
  325. groups.setFont(groups.getFont());
  326. groups.setName("groups"); // NOI18N
  327. jLabel8.setFont(jLabel8.getFont());
  328. jLabel8.setText(bundle.getString("JournalPanel.jLabel8.text_1")); // NOI18N
  329. jLabel8.setName("jLabel8"); // NOI18N
  330. jLabel8.setPreferredSize(new java.awt.Dimension(150, 21));
  331. statusc.setFont(statusc.getFont());
  332. statusc.setName("statusc"); // NOI18N
  333. includechildgroups.setBackground(new java.awt.Color(255, 255, 255));
  334. includechildgroups.setFont(includechildgroups.getFont());
  335. includechildgroups.setSelected(true);
  336. includechildgroups.setText(bundle.getString("JournalPanel.includechildgroups.text")); // NOI18N
  337. includechildgroups.setName("includechildgroups"); // NOI18N
  338. jLabel2.setFont(jLabel2.getFont());
  339. jLabel2.setText(bundle.getString("JournalPanel.jLabel2.text")); // NOI18N
  340. jLabel2.setName("jLabel2"); // NOI18N
  341. jLabel2.setPreferredSize(new java.awt.Dimension(150, 21));
  342. users.setFont(users.getFont());
  343. users.setName("users"); // NOI18N
  344. jLabel6.setFont(jLabel6.getFont());
  345. jLabel6.setText(bundle.getString("JournalPanel.jLabel6.text")); // NOI18N
  346. jLabel6.setName("jLabel6"); // NOI18N
  347. jLabel6.setPreferredSize(new java.awt.Dimension(150, 21));
  348. expbydateend.setBackground(new java.awt.Color(255, 255, 255));
  349. expbydateend.setFont(expbydateend.getFont());
  350. expbydateend.setText(bundle.getString("JournalPanel.expbydateend.text")); // NOI18N
  351. expbydateend.setName("expbydateend"); // NOI18N
  352. expbydateend.addItemListener(new java.awt.event.ItemListener() {
  353. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  354. expbydateendItemStateChanged(evt);
  355. }
  356. });
  357. javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
  358. jPanel7.setLayout(jPanel7Layout);
  359. jPanel7Layout.setHorizontalGroup(
  360. jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  361. .addGroup(jPanel7Layout.createSequentialGroup()
  362. .addContainerGap()
  363. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  364. .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  365. .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  366. .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  367. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  368. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  369. .addComponent(groups, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
  370. .addComponent(users, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
  371. .addComponent(statusc, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE))
  372. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  373. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  374. .addComponent(expbydateend, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
  375. .addComponent(bydateend, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
  376. .addComponent(includechildgroups, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE))
  377. .addContainerGap())
  378. );
  379. jPanel7Layout.setVerticalGroup(
  380. jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  381. .addGroup(jPanel7Layout.createSequentialGroup()
  382. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  383. .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  384. .addComponent(groups, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  385. .addComponent(includechildgroups))
  386. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  387. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  388. .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  389. .addComponent(users, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  390. .addComponent(expbydateend))
  391. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  392. .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  393. .addComponent(bydateend)
  394. .addComponent(statusc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  395. .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  396. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  397. );
  398. jPanel8.setBackground(new java.awt.Color(255, 255, 255));
  399. jPanel8.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  400. jPanel8.setName("jPanel8"); // NOI18N
  401. jLabel3.setFont(jLabel3.getFont());
  402. jLabel3.setText(bundle.getString("JournalPanel.jLabel3.text")); // NOI18N
  403. jLabel3.setName("jLabel3"); // NOI18N
  404. jLabel5.setFont(jLabel5.getFont());
  405. jLabel5.setText(bundle.getString("JournalPanel.jLabel5.text")); // NOI18N
  406. jLabel5.setName("jLabel5"); // NOI18N
  407. jLabel4.setFont(jLabel4.getFont());
  408. jLabel4.setText(bundle.getString("JournalPanel.jLabel4.text")); // NOI18N
  409. jLabel4.setName("jLabel4"); // NOI18N
  410. timeframeChooser1.setBackground(new java.awt.Color(255, 255, 255));
  411. timeframeChooser1.setFont(timeframeChooser1.getFont());
  412. timeframeChooser1.setName("timeframeChooser1"); // NOI18N
  413. javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
  414. jPanel8.setLayout(jPanel8Layout);
  415. jPanel8Layout.setHorizontalGroup(
  416. jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  417. .addGroup(jPanel8Layout.createSequentialGroup()
  418. .addContainerGap()
  419. .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  420. .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  421. .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE))
  422. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  423. .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  424. .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 269, javax.swing.GroupLayout.PREFERRED_SIZE)
  425. .addComponent(timeframeChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  426. .addContainerGap(134, Short.MAX_VALUE))
  427. );
  428. jPanel8Layout.setVerticalGroup(
  429. jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  430. .addGroup(jPanel8Layout.createSequentialGroup()
  431. .addContainerGap()
  432. .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  433. .addComponent(jLabel3)
  434. .addComponent(jLabel4))
  435. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  436. .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  437. .addComponent(timeframeChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  438. .addComponent(jLabel5))
  439. .addContainerGap())
  440. );
  441. jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("JournalPanel.jPanel6.border.title"))); // NOI18N
  442. jPanel6.setName("jPanel6"); // NOI18N
  443. jPanel6.setLayout(new java.awt.BorderLayout());
  444. jScrollPane3.setName("jScrollPane3"); // NOI18N
  445. jList1.setFont(jList1.getFont().deriveFont(jList1.getFont().getStyle() | java.awt.Font.BOLD));
  446. jList1.setName("jList1"); // NOI18N
  447. jList1.setSelectionBackground(new java.awt.Color(51, 51, 255));
  448. jScrollPane3.setViewportView(jList1);
  449. jPanel6.add(jScrollPane3, java.awt.BorderLayout.CENTER);
  450. jButton1.setFont(jButton1.getFont());
  451. jButton1.setText(bundle.getString("JournalPanel.jButton1.text")); // NOI18N
  452. jButton1.setName("jButton1"); // NOI18N
  453. jButton1.addActionListener(new java.awt.event.ActionListener() {
  454. public void actionPerformed(java.awt.event.ActionEvent evt) {
  455. jButton1ActionPerformed(evt);
  456. }
  457. });
  458. count.setFont(count.getFont().deriveFont(count.getFont().getStyle() | java.awt.Font.BOLD));
  459. count.setForeground(new java.awt.Color(102, 102, 102));
  460. count.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  461. count.setText(bundle.getString("JournalPanel.count.text")); // NOI18N
  462. count.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  463. count.setName("count"); // NOI18N
  464. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  465. jPanel2.setLayout(jPanel2Layout);
  466. jPanel2Layout.setHorizontalGroup(
  467. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  468. .addGroup(jPanel2Layout.createSequentialGroup()
  469. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  470. .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  471. .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  472. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  473. .addGroup(jPanel2Layout.createSequentialGroup()
  474. .addGap(100, 100, 100)
  475. .addComponent(count, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))
  476. .addGroup(jPanel2Layout.createSequentialGroup()
  477. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  478. .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
  479. .addGroup(jPanel2Layout.createSequentialGroup()
  480. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  481. .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)))
  482. .addContainerGap())
  483. );
  484. jPanel2Layout.setVerticalGroup(
  485. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  486. .addGroup(jPanel2Layout.createSequentialGroup()
  487. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
  488. .addGroup(jPanel2Layout.createSequentialGroup()
  489. .addComponent(jPanel6, 0, 0, Short.MAX_VALUE)
  490. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  491. .addComponent(jButton1))
  492. .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
  493. .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  494. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  495. .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  496. .addGap(11, 11, 11)
  497. .addComponent(count, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
  498. );
  499. jPanel4.add(jPanel2, java.awt.BorderLayout.NORTH);
  500. jPanel3.setName("jPanel3"); // NOI18N
  501. jButton4.setText(bundle.getString("JournalPanel.jButton4.text")); // NOI18N
  502. jButton4.setName("jButton4"); // NOI18N
  503. jButton4.addActionListener(new java.awt.event.ActionListener() {
  504. public void actionPerformed(java.awt.event.ActionEvent evt) {
  505. jButton4ActionPerformed(evt);
  506. }
  507. });
  508. prinitingComboBox1.setName("prinitingComboBox1"); // NOI18N
  509. revenueNetto.set_Label(bundle.getString("JournalPanel.revenueNetto._Label")); // NOI18N
  510. revenueNetto.setName("revenueNetto"); // NOI18N
  511. volumeNetto.set_Label(bundle.getString("JournalPanel.volumeNetto._Label")); // NOI18N
  512. volumeNetto.setName("volumeNetto"); // NOI18N
  513. volumeBrutto.set_Label(bundle.getString("JournalPanel.volumeBrutto._Label")); // NOI18N
  514. volumeBrutto.setName("volumeBrutto"); // NOI18N
  515. taxVolume.set_Label(bundle.getString("JournalPanel.taxVolume._Label")); // NOI18N
  516. taxVolume.setName("taxVolume"); // NOI18N
  517. javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
  518. jPanel3.setLayout(jPanel3Layout);
  519. jPanel3Layout.setHorizontalGroup(
  520. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  521. .addGroup(jPanel3Layout.createSequentialGroup()
  522. .addContainerGap()
  523. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  524. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
  525. .addComponent(volumeNetto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  526. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  527. .addComponent(revenueNetto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  528. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
  529. .addComponent(prinitingComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
  530. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  531. .addComponent(jButton4)
  532. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 145, Short.MAX_VALUE)
  533. .addComponent(volumeBrutto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  534. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  535. .addComponent(taxVolume, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  536. .addContainerGap())
  537. );
  538. jPanel3Layout.setVerticalGroup(
  539. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  540. .addGroup(jPanel3Layout.createSequentialGroup()
  541. .addContainerGap()
  542. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  543. .addComponent(volumeNetto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  544. .addComponent(revenueNetto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  545. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  546. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  547. .addComponent(taxVolume, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  548. .addComponent(volumeBrutto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  549. .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
  550. .addComponent(prinitingComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE))
  551. .addContainerGap())
  552. );
  553. jPanel4.add(jPanel3, java.awt.BorderLayout.SOUTH);
  554. jTabbedPane1.addTab(bundle.getString("JournalPanel.jPanel4.TabConstraints.tabTitle"), jPanel4); // NOI18N
  555. jPanel9.setName("jPanel9"); // NOI18N
  556. javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
  557. jPanel9.setLayout(jPanel9Layout);
  558. jPanel9Layout.setHorizontalGroup(
  559. jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  560. .addGap(0, 874, Short.MAX_VALUE)
  561. );
  562. jPanel9Layout.setVerticalGroup(
  563. jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  564. .addGap(0, 297, Short.MAX_VALUE)
  565. );
  566. jTabbedPane1.addTab(bundle.getString("JournalPanel.jPanel9.TabConstraints.tabTitle"), jPanel9); // NOI18N
  567. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  568. jPanel1.setLayout(jPanel1Layout);
  569. jPanel1Layout.setHorizontalGroup(
  570. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  571. .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 879, Short.MAX_VALUE)
  572. );
  573. jPanel1Layout.setVerticalGroup(
  574. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  575. .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 325, Short.MAX_VALUE)
  576. );
  577. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  578. this.setLayout(layout);
  579. layout.setHorizontalGroup(
  580. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  581. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  582. );
  583. layout.setVerticalGroup(
  584. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  585. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  586. );
  587. }// </editor-fold>//GEN-END:initComponents
  588. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  589. setData();
  590. }//GEN-LAST:event_jButton1ActionPerformed
  591. private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
  592. if (evt.getClickCount() > 1) {
  593. try {
  594. int index = jTable1.convertRowIndexToModel(jTable1.getSelectedRow());
  595. DatabaseObject obj = DatabaseObject.getObject((DatabaseObject.Entity<?, ?>) jTable1.getModel().getValueAt(index, 0));
  596. mpv5.YabsViewProxy.instance().addTab(obj);
  597. } catch (NodataFoundException ex) {
  598. Log.Debug(ex);
  599. }
  600. }
  601. }//GEN-LAST:event_jTable1MouseClicked
  602. private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
  603. preview();
  604. }//GEN-LAST:event_jButton4ActionPerformed
  605. private void bydateendItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_bydateendItemStateChanged
  606. User.getCurrentUser().getProperties().changeProperty(this, bydateend, bydateend.isSelected());
  607. }//GEN-LAST:event_bydateendItemStateChanged
  608. private void expbydateendItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_expbydateendItemStateChanged
  609. User.getCurrentUser().getProperties().changeProperty(this, expbydateend, expbydateend.isSelected());
  610. }//GEN-LAST:event_expbydateendItemStateChanged
  611. private void filterinvoiceItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_filterinvoiceItemStateChanged
  612. filter();
  613. }//GEN-LAST:event_filterinvoiceItemStateChanged
  614. private void filterordersItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_filterordersItemStateChanged
  615. filter();
  616. }//GEN-LAST:event_filterordersItemStateChanged
  617. private void filteroffersItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_filteroffersItemStateChanged
  618. filter();
  619. }//GEN-LAST:event_filteroffersItemStateChanged
  620. private void filternoneItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_filternoneItemStateChanged
  621. filter();
  622. }//GEN-LAST:event_filternoneItemStateChanged
  623. // Variables declaration - do not modify//GEN-BEGIN:variables
  624. private javax.swing.ButtonGroup buttonGroup1;
  625. private javax.swing.ButtonGroup buttonGroup2;
  626. private javax.swing.JCheckBox bydateend;
  627. private javax.swing.JLabel count;
  628. private javax.swing.JCheckBox expbydateend;
  629. private javax.swing.JRadioButton filterinvoice;
  630. private javax.swing.JRadioButton filternone;
  631. private javax.swing.JRadioButton filteroffers;
  632. private javax.swing.JRadioButton filterorders;
  633. private mpv5.ui.beans.MPCombobox groups;
  634. private javax.swing.JCheckBox includechildgroups;
  635. private javax.swing.JButton jButton1;
  636. private javax.swing.JButton jButton4;
  637. private javax.swing.JLabel jLabel2;
  638. private javax.swing.JLabel jLabel3;
  639. private javax.swing.JLabel jLabel4;
  640. private javax.swing.JLabel jLabel5;
  641. private javax.swing.JLabel jLabel6;
  642. private javax.swing.JLabel jLabel8;
  643. private javax.swing.JList jList1;
  644. private javax.swing.JPanel jPanel1;
  645. private javax.swing.JPanel jPanel10;
  646. private javax.swing.JPanel jPanel2;
  647. private javax.swing.JPanel jPanel3;
  648. private javax.swing.JPanel jPanel4;
  649. private javax.swing.JPanel jPanel5;
  650. private javax.swing.JPanel jPanel6;
  651. private javax.swing.JPanel jPanel7;
  652. private javax.swing.JPanel jPanel8;
  653. private javax.swing.JPanel jPanel9;
  654. private javax.swing.JScrollPane jScrollPane1;
  655. private javax.swing.JScrollPane jScrollPane2;
  656. private javax.swing.JScrollPane jScrollPane3;
  657. private javax.swing.JTabbedPane jTabbedPane1;
  658. private javax.swing.JTable jTable1;
  659. private javax.swing.JTree jTree1;
  660. private mpv5.ui.beans.PrinitingComboBox prinitingComboBox1;
  661. private mpv5.ui.beans.LabeledTextField revenueNetto;
  662. private mpv5.ui.beans.MPCombobox statusc;
  663. private mpv5.ui.beans.LabeledTextField taxVolume;
  664. private mpv5.ui.beans.TimeframeChooser timeframeChooser1;
  665. private mpv5.ui.beans.MPCombobox users;
  666. private mpv5.ui.beans.LabeledTextField volumeBrutto;
  667. private mpv5.ui.beans.LabeledTextField volumeNetto;
  668. // End of variables declaration//GEN-END:variables
  669. private Object[][] parse(Object[][] data) {
  670. //#entity date group account number type status value
  671. double revenuenet = 0d;
  672. double volumenet = 0d;
  673. double taxvolume = 0d;
  674. double volumebrut = 0d;
  675. Object[][] d = new Object[data.length][16];
  676. try {
  677. for (int i = 0; i < d.length; i++) {
  678. d[i][1] = data[i][1];
  679. d[i][2] = data[i][2];
  680. d[i][3] = data[i][3];
  681. d[i][4] = data[i][4];
  682. d[i][5] = data[i][5];
  683. //d[i][14] = data[i][14];
  684. d[i][8] = data[i][8];
  685. d[i][9] = data[i][9];
  686. d[i][7] = data[i][7];
  687. d[i][6] = DateConverter.getDefDateString(DateConverter.getDate(data[i][6].toString()));
  688. d[i][0] = data[i][0];
  689. int type = Integer.valueOf(data[i][10].toString());
  690. if (type == Revenue.TYPE_REVENUE) {
  691. d[i][10] = Messages.TYPE_REVENUE.toString();
  692. } else if (type == Expense.TYPE_EXPENSE) {
  693. d[i][10] = Messages.TYPE_EXPENSE.toString();
  694. } else {
  695. d[i][10] = Item.getTypeString(type);
  696. }
  697. double netVolume = Double.valueOf(data[i][12].toString());
  698. double taxVal = Double.valueOf(data[i][13].toString());
  699. double brutVolume = Double.valueOf(data[i][14].toString());
  700. d[i][11] = Item.getStatusString(Integer.valueOf(data[i][11].toString()));
  701. if (Integer.valueOf(data[i][11].toString()).intValue() == Item.STATUS_PAID) {
  702. revenuenet += netVolume;
  703. d[i][15] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(netVolume);
  704. } else if (Integer.valueOf(data[i][11].toString()).intValue() == 1000) {
  705. d[i][15] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(-1 * netVolume);
  706. revenuenet -= netVolume;
  707. d[i][11] = Item.getStatusString(Item.STATUS_PAID);
  708. } else if (Integer.valueOf(data[i][11].toString()).intValue() == 2000) {
  709. d[i][15] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(-1 * netVolume);
  710. revenuenet -= netVolume;
  711. d[i][11] = Item.getStatusString(Item.STATUS_IN_PROGRESS);
  712. } else {
  713. d[i][15] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(0d);
  714. }
  715. d[i][12] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(netVolume);
  716. d[i][13] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(taxVal);
  717. d[i][14] = "<html><p align=center>" + mpv5.utils.numberformat.FormatNumber.formatDezimal(brutVolume);
  718. volumenet += netVolume;
  719. volumebrut += brutVolume;
  720. taxvolume += taxVal;
  721. }
  722. } catch (Exception numberFormatException) {
  723. Log.Debug(numberFormatException);
  724. Log.Debug(this, Arrays.asList(data[0]));
  725. }
  726. volumeNetto.setText(mpv5.utils.numberformat.FormatNumber.formatDezimal(volumenet));
  727. revenueNetto.setText(mpv5.utils.numberformat.FormatNumber.formatDezimal(revenuenet));
  728. volumeBrutto.setText(mpv5.utils.numberformat.FormatNumber.formatDezimal(volumebrut));
  729. taxVolume.setText(mpv5.utils.numberformat.FormatNumber.formatDezimal(taxvolume));
  730. return d;
  731. }
  732. private void refresh(final Group forGroup, final User forUser) {
  733. Runnable runnable = new Runnable() {
  734. @Override
  735. public void run() {
  736. try {
  737. QueryCriteria2 itemsParams = new QueryCriteria2();
  738. Object[][] d = new Object[0][0];
  739. Object[][] d1 = new Object[0][0];
  740. Object[][] d2 = new Object[0][0];
  741. if (!includechildgroups.isSelected()) {
  742. if (forGroup != null && !forGroup.__getCname().equals("")) {
  743. itemsParams.and(new QueryParameter(Context.getItem(), forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  744. }
  745. } else {
  746. if (forGroup != null && !forGroup.__getCname().equals("")) {
  747. List<Group> gs = forGroup.getChildGroups();
  748. QueryParameter[] params = new QueryParameter[gs.size()];
  749. QueryParameter param1 = (new QueryParameter(Context.getItem(), forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  750. if (gs.size() >= 1) {
  751. for (int i = 0; i < gs.size(); i++) {
  752. Group group = gs.get(i);
  753. params[i] = (new QueryParameter(Context.getItem(), group.getDbIdentity() + "ids", group.__getIDS(), QueryParameter.EQUALS));
  754. }
  755. //System.err.println(params);
  756. itemsParams.or(param1, params);
  757. } else {
  758. itemsParams.and(param1);
  759. }
  760. }
  761. }
  762. if (forUser != null && !forUser.__getCname().equals("")) {
  763. itemsParams.and(new QueryParameter(Context.getItem(), "intaddedby", forUser.__getIDS(), QueryParameter.EQUALS));
  764. }
  765. ArrayList<QueryParameter> l = new ArrayList<QueryParameter>();
  766. for (int i = 0; i < jList1.getSelectedValues().length; i++) {
  767. l.add(new QueryParameter(Context.getItem(), "accountsids", ((Account) jList1.getSelectedValues()[i]).__getIDS(), QueryParameter.EQUALS));
  768. }
  769. if (l.size() > 1) {
  770. itemsParams.or(l);
  771. } else {
  772. itemsParams.and(l.toArray(new QueryParameter[0]));
  773. }
  774. if (dataOwner != null) {
  775. itemsParams.and(new QueryParameter(dataOwner.getContext(), "ids", dataOwner.__getIDS(), QueryParameter.EQUALS));
  776. }
  777. boolean additional = true;
  778. if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_PAID)) {
  779. itemsParams.and(new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_PAID, QueryParameter.EQUALS));
  780. } else if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_UNPAID)) {
  781. // additional = false;
  782. itemsParams.or(
  783. new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_QUEUED, QueryParameter.EQUALS),
  784. new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_PAUSED, QueryParameter.EQUALS),
  785. new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_IN_PROGRESS, QueryParameter.EQUALS),
  786. new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_FINISHED, QueryParameter.EQUALS));
  787. } else if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_CANCELLED)) {
  788. // additional = false;
  789. itemsParams.and(new QueryParameter(Context.getItem(), "intstatus", Item.STATUS_CANCELLED, QueryParameter.EQUALS));
  790. }
  791. try {
  792. Context c = Context.getItem();
  793. itemsParams.setOrder("accountsids", true);
  794. c.addReference(Context.getGroup());
  795. c.addReference(Context.getAccounts());
  796. c.addReference(Context.getContact());
  797. try {
  798. String datecriterium = "dateadded";
  799. if (bydateend.isSelected()) {
  800. datecriterium = "dateend";
  801. }
  802. d = QueryHandler.instanceOf().clone(c).select(Context.DETAILS_JOURNAL.replace("{date}", datecriterium), itemsParams, timeframeChooser1.getTime(), datecriterium).getData();
  803. } catch (NodataFoundException nodataFoundException) {
  804. d = new Object[0][15];
  805. }
  806. DatabaseObject.Entity<?, ?>[] es = new DatabaseObject.Entity<?, ?>[d.length];
  807. for (int i = 0; i < d.length; i++) {
  808. es[i] = new DatabaseObject.Entity<Context, Integer>(Context.getItem(), Integer.valueOf(d[i][0].toString()));
  809. }
  810. d = ArrayUtilities.replaceColumn(d, 0, es);
  811. if (!additional) {
  812. d = ArrayUtilities.removeRows(d, 11, Item.STATUS_PAID);
  813. }
  814. } catch (Exception ex) {
  815. Log.Debug(ex);
  816. }
  817. if (dataOwner == null && additional) {
  818. try {
  819. Context c = Context.getExpense();
  820. itemsParams.setOrder("dateadded", true);
  821. c.addReference(Context.getGroup());
  822. c.addReference(Context.getAccounts());
  823. QueryCriteria2 expensesParams = new QueryCriteria2();
  824. ArrayList<QueryParameter> l1 = new ArrayList<QueryParameter>();
  825. for (int i = 0; i < jList1.getSelectedValues().length; i++) {
  826. l1.add(new QueryParameter(Context.getExpense(), "accountsids", ((Account) jList1.getSelectedValues()[i]).__getIDS(), QueryParameter.EQUALS));
  827. }
  828. if (l1.size() > 1) {
  829. expensesParams.or(l1);
  830. } else {
  831. expensesParams.and(l1.toArray(new QueryParameter[0]));
  832. }
  833. if (forUser != null && !forUser.__getCname().equals("")) {
  834. expensesParams.and(new QueryParameter(c, "intaddedby", forUser.__getIDS(), QueryParameter.EQUALS));
  835. }
  836. if (!includechildgroups.isSelected()) {
  837. if (forGroup != null && !forGroup.__getCname().equals("")) {
  838. expensesParams.and(new QueryParameter(c, forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  839. }
  840. } else {
  841. if (forGroup != null) {
  842. List<Group> gs = forGroup.getChildGroups();
  843. QueryParameter[] params = new QueryParameter[gs.size()];
  844. QueryParameter params1 = (new QueryParameter(c, forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  845. if (gs.size() >= 1) {
  846. for (int i = 0; i < gs.size(); i++) {
  847. Group group = gs.get(i);
  848. params[i] = (new QueryParameter(c, group.getDbIdentity() + "ids", group.__getIDS(), QueryParameter.EQUALS));
  849. }
  850. itemsParams.or(params1, params);
  851. } else {
  852. expensesParams.and(params1);
  853. }
  854. }
  855. }
  856. if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_PAID)) {
  857. expensesParams.and(new QueryParameter(c, "ispaid", true, QueryParameter.EQUALS));
  858. } else if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_UNPAID)) {
  859. expensesParams.and(new QueryParameter(c, "ispaid", false, QueryParameter.EQUALS));
  860. }
  861. try {
  862. String datecriterium = "dateadded";
  863. if (expbydateend.isSelected()) {
  864. datecriterium = "dateend";
  865. }
  866. d1 = QueryHandler.instanceOf().clone(c).select(Context.DETAILS_JOURNAL3.replace("{date}", datecriterium), expensesParams, timeframeChooser1.getTime(), datecriterium).getData();
  867. } catch (NodataFoundException nodataFoundException) {
  868. d1 = new Object[0][15];
  869. }
  870. // try {
  871. // d1 = QueryHandler.instanceOf().clone(c).select(Context.DETAILS_JOURNAL3, expensesParams, timeframeChooser1.getTime()).getData();
  872. // } catch (NodataFoundException nodataFoundException) {
  873. // d1 = new Object[0][14];
  874. // }
  875. for (int i = 0; i < d1.length; i++) {
  876. d1[i][10] = Expense.TYPE_EXPENSE;
  877. if (TypeConversion.stringToBoolean(String.valueOf(d1[i][11]))) {
  878. d1[i][11] = 1000;
  879. } else {
  880. d1[i][11] = 2000;
  881. }
  882. }
  883. DatabaseObject.Entity<?, ?>[] es = new DatabaseObject.Entity<?, ?>[d1.length];
  884. for (int i = 0; i < d1.length; i++) {
  885. es[i] = new DatabaseObject.Entity<Context, Integer>(Context.getExpense(), Integer.valueOf(d1[i][0].toString()));
  886. }
  887. d1 = ArrayUtilities.replaceColumn(d1, 0, es);
  888. } catch (Exception ex) {
  889. Log.Debug(this, ex);
  890. }
  891. try {
  892. Context c = Context.getRevenue();
  893. itemsParams.setOrder("dateadded", true);
  894. c.addReference(Context.getGroup());
  895. c.addReference(Context.getAccounts());
  896. QueryCriteria2 revenuesParams = new QueryCriteria2();
  897. ArrayList<QueryParameter> l2 = new ArrayList<QueryParameter>();
  898. for (int i = 0; i < jList1.getSelectedValues().length; i++) {
  899. l2.add(new QueryParameter(Context.getRevenue(), "accountsids", ((Account) jList1.getSelectedValues()[i]).__getIDS(), QueryParameter.EQUALS));
  900. }
  901. if (l2.size() > 1) {
  902. revenuesParams.or(l2);
  903. } else {
  904. revenuesParams.and(l2.toArray(new QueryParameter[0]));
  905. }
  906. if (forUser != null && !forUser.__getCname().equals("")) {
  907. revenuesParams.and(new QueryParameter(c, "intaddedby", forUser.__getIDS(), QueryParameter.EQUALS));
  908. }
  909. if (!includechildgroups.isSelected()) {
  910. if (forGroup != null && !forGroup.__getCname().equals("")) {
  911. revenuesParams.and(new QueryParameter(c, forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  912. }
  913. } else {
  914. if (forGroup != null) {
  915. List<Group> gs = forGroup.getChildGroups();
  916. QueryParameter[] params = new QueryParameter[gs.size()];
  917. QueryParameter params1 = (new QueryParameter(c, forGroup.getDbIdentity() + "ids", forGroup.__getIDS(), QueryParameter.EQUALS));
  918. if (gs.size() >= 1) {
  919. for (int i = 0; i < gs.size(); i++) {
  920. Group group = gs.get(i);
  921. params[i] = (new QueryParameter(c, group.getDbIdentity() + "ids", group.__getIDS(), QueryParameter.EQUALS));
  922. }
  923. revenuesParams.or(params1, params);
  924. } else {
  925. revenuesParams.and(params1);
  926. }
  927. }
  928. }
  929. // if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_PAID)) {
  930. // revenuesParams.and(new QueryParameter(c, "intstatus", Item.STATUS_PAID, QueryParameter.EQUALS));
  931. // } else if (statusc.getComboBox().getSelectedItem().equals(Messages.STATUS_UNPAID)) {
  932. //// additional = false;
  933. // revenuesParams.or(new QueryParameter(Context.getExpense(), "intstatus", Item.STATUS_PAID, QueryParameter.EQUALS),
  934. // new QueryParameter(c, "intstatus", Item.STATUS_FINISHED, QueryParameter.EQUALS));
  935. // }
  936. try {
  937. d2 = QueryHandler.instanceOf().clone(c).select(Context.DETAILS_JOURNAL2, revenuesParams, timeframeChooser1.getTime()).getData();
  938. } catch (NodataFoundException nodataFoundException) {
  939. d2 = new Object[0][15];
  940. }
  941. for (int i = 0; i < d2.length; i++) {
  942. d2[i][10] = Revenue.TYPE_REVENUE;
  943. d2[i][11] = Item.STATUS_PAID;//revenues are currently always paid :-/
  944. }
  945. DatabaseObject.Entity<?, ?>[] es = new DatabaseObject.Entity<?, ?>[d2.length];
  946. for (int i = 0; i < d2.length; i++) {
  947. es[i] = new DatabaseObject.Entity<Context, Integer>(Context.getRevenue(), Integer.valueOf(d2[i][0].toString()));
  948. }
  949. d2 = ArrayUtilities.replaceColumn(d2, 0, es);
  950. } catch (Exception ex) {
  951. Log.Debug(this, ex);
  952. }
  953. d = ArrayUtilities.merge(ArrayUtilities.merge(d, d1), d2);
  954. }
  955. d = parse(d);
  956. jTable1.setModel(new MPTableModel(d, Headers.JOURNAL.getValue(),
  957. new Class[]{Entity.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class}));
  958. TableFormat.stripColumn(jTable1, DatabaseObject.Entity.class);
  959. count.setText("" + d.length);
  960. } catch (Exception e) {
  961. Log.Debug(this, e);
  962. }
  963. }
  964. };
  965. SwingUtilities.invokeLater(runnable);
  966. }
  967. @Override
  968. public void refresh() {
  969. refresh(null, null);
  970. }
  971. @Override
  972. public void flush() {
  973. jTable1.setModel(new DefaultTableModel());
  974. }
  975. private void setPopup() {
  976. TablePopUp tablePopUp = new TablePopUp(jTable1,
  977. new String[]{Messages.DELETE.toString(),
  978. null, Messages.RELOAD.getValue(),
  979. null, Messages.DTA_CREATE.getValue(),
  980. Messages.PDF_CREATE.getValue(),
  981. Messages.ODT_CREATE.getValue(),
  982. null, Messages.SET_STATUS_PAID.getValue(),},
  983. new ActionListener[]{new ActionListener() {
  984. public void actionPerformed(ActionEvent e) {
  985. if (Popup.Y_N_dialog(Messages.REALLY_DELETE2 + " (" + jTable1.getSelectedRowCount() + ")")) {
  986. int[] rows = jTable1.getSelectedRows();
  987. for (int i = 0; i < rows.length; i++) {
  988. try {
  989. int index = jTable1.convertRowIndexToModel(rows[i]);
  990. DatabaseObject obj = DatabaseObject.getObject((DatabaseObject.Entity<?, ?>) jTable1.getModel().getValueAt(index, 0));
  991. obj.delete();
  992. jTable1.getSelectionModel().removeSelectionInterval(rows[i] - 1, rows[i]);
  993. } catch (NodataFoundException ex) {
  994. Log.Debug(ex);
  995. } catch (Exception exc) {
  996. Log.Debug(exc);
  997. Popup.error(exc);
  998. }
  999. }
  1000. setData();
  1001. }
  1002. }
  1003. }, null, new ActionListener() {
  1004. public void actionPerformed(ActionEvent e) {
  1005. setData();
  1006. }
  1007. },
  1008. null,
  1009. new ActionListener() {
  1010. public void actionPerformed(ActionEvent e) {
  1011. dta();
  1012. }
  1013. },
  1014. new ActionListener() {
  1015. public void actionPerformed(ActionEvent e) {
  1016. pdf();
  1017. }
  1018. },
  1019. new ActionListener() {
  1020. public void actionPerformed(ActionEvent e) {
  1021. odt();
  1022. }
  1023. },
  1024. null,
  1025. new ActionListener() {
  1026. public void actionPerformed(ActionEvent e) {
  1027. if (Popup.Y_N_dialog(Messages.REALLY_CHANGE2 + " (" + jTable1.getSelectedRowCount() + ")")) {
  1028. int[] rows = jTable1.getSelectedRows();
  1029. for (int i = 0; i < rows.length; i++) {
  1030. try {
  1031. int index = jTable1.convertRowIndexToModel(rows[i]);
  1032. DatabaseObject obj = DatabaseObject.getObject((DatabaseObject.Entity<?, ?>) jTable1.getModel().getValueAt(index, 0));
  1033. if (obj instanceof Item) {
  1034. Item dbi = (Item) obj;
  1035. if (dbi.__getIntstatus() != Item.STATUS_PAID) {
  1036. dbi.setIntstatus(Item.STATUS_PAID);
  1037. dbi.save();
  1038. }
  1039. } else if (obj instanceof Expense) {
  1040. Expense dbi = (Expense) obj;
  1041. if (!dbi.__getIspaid()) {
  1042. dbi.setIspaid(true);
  1043. dbi.save();
  1044. }
  1045. }
  1046. jTable1.getSelectionModel().removeSelectionInterval(rows[i] - 1, rows[i]);
  1047. } catch (NodataFoundException ex) {
  1048. Log.Debug(ex);
  1049. } catch (Exception exc) {
  1050. Log.Debug(exc);
  1051. Popup.error(exc);
  1052. }
  1053. }
  1054. setData();
  1055. }
  1056. }
  1057. }
  1058. });
  1059. }
  1060. private void setData() {
  1061. try {
  1062. Group g = null;
  1063. User u = null;
  1064. if (groups.getSelectedItem().isValid()) {
  1065. try {
  1066. g = ((Group) Group.getObject(Context.getGroup(), Integer.valueOf(groups.getSelectedItem().getId())));
  1067. } catch (Exception nodataFoundException) {
  1068. g = null;
  1069. }
  1070. }
  1071. try {
  1072. if (users.getSelectedItem().isValid()) {
  1073. u = ((User) User.getObject(Context.getUser(), Integer.valueOf(users.getSelectedItem().getId())));
  1074. }
  1075. } catch (Exception nodataFoundException) {
  1076. u = null;
  1077. }
  1078. refresh(g, u);
  1079. } catch (Exception ignore) {
  1080. refresh(null, null);
  1081. }
  1082. }
  1083. private void preview() {
  1084. PreviewPanel pr;
  1085. if (journalOrContactTemplate != null) {
  1086. pr = new PreviewPanel();
  1087. pr.setDataOwner(dataOwner);
  1088. HashMap<String, Object> map = new HashMap<String, Object>();
  1089. map.put("jo