// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta & previous Openbravo POS works // http://www.unicenta.net/unicentaopos // // This file is part of uniCenta oPOS // // uniCenta oPOS is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // uniCenta oPOS is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>. package com.openbravo.pos.inventory; import com.openbravo.basic.BasicException; import com.openbravo.data.gui.ComboBoxValModel; import com.openbravo.data.loader.SentenceList; import com.openbravo.data.user.DirtyManager; import com.openbravo.data.user.EditorRecord; import com.openbravo.format.Formats; import com.openbravo.pos.forms.AppLocal; import com.openbravo.pos.forms.DataLogicSales; import com.openbravo.pos.sales.TaxesLogic; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.Date; import java.util.UUID; import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * * @author adrianromero */ public final class ProductsEditor extends JPanel implements EditorRecord { private SentenceList m_sentcat; private ComboBoxValModel m_CategoryModel; private SentenceList taxcatsent; private ComboBoxValModel taxcatmodel; private SentenceList attsent; private ComboBoxValModel attmodel; private SentenceList taxsent; private TaxesLogic taxeslogic; private ComboBoxValModel m_CodetypeModel; private Object m_id; private Object pricesell; private boolean priceselllock = false; private boolean reportlock = false; /** Creates new form JEditProduct */ public ProductsEditor(DataLogicSales dlSales, DirtyManager dirty) { initComponents(); // Taxes sentence taxsent = dlSales.getTaxList(); // Categories model m_sentcat = dlSales.getCategoriesList(); m_CategoryModel = new ComboBoxValModel(); // Taxes model taxcatsent = dlSales.getTaxCategoriesList(); taxcatmodel = new ComboBoxValModel(); // Attributes model attsent = dlSales.getAttributeSetList(); attmodel = new ComboBoxValModel(); m_CodetypeModel = new ComboBoxValModel(); m_CodetypeModel.add(null); m_CodetypeModel.add(CodeType.EAN13); m_CodetypeModel.add(CodeType.CODE128); m_jCodetype.setModel(m_CodetypeModel); m_jCodetype.setVisible(false); m_jRef.getDocument().addDocumentListener(dirty); m_jCode.getDocument().addDocumentListener(dirty); m_jName.getDocument().addDocumentListener(dirty); m_jComment.addActionListener(dirty); m_jScale.addActionListener(dirty); m_jCategory.addActionListener(dirty); m_jTax.addActionListener(dirty); m_jAtt.addActionListener(dirty); m_jPriceBuy.getDocument().addDocumentListener(dirty); m_jPriceSell.getDocument().addDocumentListener(dirty); m_jImage.addPropertyChangeListener("image", dirty); m_jstockcost.getDocument().addDocumentListener(dirty); m_jstockvolume.getDocument().addDocumentListener(dirty); m_jInCatalog.addActionListener(dirty); m_jCatalogOrder.getDocument().addDocumentListener(dirty); txtAttributes.getDocument().addDocumentListener(dirty); // Added JG 20.12.10 - Kitchen Print m_jKitchen.addActionListener(dirty); // ** // Added JG 25.06.11 - Is Service m_jService.addActionListener(dirty); // ** // Added JDL 19.12.12 - Variable price product m_jVprice.addActionListener(dirty); // // Added JDL 09.02.13 m_jVerpatrib.addActionListener(dirty); // // Added JDL 09.02.13 m_jTextTip.getDocument().addDocumentListener(dirty); m_jDisplay.getDocument().addDocumentListener(dirty); FieldsManager fm = new FieldsManager(); m_jPriceBuy.getDocument().addDocumentListener(fm); m_jPriceSell.getDocument().addDocumentListener(new PriceSellManager()); m_jTax.addActionListener(fm); m_jPriceSellTax.getDocument().addDocumentListener(new PriceTaxManager()); m_jmargin.getDocument().addDocumentListener(new MarginManager()); // Added JDL 26.05.13 warranty receipt m_jCheckWarrantyReceipt.addActionListener(dirty); m_jGrossProfit.getDocument().addDocumentListener(new MarginManager()); writeValueEOF(); } public void activate() throws BasicException { // Load the taxes logic taxeslogic = new TaxesLogic(taxsent.list()); m_CategoryModel = new ComboBoxValModel(m_sentcat.list()); m_jCategory.setModel(m_CategoryModel); taxcatmodel = new ComboBoxValModel(taxcatsent.list()); m_jTax.setModel(taxcatmodel); attmodel = new ComboBoxValModel(attsent.list()); attmodel.add(0, null); m_jAtt.setModel(attmodel); } @Override public void refresh() { } @Override public void writeValueEOF() { reportlock = true; m_jTitle.setText(AppLocal.getIntString("label.recordeof")); m_id = null; m_jRef.setText(null); m_jCode.setText(null); m_jName.setText(null); m_jComment.setSelected(false); m_jScale.setSelected(false); m_CategoryModel.setSelectedKey(null); taxcatmodel.setSelectedKey(null); attmodel.setSelectedKey(null); m_jPriceBuy.setText(null); setPriceSell(null); m_jImage.setImage(null); m_jstockcost.setText(null); m_jstockvolume.setText(null); m_jInCatalog.setSelected(false); m_jCatalogOrder.setText(null); txtAttributes.setText(null); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setSelected(false); // ** // Added JG 25.06.11 - Is Service m_jService.setSelected(false); // ** m_jDisplay.setText(null); // Addes JDL 19.12.12 - Var Price m_jVprice.setSelected(false); // // Added JDL 09.02.13 for Chris m_jVerpatrib.setSelected(false); // Added JDL 09.04.13 m_jTextTip.setText(null); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setSelected(false); reportlock = false; m_jRef.setEnabled(false); m_jCode.setEnabled(false); m_jName.setEnabled(false); m_jComment.setEnabled(false); m_jScale.setEnabled(false); m_jCategory.setEnabled(false); m_jTax.setEnabled(false); m_jAtt.setEnabled(false); m_jPriceBuy.setEnabled(false); m_jPriceSell.setEnabled(false); m_jPriceSellTax.setEnabled(false); m_jmargin.setEnabled(false); m_jImage.setEnabled(false); m_jstockcost.setEnabled(false); m_jstockvolume.setEnabled(false); m_jInCatalog.setEnabled(false); m_jCatalogOrder.setEnabled(false); txtAttributes.setEnabled(false); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setEnabled(false); // ** // Added JG 25.06.11 - Is Service m_jService.setEnabled(false); // ** m_jDisplay.setEnabled(false); // Added JDL 19.12.12 - Var Price m_jVprice.setEnabled(false); // Added JDL 09.02.13 m_jVerpatrib.setEnabled(false); // ADDED JDL 09.04.13 m_jTextTip.setEnabled(false); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setEnabled(false); calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void writeValueInsert() { reportlock = true; m_jTitle.setText(AppLocal.getIntString("label.recordnew")); m_id = UUID.randomUUID().toString(); m_jRef.setText(null); m_jCode.setText(null); m_jName.setText(null); m_jComment.setSelected(false); m_jScale.setSelected(false); m_CategoryModel.setSelectedKey(null); taxcatmodel.setSelectedKey(null); attmodel.setSelectedKey(null); m_jPriceBuy.setText(null); setPriceSell(null); m_jImage.setImage(null); m_jstockcost.setText(null); m_jstockvolume.setText(null); m_jInCatalog.setSelected(true); m_jCatalogOrder.setText(null); txtAttributes.setText(null); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setSelected(false); // ** // Added JG 25.06.11 - Is Service m_jService.setSelected(false); // ** m_jDisplay.setText(null); // Added JDL 19.12.12 - Var Price m_jVprice.setSelected(false); // Added JDL 09.02.13 m_jVerpatrib.setSelected(false); // ADDED JDL 09.04.13 m_jTextTip.setText(null); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setSelected(false); reportlock = false; // Los habilitados m_jRef.setEnabled(true); m_jCode.setEnabled(true); m_jName.setEnabled(true); m_jComment.setEnabled(true); m_jScale.setEnabled(true); m_jCategory.setEnabled(true); m_jTax.setEnabled(true); m_jAtt.setEnabled(true); m_jPriceBuy.setEnabled(true); m_jPriceSell.setEnabled(true); m_jPriceSellTax.setEnabled(true); m_jmargin.setEnabled(true); m_jImage.setEnabled(true); m_jstockcost.setEnabled(true); m_jstockvolume.setEnabled(true); m_jInCatalog.setEnabled(true); m_jCatalogOrder.setEnabled(false); txtAttributes.setEnabled(true); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setEnabled(true); // ** // Added JG 25.06.11 - Is Service m_jService.setEnabled(true); // ** m_jDisplay.setEnabled(true); // Added JDL 19.12.12 - var Price m_jVprice.setEnabled(true); // Added JDL 09.02.13 m_jVerpatrib.setEnabled(true); // ADDED JDL 08.04.13 m_jTextTip.setEnabled(true); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setEnabled(true); calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void writeValueDelete(Object value) { reportlock = true; Object[] myprod = (Object[]) value; m_jTitle.setText(Formats.STRING.formatValue(myprod[1]) + " - " + Formats.STRING.formatValue(myprod[3]) + " " + AppLocal.getIntString("label.recorddeleted")); m_id = myprod[0]; m_jRef.setText(Formats.STRING.formatValue(myprod[1])); m_jCode.setText(Formats.STRING.formatValue(myprod[2])); m_jName.setText(Formats.STRING.formatValue(myprod[3])); m_jComment.setSelected(((Boolean)myprod[4]).booleanValue()); m_jScale.setSelected(((Boolean)myprod[5]).booleanValue()); m_jPriceBuy.setText(Formats.CURRENCY.formatValue(myprod[6])); setPriceSell(myprod[7]); m_CategoryModel.setSelectedKey(myprod[8]); taxcatmodel.setSelectedKey(myprod[9]); attmodel.setSelectedKey(myprod[10]); m_jImage.setImage((BufferedImage) myprod[11]); m_jstockcost.setText(Formats.CURRENCY.formatValue(myprod[12])); m_jstockvolume.setText(Formats.DOUBLE.formatValue(myprod[13])); m_jInCatalog.setSelected(((Boolean)myprod[14]).booleanValue()); m_jCatalogOrder.setText(Formats.INT.formatValue(myprod[15])); txtAttributes.setText(Formats.BYTEA.formatValue(myprod[16])); m_jKitchen.setSelected(((Boolean)myprod[17]).booleanValue()); // Added JG 25.06.11 - Is Service m_jService.setSelected(((Boolean)myprod[18]).booleanValue()); m_jDisplay.setText(Formats.STRING.formatValue(myprod[19])); // Added JDL 19.12.12 - Var Price m_jVprice.setSelected(((Boolean)myprod[20]).booleanValue()); // Added JDL 09.02.13 m_jVerpatrib.setSelected(((Boolean)myprod[21]).booleanValue()); // Added JDL 09.04.13 m_jTextTip.setText(Formats.STRING.formatValue(myprod[22])); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setSelected(((Boolean)myprod[23]).booleanValue()); txtAttributes.setCaretPosition(0); reportlock = false; // Los habilitados m_jRef.setEnabled(false); m_jCode.setEnabled(false); m_jName.setEnabled(false); m_jComment.setEnabled(false); m_jScale.setEnabled(false); m_jCategory.setEnabled(false); m_jTax.setEnabled(false); m_jAtt.setEnabled(false); m_jPriceBuy.setEnabled(false); m_jPriceSell.setEnabled(false); m_jPriceSellTax.setEnabled(false); m_jmargin.setEnabled(false); m_jImage.setEnabled(false); m_jstockcost.setEnabled(false); m_jstockvolume.setEnabled(false); m_jInCatalog.setEnabled(false); m_jCatalogOrder.setEnabled(false); txtAttributes.setEnabled(false); // Added JG 20.12.10 - Ktichen Print m_jKitchen.setEnabled(false); // Added JG 25.06.11 - Is Service m_jService.setEnabled(true); // ** m_jDisplay.setEnabled(false); // Added JDL 19.12.12 - Var Price m_jVprice.setEnabled(false); // Added JDL 09.02.13 for Chris m_jVerpatrib.setEnabled(false); // Added JDL 09.04.13 m_jTextTip.setEnabled(false); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setEnabled(false); calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void writeValueEdit(Object value) { reportlock = true; Object[] myprod = (Object[]) value; m_jTitle.setText(Formats.STRING.formatValue(myprod[1]) + " - " + Formats.STRING.formatValue(myprod[3])); m_id = myprod[0]; m_jRef.setText(Formats.STRING.formatValue(myprod[1])); m_jCode.setText(Formats.STRING.formatValue(myprod[2])); m_jName.setText(Formats.STRING.formatValue(myprod[3])); m_jComment.setSelected(((Boolean)myprod[4]).booleanValue()); m_jScale.setSelected(((Boolean)myprod[5]).booleanValue()); m_jPriceBuy.setText(Formats.CURRENCY.formatValue(myprod[6])); setPriceSell(myprod[7]); m_CategoryModel.setSelectedKey(myprod[8]); taxcatmodel.setSelectedKey(myprod[9]); attmodel.setSelectedKey(myprod[10]); m_jImage.setImage((BufferedImage) myprod[11]); m_jstockcost.setText(Formats.CURRENCY.formatValue(myprod[12])); m_jstockvolume.setText(Formats.DOUBLE.formatValue(myprod[13])); m_jInCatalog.setSelected(((Boolean)myprod[14]).booleanValue()); m_jCatalogOrder.setText(Formats.INT.formatValue(myprod[15])); txtAttributes.setText(Formats.BYTEA.formatValue(myprod[16])); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setSelected(((Boolean)myprod[17]).booleanValue()); // ** // Added JG 25.06.11 - Is Service m_jService.setSelected(((Boolean)myprod[18]).booleanValue()); // ** m_jDisplay.setText(Formats.STRING.formatValue(myprod[19])); // Added JDL 19.12.12 - Var Price m_jVprice.setSelected(((Boolean)myprod[20]).booleanValue()); // // Added JDL 09.02.13 for Chris m_jVerpatrib.setSelected(((Boolean)myprod[21]).booleanValue()); // Added JDL 09.04.13 m_jTextTip.setText(Formats.STRING.formatValue(myprod[22])); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setSelected(((Boolean)myprod[23]).booleanValue()); txtAttributes.setCaretPosition(0); reportlock = false; // Los habilitados m_jRef.setEnabled(true); m_jCode.setEnabled(true); m_jName.setEnabled(true); m_jComment.setEnabled(true); m_jScale.setEnabled(true); m_jCategory.setEnabled(true); m_jTax.setEnabled(true); m_jAtt.setEnabled(true); m_jPriceBuy.setEnabled(true); m_jPriceSell.setEnabled(true); m_jPriceSellTax.setEnabled(true); m_jmargin.setEnabled(true); m_jImage.setEnabled(true); m_jstockcost.setEnabled(true); m_jstockvolume.setEnabled(true); m_jInCatalog.setEnabled(true); m_jCatalogOrder.setEnabled(m_jInCatalog.isSelected()); txtAttributes.setEnabled(true); // Added JG 20.12.10 - Kitchen Print m_jKitchen.setEnabled(true); // ** // Added JG 25.06.11 - Is Service m_jService.setEnabled(true); // ** m_jDisplay.setEnabled(true); // Added JG 20 Jul 13 - HTML Button setButtonHTML(); // Added JDL 19.12.112 - Var Price m_jVprice.setEnabled(true); // Added JDL 09.02.13 for Chris m_jVerpatrib.setEnabled(true); // Added JDL 09.04.13 m_jTextTip.setEnabled(true); // ADDed JDL 26.05.13 m_jCheckWarrantyReceipt.setEnabled(true); calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public Object createValue() throws BasicException { Object[] myprod = new Object[24]; myprod[0] = m_id; myprod[1] = m_jRef.getText(); myprod[2] = m_jCode.getText(); myprod[3] = m_jName.getText(); myprod[4] = Boolean.valueOf(m_jComment.isSelected()); myprod[5] = Boolean.valueOf(m_jScale.isSelected()); myprod[6] = Formats.CURRENCY.parseValue(m_jPriceBuy.getText()); myprod[7] = pricesell; myprod[8] = m_CategoryModel.getSelectedKey(); myprod[9] = taxcatmodel.getSelectedKey(); myprod[10] = attmodel.getSelectedKey(); myprod[11] = m_jImage.getImage(); myprod[12] = Formats.CURRENCY.parseValue(m_jstockcost.getText()); myprod[13] = Formats.DOUBLE.parseValue(m_jstockvolume.getText()); myprod[14] = Boolean.valueOf(m_jInCatalog.isSelected()); myprod[15] = Formats.INT.parseValue(m_jCatalogOrder.getText()); myprod[16] = Formats.BYTEA.parseValue(txtAttributes.getText()); // Added JG 20.12.10 - Kitchen Print myprod[17] = Boolean.valueOf(m_jKitchen.isSelected()); // ** // Added JG 25.06.11 - Is Service myprod[18] = Boolean.valueOf(m_jService.isSelected()); // ** myprod[19] = m_jDisplay.getText(); // Added JDL 19.12.12 - Var Price myprod[20] = Boolean.valueOf(m_jVprice.isSelected()); // Added JDL 09.02.13 for Chris myprod[21] = Boolean.valueOf(m_jVerpatrib.isSelected()); // Added JDL 09.04.13 myprod[22] = m_jTextTip.getText(); // ADDed JDL 26.05.13 myprod[23] = Boolean.valueOf(m_jCheckWarrantyReceipt.isSelected()); return myprod; } @Override public Component getComponent() { return this; } // ADDED JG 19 NOV 12 - AUTOFILL CODE FIELD AS CANNOT BE NOT NULL // AMENDED JDL 11 MAY 12 - STOP AUTOFILL IF FIELD ALREADY EXSISTS, AND GENERATE A RANDOM CODE NUMBER private void setCode() { Long lDateTime= new Date().getTime(); // USED FOR RANDOM CODE DETAILS if (!reportlock) { reportlock = true; if (m_jRef == null) { //m_jCode.setText("0123456789012"); m_jCode.setText(Long.toString(lDateTime)); } else { if (m_jCode.getText()==null || "".equals(m_jCode.getText())){ m_jCode.setText(m_jRef.getText());} } reportlock = false; } } // ADDED JG 19 NOV 12 - AUTOFILL BUTTON // AMENDED JDL 11 MAY 12 - STOP AUTOFILL IF FIELD ALREADY EXSISTS private void setDisplay() { String str = (m_jName.getText()); int length = str.length(); if (!reportlock) { reportlock = true; if (length == 0) { m_jDisplay.setText("<html>" + "Need Button Text"); } else { if (m_jDisplay.getText()==null || "".equals(m_jDisplay.getText())){ m_jDisplay.setText("<html>" + m_jName.getText());} } reportlock = false; } } // ADDED JG 20 Jul 13 - AUTOFILL HTML BUTTON private void setButtonHTML() { String str = (m_jDisplay.getText()); int length = str.length(); if (!reportlock) { reportlock = true; if (length == 0) { jButtonHTML.setText("Click Me"); } else { jButtonHTML.setText(m_jDisplay.getText()); } reportlock = false; } } private void calculateMargin() { if (!reportlock) { reportlock = true; Double dPriceBuy = readCurrency(m_jPriceBuy.getText()); Double dPriceSell = (Double) pricesell; if (dPriceBuy == null || dPriceSell == null) { m_jmargin.setText(null); } else { m_jmargin.setText(Formats.PERCENT.formatValue(new Double(dPriceSell.doubleValue() / dPriceBuy.doubleValue() - 1.0))); } reportlock = false; } } private void calculatePriceSellTax() { if (!reportlock) { reportlock = true; Double dPriceSell = (Double) pricesell; if (dPriceSell == null) { m_jPriceSellTax.setText(null); } else { double dTaxRate = taxeslogic.getTaxRate((TaxCategoryInfo) taxcatmodel.getSelectedItem()); m_jPriceSellTax.setText(Formats.CURRENCY.formatValue(new Double(dPriceSell.doubleValue() * (1.0 + dTaxRate)))); } reportlock = false; } } private void calculateGP() { if (!reportlock) { reportlock = true; Double dPriceBuy = readCurrency(m_jPriceBuy.getText()); Double dPriceSell = (Double) pricesell; if (dPriceBuy == null || dPriceSell == null) { m_jGrossProfit.setText(null); } else { m_jGrossProfit.setText(Formats.PERCENT.formatValue(new Double((dPriceSell.doubleValue() - dPriceBuy.doubleValue())/dPriceSell.doubleValue()))); } reportlock = false; } } private void calculatePriceSellfromMargin() { if (!reportlock) { reportlock = true; Double dPriceBuy = readCurrency(m_jPriceBuy.getText()); Double dMargin = readPercent(m_jmargin.getText()); if (dMargin == null || dPriceBuy == null) { setPriceSell(null); } else { setPriceSell(new Double(dPriceBuy.doubleValue() * (1.0 + dMargin.doubleValue()))); } reportlock = false; } } private void calculatePriceSellfromPST() { if (!reportlock) { reportlock = true; Double dPriceSellTax = readCurrency(m_jPriceSellTax.getText()); if (dPriceSellTax == null) { setPriceSell(null); } else { double dTaxRate = taxeslogic.getTaxRate((TaxCategoryInfo) taxcatmodel.getSelectedItem()); setPriceSell(new Double(dPriceSellTax.doubleValue() / (1.0 + dTaxRate))); } reportlock = false; } } private void setPriceSell(Object value) { if (!priceselllock) { priceselllock = true; pricesell = value; m_jPriceSell.setText(Formats.CURRENCY.formatValue(pricesell)); priceselllock = false; } } private class PriceSellManager implements DocumentListener { @Override public void changedUpdate(DocumentEvent e) { if (!priceselllock) { priceselllock = true; pricesell = readCurrency(m_jPriceSell.getText()); priceselllock = false; } calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void insertUpdate(DocumentEvent e) { if (!priceselllock) { priceselllock = true; pricesell = readCurrency(m_jPriceSell.getText()); priceselllock = false; } calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void removeUpdate(DocumentEvent e) { if (!priceselllock) { priceselllock = true; pricesell = readCurrency(m_jPriceSell.getText()); priceselllock = false; } calculateMargin(); calculatePriceSellTax(); calculateGP(); } } private class FieldsManager implements DocumentListener, ActionListener { @Override public void changedUpdate(DocumentEvent e) { calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void insertUpdate(DocumentEvent e) { calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void removeUpdate(DocumentEvent e) { calculateMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void actionPerformed(ActionEvent e) { calculateMargin(); calculatePriceSellTax(); calculateGP(); } } private class PriceTaxManager implements DocumentListener { @Override public void changedUpdate(DocumentEvent e) { calculatePriceSellfromPST(); calculateMargin(); calculateGP(); } @Override public void insertUpdate(DocumentEvent e) { calculatePriceSellfromPST(); calculateMargin(); calculateGP(); } @Override public void removeUpdate(DocumentEvent e) { calculatePriceSellfromPST(); calculateMargin(); calculateGP(); } } private class MarginManager implements DocumentListener { @Override public void changedUpdate(DocumentEvent e) { calculatePriceSellfromMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void insertUpdate(DocumentEvent e) { calculatePriceSellfromMargin(); calculatePriceSellTax(); calculateGP(); } @Override public void removeUpdate(DocumentEvent e) { calculatePriceSellfromMargin(); calculatePriceSellTax(); calculateGP(); } } private static Double readCurrency(String sValue) { try { return (Double) Formats.CURRENCY.parseValue(sValue); } catch (BasicException e) { return null; } } private static Double readPercent(String sValue) { try { return (Double) Formats.PERCENT.parseValue(sValue); } catch (BasicException e) { return null; } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { m_jTitle = new javax.swing.JLabel(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); m_jRef = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); m_jCode = new javax.swing.JTextField(); m_jCodetype = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); m_jName = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); m_jCategory = new javax.swing.JComboBox(); jLabel13 = new javax.swing.JLabel(); m_jAtt = new javax.swing.JComboBox(); jLabel7 = new javax.swing.JLabel(); m_jTax = new javax.swing.JComboBox(); jLabel16 = new javax.swing.JLabel(); m_jPriceSellTax = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); m_jPriceSell = new javax.swing.JTextField(); jLabel19 = new javax.swing.JLabel(); m_jmargin = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); m_jPriceBuy = new javax.swing.JTextField(); m_jVerpatrib = new javax.swing.JCheckBox(); m_jTextTip = new javax.swing.JTextField(); jLabel21 = new javax.swing.JLabel(); m_jCheckWarrantyReceipt = new javax.swing.JCheckBox(); m_jGrossProfit = new javax.swing.JTextField(); jLabel22 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); m_jstockcost = new javax.swing.JTextField(); jLabel10 = new javax.swing.JLabel(); m_jstockvolume = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); m_jInCatalog = new javax.swing.JCheckBox(); jLabel18 = new javax.swing.JLabel(); m_jCatalogOrder = new javax.swing.JTextField(); jLabel15 = new javax.swing.JLabel(); m_jService = new javax.swing.JCheckBox(); jLabel11 = new javax.swing.JLabel(); m_jComment = new javax.swing.JCheckBox(); jLabel12 = new javax.swing.JLabel(); m_jScale = new javax.swing.JCheckBox(); m_jKitchen = new javax.swing.JCheckBox(); jLabel14 = new javax.swing.JLabel(); jLabel20 = new javax.swing.JLabel(); m_jVprice = new javax.swing.JCheckBox(); m_jImage = new com.openbravo.data.gui.JImageEditor(); jPanel4 = new javax.swing.JPanel(); jLabel28 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); m_jDisplay = new javax.swing.JTextPane(); jButtonHTML = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); txtAttributes = new javax.swing.JTextArea(); setLayout(null); m_jTitle.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N m_jTitle.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); add(m_jTitle); m_jTitle.setBounds(310, 0, 240, 20); jTabbedPane1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel1.setLayout(null); jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setText(AppLocal.getIntString("label.prodref")); // NOI18N jPanel1.add(jLabel1); jLabel1.setBounds(10, 10, 65, 25); m_jRef.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jRef.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { m_jRefFocusLost(evt); } }); jPanel1.add(m_jRef); m_jRef.setBounds(130, 10, 80, 25); jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel6.setText(AppLocal.getIntString("label.prodbarcode")); // NOI18N jPanel1.add(jLabel6); jLabel6.setBounds(10, 40, 110, 25); m_jCode.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel1.add(m_jCode); m_jCode.setBounds(130, 40, 170, 25); m_jCodetype.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jPanel1.add(m_jCodetype); m_jCodetype.setBounds(310, 40, 90, 25); jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel2.setText(AppLocal.getIntString("label.prodname")); // NOI18N jPanel1.add(jLabel2); jLabel2.setBounds(10, 70, 100, 25); m_jName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jName.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { m_jNameFocusLost(evt); } }); jPanel1.add(m_jName); m_jName.setBounds(130, 70, 270, 25); jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel5.setText(AppLocal.getIntString("label.prodcategory")); // NOI18N jPanel1.add(jLabel5); jLabel5.setBounds(10, 100, 110, 25); m_jCategory.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jPanel1.add(m_jCategory); m_jCategory.setBounds(130, 100, 170, 25); jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel13.setText(AppLocal.getIntString("label.attributes")); // NOI18N jPanel1.add(jLabel13); jLabel13.setBounds(10, 130, 110, 25); m_jAtt.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jPanel1.add(m_jAtt); m_jAtt.setBounds(130, 130, 170, 25); jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel7.setText(AppLocal.getIntString("label.taxcategory")); // NOI18N jPanel1.add(jLabel7); jLabel7.setBounds(10, 160, 110, 25); m_jTax.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N m_jTax.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jTaxActionPerformed(evt); } }); jPanel1.add(m_jTax); m_jTax.setBounds(130, 160, 170, 25); jLabel16.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel16.setText(AppLocal.getIntString("label.prodpriceselltax")); // NOI18N jPanel1.add(jLabel16); jLabel16.setBounds(10, 190, 90, 25); m_jPriceSellTax.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jPriceSellTax.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jPriceSellTax.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jPriceSellTaxActionPerformed(evt); } }); jPanel1.add(m_jPriceSellTax); m_jPriceSellTax.setBounds(130, 190, 80, 25); jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText(AppLocal.getIntString("label.prodpricesell")); // NOI18N jPanel1.add(jLabel4); jLabel4.setBounds(210, 190, 100, 25); m_jPriceSell.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jPriceSell.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel1.add(m_jPriceSell); m_jPriceSell.setBounds(310, 190, 70, 25); jLabel19.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N jLabel19.setText(bundle.getString("label.margin")); // NOI18N jLabel19.setPreferredSize(new java.awt.Dimension(48, 15)); jPanel1.add(jLabel19); jLabel19.setBounds(390, 190, 70, 25); m_jmargin.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jmargin.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jmargin.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR)); m_jmargin.setEnabled(false); jPanel1.add(m_jmargin); m_jmargin.setBounds(460, 190, 70, 25); jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setText(AppLocal.getIntString("label.prodpricebuy")); // NOI18N jPanel1.add(jLabel3); jLabel3.setBounds(10, 220, 80, 25); m_jPriceBuy.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jPriceBuy.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel1.add(m_jPriceBuy); m_jPriceBuy.setBounds(130, 220, 80, 25); m_jVerpatrib.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jVerpatrib.setText(bundle.getString("label.mandatory")); // NOI18N m_jVerpatrib.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING); m_jVerpatrib.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { none(evt); } }); jPanel1.add(m_jVerpatrib); m_jVerpatrib.setBounds(310, 130, 120, 23); m_jTextTip.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel1.add(m_jTextTip); m_jTextTip.setBounds(130, 250, 220, 25); jLabel21.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel21.setText(bundle.getString("label.texttip")); // NOI18N jPanel1.add(jLabel21); jLabel21.setBounds(10, 250, 100, 25); m_jCheckWarrantyReceipt.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCheckWarrantyReceipt.setText(bundle.getString("label.productreceipt")); // NOI18N m_jCheckWarrantyReceipt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jCheckWarrantyReceiptActionPerformed(evt); } }); jPanel1.add(m_jCheckWarrantyReceipt); m_jCheckWarrantyReceipt.setBounds(130, 290, 310, 23); m_jGrossProfit.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jGrossProfit.setHorizontalAlignment(javax.swing.JTextField.RIGHT); m_jGrossProfit.setDisabledTextColor(new java.awt.Color(0, 0, 0)); m_jGrossProfit.setEnabled(false); jPanel1.add(m_jGrossProfit); m_jGrossProfit.setBounds(460, 220, 70, 25); jLabel22.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel22.setText(bundle.getString("label.grossprofit")); // NOI18N jPanel1.add(jLabel22); jLabel22.setBounds(370, 220, 90, 20); jTabbedPane1.addTab(AppLocal.getIntString("label.prodgeneral"), jPanel1); // NOI18N jPanel2.setLayout(null); jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel9.setText(AppLocal.getIntString("label.prodstockcost")); // NOI18N jPanel2.add(jLabel9); jLabel9.setBounds(250, 60, 120, 25); m_jstockcost.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jstockcost.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel2.add(m_jstockcost); m_jstockcost.setBounds(370, 60, 80, 25); jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel10.setText(AppLocal.getIntString("label.prodstockvol")); // NOI18N jPanel2.add(jLabel10); jLabel10.setBounds(250, 100, 120, 25); m_jstockvolume.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jstockvolume.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel2.add(m_jstockvolume); m_jstockvolume.setBounds(370, 100, 80, 25); jLabel8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel8.setText(AppLocal.getIntString("label.prodincatalog")); // NOI18N jPanel2.add(jLabel8); jLabel8.setBounds(10, 60, 150, 25); m_jInCatalog.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jInCatalog.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jInCatalogActionPerformed(evt); } }); jPanel2.add(m_jInCatalog); m_jInCatalog.setBounds(160, 60, 30, 25); jLabel18.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel18.setText(AppLocal.getIntString("label.prodorder")); // NOI18N jPanel2.add(jLabel18); jLabel18.setBounds(250, 140, 120, 25); m_jCatalogOrder.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jCatalogOrder.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel2.add(m_jCatalogOrder); m_jCatalogOrder.setBounds(370, 140, 80, 25); jLabel15.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel15.setText("Service Item"); jPanel2.add(jLabel15); jLabel15.setBounds(10, 90, 150, 25); m_jService.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jService.setToolTipText("A Service Item will not be deducted from the Inventory"); jPanel2.add(m_jService); m_jService.setBounds(160, 90, 30, 25); m_jService.getAccessibleContext().setAccessibleDescription(null); jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel11.setText(AppLocal.getIntString("label.prodaux")); // NOI18N jPanel2.add(jLabel11); jLabel11.setBounds(10, 120, 150, 25); m_jComment.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel2.add(m_jComment); m_jComment.setBounds(160, 120, 30, 25); jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel12.setText(AppLocal.getIntString("label.prodscale")); // NOI18N jPanel2.add(jLabel12); jLabel12.setBounds(10, 150, 150, 25); m_jScale.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel2.add(m_jScale); m_jScale.setBounds(160, 150, 30, 25); m_jKitchen.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel2.add(m_jKitchen); m_jKitchen.setBounds(160, 180, 30, 25); jLabel14.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel14.setText("Print to Remote Printer"); jPanel2.add(jLabel14); jLabel14.setBounds(10, 180, 150, 25); jLabel20.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel20.setText(bundle.getString("label.variableprice")); // NOI18N jPanel2.add(jLabel20); jLabel20.setBounds(10, 210, 130, 25); m_jVprice.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel2.add(m_jVprice); m_jVprice.setBounds(160, 210, 30, 25); jTabbedPane1.addTab(AppLocal.getIntString("label.prodstock"), jPanel2); // NOI18N jTabbedPane1.addTab("Image", m_jImage); jPanel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel4.setLayout(null); jLabel28.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel28.setText(AppLocal.getIntString("label.btndisplay")); jPanel4.add(jLabel28); jLabel28.setBounds(10, 10, 270, 20); m_jDisplay.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jScrollPane2.setViewportView(m_jDisplay); jPanel4.add(jScrollPane2); jScrollPane2.setBounds(10, 40, 480, 40); jButtonHTML.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jButtonHTML.setText("Test Button"); jButtonHTML.setMargin(new java.awt.Insets(1, 1, 1, 1)); jButtonHTML.setMaximumSize(new java.awt.Dimension(96, 72)); jButtonHTML.setMinimumSize(new java.awt.Dimension(96, 72)); jButtonHTML.setPreferredSize(new java.awt.Dimension(96, 72)); jButtonHTML.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButtonHTMLMouseClicked(evt); } }); jButtonHTML.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonHTMLActionPerformed(evt); } }); jPanel4.add(jButtonHTML); jButtonHTML.setBounds(205, 90, 110, 70); jTabbedPane1.addTab("Button", jPanel4); jPanel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); jPanel3.setLayout(new java.awt.BorderLayout()); txtAttributes.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N jScrollPane1.setViewportView(txtAttributes); jPanel3.add(jScrollPane1, java.awt.BorderLayout.CENTER); jTabbedPane1.addTab(AppLocal.getIntString("label.properties"), jPanel3); // NOI18N add(jTabbedPane1); jTabbedPane1.setBounds(10, 0, 560, 370); }// </editor-fold>//GEN-END:initComponents private void m_jInCatalogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jInCatalogActionPerformed if (m_jInCatalog.isSelected()) { m_jCatalogOrder.setEnabled(true); } else { m_jCatalogOrder.setEnabled(false); m_jCatalogOrder.setText(null); } }//GEN-LAST:event_m_jInCatalogActionPerformed private void m_jTaxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jTaxActionPerformed }//GEN-LAST:event_m_jTaxActionPerformed private void m_jPriceSellTaxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jPriceSellTaxActionPerformed }//GEN-LAST:event_m_jPriceSellTaxActionPerformed private void m_jRefFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_m_jRefFocusLost // ADDED JG 19 NOV 12 - AUTOFILL CODE FIELD AS CANNOT BE NOT NULL setCode(); }//GEN-LAST:event_m_jRefFocusLost private void m_jNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_m_jNameFocusLost // ADDED JG 19 NOV 12 - AUTOFILL setDisplay(); }//GEN-LAST:event_m_jNameFocusLost private void none(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_none }//GEN-LAST:event_none private void m_jCheckWarrantyReceiptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jCheckWarrantyReceiptActionPerformed }//GEN-LAST:event_m_jCheckWarrantyReceiptActionPerformed private void jButtonHTMLMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonHTMLMouseClicked setButtonHTML(); }//GEN-LAST:event_jButtonHTMLMouseClicked private void jButtonHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonHTMLActionPerformed }//GEN-LAST:event_jButtonHTMLActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonHTML; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; 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 jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; 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; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JComboBox m_jAtt; private javax.swing.JTextField m_jCatalogOrder; private javax.swing.JComboBox m_jCategory; private javax.swing.JCheckBox m_jCheckWarrantyReceipt; private javax.swing.JTextField m_jCode; private javax.swing.JComboBox m_jCodetype; private javax.swing.JCheckBox m_jComment; private javax.swing.JTextPane m_jDisplay; private javax.swing.JTextField m_jGrossProfit; private com.openbravo.data.gui.JImageEditor m_jImage; private javax.swing.JCheckBox m_jInCatalog; private javax.swing.JCheckBox m_jKitchen; private javax.swing.JTextField m_jName; private javax.swing.JTextField m_jPriceBuy; private javax.swing.JTextField m_jPriceSell; private javax.swing.JTextField m_jPriceSellTax; private javax.swing.JTextField m_jRef; private javax.swing.JCheckBox m_jScale; private javax.swing.JCheckBox m_jService; private javax.swing.JComboBox m_jTax; private javax.swing.JTextField m_jTextTip; private javax.swing.JLabel m_jTitle; private javax.swing.JCheckBox m_jVerpatrib; private javax.swing.JCheckBox m_jVprice; private javax.swing.JTextField m_jmargin; private javax.swing.JTextField m_jstockcost; private javax.swing.JTextField m_jstockvolume; private javax.swing.JTextArea txtAttributes; // End of variables declaration//GEN-END:variables }