PageRenderTime 397ms CodeModel.GetById 6ms RepoModel.GetById 1ms app.codeStats 0ms

/src/mpv5/ui/panels/RevenuePanel.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 715 lines | 556 code | 82 blank | 77 comment | 20 complexity | b109e48484bd4dd834bcb4dc7126ef78 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. YaBS is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. YaBS is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with YaBS. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. /*
  15. * ContactPanel.java
  16. *
  17. * Created on Nov 20, 2008, 8:17:28 AM
  18. */
  19. package mpv5.ui.panels;
  20. import java.awt.BorderLayout;
  21. import java.awt.Color;
  22. import java.awt.Component;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.ActionListener;
  25. import java.awt.event.KeyEvent;
  26. import java.awt.event.KeyListener;
  27. import java.math.BigDecimal;
  28. import java.math.RoundingMode;
  29. import java.util.ArrayList;
  30. import java.util.Date;
  31. import javax.swing.JComponent;
  32. import javax.swing.JFrame;
  33. import javax.swing.JTabbedPane;
  34. import javax.swing.JTable;
  35. import javax.swing.JViewport;
  36. import javax.swing.SwingUtilities;
  37. import javax.swing.table.TableCellRenderer;
  38. import mpv5.db.common.*;
  39. import mpv5.db.objects.Account;
  40. import mpv5.db.objects.Revenue;
  41. import mpv5.globals.Messages;
  42. import mpv5.db.objects.Favourite;
  43. import mpv5.db.objects.Item;
  44. import mpv5.db.objects.Tax;
  45. import mpv5.db.objects.Template;
  46. import mpv5.logging.Log;
  47. import mpv5.ui.dialogs.Popup;
  48. import mpv5.ui.toolbars.DataPanelTB;
  49. import mpv5.db.objects.User;
  50. import mpv5.globals.Constants;
  51. import mpv5.globals.Headers;
  52. import mpv5.ui.misc.MPTable;
  53. import mpv5.utils.export.Export;
  54. import mpv5.utils.export.Exportable;
  55. import mpv5.utils.models.MPComboBoxModelItem;
  56. import mpv5.utils.models.MPTableModel;
  57. import mpv5.utils.numberformat.FormatNumber;
  58. import mpv5.ui.misc.TableViewPersistenceHandler;
  59. import mpv5.utils.tables.TableFormat;
  60. import mpv5.utils.ui.TextFieldUtils;
  61. /**
  62. *
  63. *
  64. */
  65. public class RevenuePanel extends javax.swing.JPanel implements DataPanel {
  66. private static final long serialVersionUID = 1L;
  67. private static RevenuePanel me;
  68. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  69. private BigDecimal tax = new BigDecimal("0");
  70. /**
  71. * Singleton
  72. * @return
  73. */
  74. public static RevenuePanel instanceOf() {
  75. if (me == null) {
  76. me = new RevenuePanel();
  77. }
  78. me.refresh();
  79. return me;
  80. }
  81. private Revenue dataOwner;
  82. private DataPanelTB tb;
  83. private ArrayList<DatabaseObject> accmod;
  84. /** Creates new form ContactPanel
  85. */
  86. public RevenuePanel() {
  87. initComponents();
  88. setName("revenuepanel");
  89. tb = new mpv5.ui.toolbars.DataPanelTB(this);
  90. tb.disableButton(1);
  91. tb.disableButton(8);
  92. tb.disableButton(9);
  93. toolbarpane.add(tb, BorderLayout.CENTER);
  94. dataOwner = new Revenue();
  95. addedby.setText(mpv5.db.objects.User.getCurrentUser().getName());
  96. groupnameselect.setSearchEnabled(true);
  97. groupnameselect.setContext(Context.getGroup());
  98. taxrate.setSearchEnabled(true);
  99. taxrate.setContext(Context.getTaxes());
  100. // new calc().start();
  101. value.getTextField().addKeyListener(new KeyListener() {
  102. public void keyTyped(KeyEvent e) {
  103. calculate();
  104. }
  105. public void keyPressed(KeyEvent ek) {
  106. calculate();
  107. }
  108. public void keyReleased(KeyEvent e) {
  109. calculate();
  110. }
  111. });
  112. taxrate.getComboBox().addActionListener(new ActionListener() {
  113. public void actionPerformed(ActionEvent e) {
  114. getTaxRate();
  115. }
  116. });
  117. taxrate.getComboBox().setEditable(false);
  118. itemtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  119. itemtable.setFillsViewportHeight(true);
  120. ((MPTable) itemtable).setDefaultColumns(new Integer[]{100, 333, 100}, new Boolean[]{});
  121. ((MPTable) itemtable).setPersistanceHandler(new TableViewPersistenceHandler((MPTable) itemtable, this));
  122. }
  123. private void calculate() {
  124. try {
  125. netvalue.setText(FormatNumber.formatLokalCurrency(FormatNumber.parseDezimal(value.getText()).divide((tax.divide(Constants.BD100, 9, RoundingMode.HALF_UP)).add(BigDecimal.ONE), 9, RoundingMode.HALF_UP)));
  126. } catch (Exception e) {
  127. Log.Debug(e);
  128. netvalue.setText(FormatNumber.formatLokalCurrency(0d));
  129. }
  130. }
  131. @Override
  132. public DatabaseObject getDataOwner() {
  133. return dataOwner;
  134. }
  135. @Override
  136. public void setDataOwner(DatabaseObject object, boolean populate) {
  137. if (object instanceof Revenue) {
  138. dataOwner = (Revenue) object;
  139. if (populate) {
  140. dataOwner.setPanelData(this);
  141. this.exposeData();
  142. setTitle();
  143. tb.setFavourite(Favourite.isFavourite(object));
  144. tb.setEditable(!object.isReadOnly());
  145. formatTable();
  146. if (object.isReadOnly()) {
  147. Popup.notice(Messages.LOCKED_BY);
  148. }
  149. validate();
  150. }
  151. } else if (object instanceof Item) {
  152. }
  153. }
  154. Exportable preloadedExportFile;
  155. Template preloadedTemplate;
  156. private void setTitle() {
  157. if (this.getParent() instanceof JViewport || this.getParent() instanceof JTabbedPane) {
  158. JTabbedPane jTabbedPane = null;
  159. String title1 = cname_;
  160. //this->viewport->scrollpane->tabbedpane
  161. if (this.getParent().getParent().getParent() instanceof JTabbedPane) {
  162. jTabbedPane = (JTabbedPane) this.getParent().getParent().getParent();
  163. } else {
  164. try {
  165. jTabbedPane = (JTabbedPane) this.getParent();
  166. } catch (Exception e) {
  167. //Free floating window
  168. ((JFrame) this.getRootPane().getParent()).setTitle(title1);
  169. }
  170. }
  171. if (jTabbedPane != null) {
  172. jTabbedPane.setTitleAt(jTabbedPane.getSelectedIndex(), title1);
  173. }
  174. }
  175. }
  176. @Override
  177. public void showRequiredFields() {
  178. TextFieldUtils.blinkerRed(value);
  179. }
  180. /** This method is called from within the constructor to
  181. * initialize the form.
  182. * WARNING: Do NOT modify this code. The content of this method is
  183. * always regenerated by the Form Editor.
  184. */
  185. @SuppressWarnings("unchecked")
  186. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  187. private void initComponents() {
  188. buttonGroup1 = new javax.swing.ButtonGroup();
  189. rightpane = new javax.swing.JPanel();
  190. jPanel4 = new javax.swing.JPanel();
  191. jScrollPane3 = new javax.swing.JScrollPane();
  192. itemtable = new mpv5.ui.misc.MPTable(this) {
  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. jPanel1 = new javax.swing.JPanel();
  204. number = new mpv5.ui.beans.LabeledTextField();
  205. addedby = new javax.swing.JLabel();
  206. jLabel4 = new javax.swing.JLabel();
  207. accountselect = new mpv5.ui.beans.LabeledCombobox();
  208. groupnameselect = new mpv5.ui.beans.MPCombobox();
  209. jPanel2 = new javax.swing.JPanel();
  210. value = new mpv5.ui.beans.LabeledTextField();
  211. netvalue = new mpv5.ui.beans.LabeledTextField();
  212. jLabel1 = new javax.swing.JLabel();
  213. jScrollPane1 = new javax.swing.JScrollPane();
  214. notes = new javax.swing.JEditorPane();
  215. taxrate = new mpv5.ui.beans.LabeledCombobox();
  216. path = new javax.swing.JLabel();
  217. labeledDateChooser1 = new mpv5.ui.beans.LabeledDateChooser();
  218. toolbarpane = new javax.swing.JPanel();
  219. setBackground(new java.awt.Color(155, 175, 155));
  220. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  221. setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("RevenuePanel.border.title_1"))); // NOI18N
  222. setName("Form"); // NOI18N
  223. setOpaque(false);
  224. setLayout(new java.awt.BorderLayout());
  225. rightpane.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  226. rightpane.setName("rightpane"); // NOI18N
  227. jPanel4.setBackground(new java.awt.Color(204, 204, 204));
  228. jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  229. jPanel4.setName("jPanel4"); // NOI18N
  230. jScrollPane3.setName("jScrollPane3"); // NOI18N
  231. itemtable.setAutoCreateRowSorter(true);
  232. itemtable.setModel(new javax.swing.table.DefaultTableModel(
  233. new Object [][] {
  234. },
  235. new String [] {
  236. }
  237. ));
  238. itemtable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
  239. itemtable.setName("itemtable"); // NOI18N
  240. itemtable.setSurrendersFocusOnKeystroke(true);
  241. itemtable.addMouseListener(new java.awt.event.MouseAdapter() {
  242. public void mouseClicked(java.awt.event.MouseEvent evt) {
  243. itemtableMouseClicked(evt);
  244. }
  245. });
  246. jScrollPane3.setViewportView(itemtable);
  247. javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
  248. jPanel4.setLayout(jPanel4Layout);
  249. jPanel4Layout.setHorizontalGroup(
  250. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  251. .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.TRAILING)
  252. );
  253. jPanel4Layout.setVerticalGroup(
  254. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  255. .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
  256. );
  257. jPanel1.setBackground(new java.awt.Color(254, 254, 254));
  258. jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  259. jPanel1.setName("jPanel1"); // NOI18N
  260. number.set_Label(bundle.getString("RevenuePanel.number._Label")); // NOI18N
  261. number.setEnabled(false);
  262. number.setFocusable(false);
  263. number.setFont(number.getFont());
  264. number.setName("number"); // NOI18N
  265. addedby.setFont(addedby.getFont());
  266. addedby.setText(bundle.getString("RevenuePanel.addedby.text")); // NOI18N
  267. addedby.setToolTipText(bundle.getString("RevenuePanel.addedby.toolTipText")); // NOI18N
  268. addedby.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  269. addedby.setEnabled(false);
  270. addedby.setName("addedby"); // NOI18N
  271. jLabel4.setFont(jLabel4.getFont());
  272. jLabel4.setText(bundle.getString("RevenuePanel.jLabel4.text")); // NOI18N
  273. jLabel4.setName("jLabel4"); // NOI18N
  274. accountselect.set_Label(bundle.getString("RevenuePanel.accountselect._Label")); // NOI18N
  275. accountselect.setName("accountselect"); // NOI18N
  276. accountselect.setSearchOnEnterEnabled(false);
  277. groupnameselect.setName("groupnameselect"); // NOI18N
  278. jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  279. jPanel2.setName("jPanel2"); // NOI18N
  280. value.set_Label(bundle.getString("RevenuePanel.value._Label")); // NOI18N
  281. value.set_Text(bundle.getString("RevenuePanel.value._Text")); // NOI18N
  282. value.setName("value"); // NOI18N
  283. netvalue.set_Label(bundle.getString("RevenuePanel.netvalue._Label")); // NOI18N
  284. netvalue.set_Text(bundle.getString("RevenuePanel.netvalue._Text")); // NOI18N
  285. netvalue.setEnabled(false);
  286. netvalue.setName("netvalue"); // NOI18N
  287. jLabel1.setText(bundle.getString("RevenuePanel.jLabel1.text")); // NOI18N
  288. jLabel1.setName("jLabel1"); // NOI18N
  289. jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
  290. jScrollPane1.setName("jScrollPane1"); // NOI18N
  291. notes.setBackground(new java.awt.Color(254, 254, 254));
  292. notes.setName("notes"); // NOI18N
  293. jScrollPane1.setViewportView(notes);
  294. taxrate.set_Label(bundle.getString("RevenuePanel.taxrate._Label")); // NOI18N
  295. taxrate.setName("taxrate"); // NOI18N
  296. taxrate.addMouseListener(new java.awt.event.MouseAdapter() {
  297. public void mouseClicked(java.awt.event.MouseEvent evt) {
  298. taxrateMouseClicked(evt);
  299. }
  300. public void mouseExited(java.awt.event.MouseEvent evt) {
  301. taxrateMouseExited(evt);
  302. }
  303. });
  304. path.setText(bundle.getString("RevenuePanel.path.text")); // NOI18N
  305. path.setName("path"); // NOI18N
  306. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  307. jPanel2.setLayout(jPanel2Layout);
  308. jPanel2Layout.setHorizontalGroup(
  309. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  310. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
  311. .addContainerGap()
  312. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  313. .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)
  314. .addComponent(path, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  315. .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
  316. .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
  317. .addComponent(value, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  318. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  319. .addComponent(taxrate, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
  320. .addGap(18, 18, 18)
  321. .addComponent(netvalue, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE)))
  322. .addContainerGap())
  323. );
  324. jPanel2Layout.setVerticalGroup(
  325. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  326. .addGroup(jPanel2Layout.createSequentialGroup()
  327. .addContainerGap()
  328. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  329. .addComponent(value, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  330. .addComponent(taxrate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  331. .addComponent(netvalue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  332. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  333. .addComponent(jLabel1)
  334. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  335. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE)
  336. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  337. .addComponent(path, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
  338. .addGap(0, 0, 0))
  339. );
  340. labeledDateChooser1.set_Label(bundle.getString("RevenuePanel.labeledDateChooser1._Label")); // NOI18N
  341. labeledDateChooser1.setName("labeledDateChooser1"); // NOI18N
  342. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  343. jPanel1.setLayout(jPanel1Layout);
  344. jPanel1Layout.setHorizontalGroup(
  345. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  346. .addGroup(jPanel1Layout.createSequentialGroup()
  347. .addContainerGap()
  348. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  349. .addGroup(jPanel1Layout.createSequentialGroup()
  350. .addComponent(number, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
  351. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  352. .addComponent(labeledDateChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  353. .addComponent(accountselect, javax.swing.GroupLayout.DEFAULT_SIZE, 458, Short.MAX_VALUE))
  354. .addGap(18, 18, 18)
  355. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  356. .addGroup(jPanel1Layout.createSequentialGroup()
  357. .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
  358. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  359. .addComponent(addedby, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE))
  360. .addComponent(groupnameselect, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE))
  361. .addContainerGap())
  362. .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  363. );
  364. jPanel1Layout.setVerticalGroup(
  365. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  366. .addGroup(jPanel1Layout.createSequentialGroup()
  367. .addContainerGap()
  368. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  369. .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
  370. .addComponent(addedby, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
  371. .addComponent(accountselect, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  372. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  373. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  374. .addComponent(groupnameselect, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  375. .addComponent(labeledDateChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  376. .addComponent(number, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  377. .addGap(17, 17, 17)
  378. .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  379. );
  380. javax.swing.GroupLayout rightpaneLayout = new javax.swing.GroupLayout(rightpane);
  381. rightpane.setLayout(rightpaneLayout);
  382. rightpaneLayout.setHorizontalGroup(
  383. rightpaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  384. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  385. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  386. );
  387. rightpaneLayout.setVerticalGroup(
  388. rightpaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  389. .addGroup(rightpaneLayout.createSequentialGroup()
  390. .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  391. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  392. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  393. );
  394. add(rightpane, java.awt.BorderLayout.CENTER);
  395. toolbarpane.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  396. toolbarpane.setName("toolbarpane"); // NOI18N
  397. toolbarpane.setLayout(new java.awt.BorderLayout());
  398. add(toolbarpane, java.awt.BorderLayout.NORTH);
  399. }// </editor-fold>//GEN-END:initComponents
  400. private void itemtableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_itemtableMouseClicked
  401. try {
  402. setDataOwner((DatabaseObject) itemtable.getModel().getValueAt(itemtable.getSelectedRow(), 0), true);
  403. } catch (Exception e) {
  404. Log.Debug(this, e.getMessage());
  405. }
  406. }//GEN-LAST:event_itemtableMouseClicked
  407. private void taxrateMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_taxrateMouseClicked
  408. calculate();
  409. }//GEN-LAST:event_taxrateMouseClicked
  410. private void taxrateMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_taxrateMouseExited
  411. calculate();
  412. }//GEN-LAST:event_taxrateMouseExited
  413. MPTableModel omodel = null;
  414. // Variables declaration - do not modify//GEN-BEGIN:variables
  415. private mpv5.ui.beans.LabeledCombobox accountselect;
  416. private javax.swing.JLabel addedby;
  417. private javax.swing.ButtonGroup buttonGroup1;
  418. private mpv5.ui.beans.MPCombobox groupnameselect;
  419. private javax.swing.JTable itemtable;
  420. private javax.swing.JLabel jLabel1;
  421. private javax.swing.JLabel jLabel4;
  422. private javax.swing.JPanel jPanel1;
  423. private javax.swing.JPanel jPanel2;
  424. private javax.swing.JPanel jPanel4;
  425. private javax.swing.JScrollPane jScrollPane1;
  426. private javax.swing.JScrollPane jScrollPane3;
  427. private mpv5.ui.beans.LabeledDateChooser labeledDateChooser1;
  428. private mpv5.ui.beans.LabeledTextField netvalue;
  429. private javax.swing.JEditorPane notes;
  430. private mpv5.ui.beans.LabeledTextField number;
  431. private javax.swing.JLabel path;
  432. private javax.swing.JPanel rightpane;
  433. private mpv5.ui.beans.LabeledCombobox taxrate;
  434. private javax.swing.JPanel toolbarpane;
  435. private mpv5.ui.beans.LabeledTextField value;
  436. // End of variables declaration//GEN-END:variables
  437. public String cname_;
  438. public String description_;
  439. public String cnumber_;
  440. public int intaddedby_;
  441. public int ids_;
  442. public Date dateadded_;
  443. public int groupsids_ = 1;
  444. public BigDecimal netvalue_;
  445. public BigDecimal taxpercentvalue_;
  446. public BigDecimal brutvalue_;
  447. public int accountsids_;
  448. @Override
  449. public synchronized boolean collectData() {
  450. calculate();
  451. try {
  452. accountsids_ = Integer.valueOf(accountselect.getSelectedItem().getId());
  453. mpv5.db.objects.User.getCurrentUser().getProperties().changeProperty(me, "accountselect", accountsids_);
  454. } catch (Exception e) {
  455. accountsids_ = 1;
  456. }
  457. if (groupnameselect.getSelectedItem() != null) {
  458. groupsids_ = Integer.valueOf(groupnameselect.getSelectedItem().getId());
  459. Log.Debug(this, groupnameselect.getSelectedItem().getId());
  460. } else {
  461. groupsids_ = 1;
  462. }
  463. dateadded_ = labeledDateChooser1.getDate();
  464. intaddedby_ = User.getUserId(addedby.getText());
  465. description_ = notes.getText();
  466. try {
  467. netvalue_ = FormatNumber.parseDezimal(netvalue.getText());
  468. } catch (Exception e) {
  469. netvalue_ = BigDecimal.ZERO;
  470. }
  471. try {
  472. brutvalue_ = FormatNumber.parseDezimal(value.getText());
  473. } catch (Exception e) {
  474. brutvalue_ = BigDecimal.ZERO;
  475. }
  476. try {
  477. taxpercentvalue_ = Tax.getTaxValue(Integer.valueOf(taxrate.getSelectedItem().getId()));
  478. } catch (Exception numberFormatException) {
  479. taxpercentvalue_ = BigDecimal.ZERO;
  480. }
  481. return true;
  482. }
  483. @Override
  484. public void exposeData() {
  485. number.setText(cname_);
  486. notes.setText(description_);
  487. value.setText(FormatNumber.formatDezimal(brutvalue_));
  488. netvalue.setText(FormatNumber.formatDezimal(netvalue_));
  489. try {
  490. Account a = (Account) DatabaseObject.getObject(Context.getAccounts(), accountsids_);
  491. accountselect.setSelectedItem(a.__getIDS());
  492. path.setText(a.__getHierarchypath());
  493. } catch (NodataFoundException ex) {
  494. Log.Debug(this, ex.getMessage());
  495. }
  496. try {
  497. groupnameselect.setModel(DatabaseObject.getObject(Context.getGroup(), groupsids_));
  498. } catch (NodataFoundException ex) {
  499. Log.Debug(this, ex.getMessage());
  500. }
  501. addedby.setText(User.getUsername(intaddedby_));
  502. labeledDateChooser1.setDate((dateadded_));
  503. taxrate.setSelectedItem(Tax.getTaxId(taxpercentvalue_));
  504. getTaxRate();
  505. }
  506. @Override
  507. public void refresh() {
  508. Runnable runnable = new Runnable() {
  509. @Override
  510. public void run() {
  511. groupnameselect.triggerSearch();
  512. taxrate.triggerSearch();
  513. try {
  514. itemtable.setModel(new MPTableModel(Revenue.getRevenues(), Headers.EXPENSE));
  515. } catch (NodataFoundException e) {
  516. Log.Debug(this, e.getMessage());
  517. }
  518. try {
  519. accmod = DatabaseObject.getObjects(Context.getAccounts(), new QueryCriteria("intaccounttype", Account.INCOME));
  520. accountselect.setModel(accmod);
  521. } catch (NodataFoundException e) {
  522. Log.Debug(this, e.getMessage());
  523. }
  524. try {
  525. accountselect.setSelectedItem(mpv5.db.objects.User.getCurrentUser().getProperties().getProperty(me, "accountselect", 1));
  526. formatTable();
  527. } catch (Exception e) {
  528. Log.Debug(this, e.getMessage());
  529. }
  530. getTaxRate();
  531. }
  532. };
  533. SwingUtilities.invokeLater(runnable);
  534. }
  535. /**
  536. *
  537. */
  538. public void formatTable() {
  539. // TableFormat.resizeCols(itemtable, new Integer[]{100, 333, 100}, false);
  540. }
  541. @Override
  542. public void paste(DatabaseObject... dbo) {
  543. mpv5.YabsViewProxy.instance().addMessage(Messages.NOT_POSSIBLE.toString() + Messages.ACTION_PASTE.toString(), Color.RED);
  544. }
  545. @Override
  546. public void showSearchBar(boolean show) {
  547. }
  548. @Override
  549. public void actionAfterSave() {
  550. Runnable runnable = new Runnable() {
  551. public void run() {
  552. try {
  553. itemtable.setModel(new MPTableModel(Revenue.getRevenues(), Headers.EXPENSE));
  554. formatTable();
  555. } catch (NodataFoundException ex) {
  556. }
  557. }
  558. };
  559. SwingUtilities.invokeLater(runnable);
  560. }
  561. @Override
  562. public void actionAfterCreate() {
  563. Runnable runnable = new Runnable() {
  564. public void run() {
  565. try {
  566. itemtable.setModel(new MPTableModel(Revenue.getRevenues(), Headers.EXPENSE));
  567. formatTable();
  568. } catch (NodataFoundException ex) {
  569. }
  570. }
  571. };
  572. SwingUtilities.invokeLater(runnable);
  573. }
  574. public void actionBeforeCreate() {
  575. }
  576. public void actionBeforeSave() {
  577. }
  578. public void mail() {
  579. }
  580. public void print() {
  581. Export.print(this);
  582. }
  583. private void getTaxRate() {
  584. try {
  585. MPComboBoxModelItem t = taxrate.getValue();
  586. if (t == null) {
  587. tax = BigDecimal.ZERO;
  588. taxrate.setSelectedIndex(-1);
  589. } else {
  590. tax = Tax.getTaxValue(Integer.valueOf(t.getId()));
  591. }
  592. Log.Debug(this, "Selected Taxrate: " + tax);
  593. } catch (Exception ex) {
  594. Log.Debug(this, "Reading Taxrate failed: Assuming Zero");
  595. tax = BigDecimal.ZERO;
  596. }
  597. calculate();
  598. }
  599. // class calc extends Thread {
  600. //
  601. // @Override
  602. // public void run() {
  603. // while (true) {
  604. // while (isShowing()) {
  605. // BigDecimal tax = new BigDecimal("0");
  606. // try {
  607. // MPComboBoxModelItem t = taxrate.getValue();
  608. // tax = Tax.getTaxValue(Integer.valueOf(t.getId()));
  609. // } catch (Exception e) {
  610. // try {
  611. // tax = new BigDecimal(taxrate.getText());
  612. // } catch (Exception numberFormatException) {
  613. // tax = new BigDecimal("0");
  614. // }
  615. // }
  616. //
  617. // try {
  618. // netvalue.setText(FormatNumber.formatLokalCurrency(FormatNumber.parseDezimal(value.getText()).divide((tax.divide(new BigDecimal("100"))).add(BigDecimal.ONE))));
  619. // } catch (Exception e) {
  620. // netvalue.setText(FormatNumber.formatLokalCurrency(0d));
  621. // }
  622. // try {
  623. // sleep(333);
  624. // } catch (InterruptedException ex) {
  625. // }
  626. // }
  627. // }
  628. // }
  629. // }
  630. }