Save This Page
Home » openjdk-7 » net.sourceforge.wisim » controller » [javadoc | source]
    1   /*   ********************************************************************   **
    2   **   Copyright notice                                                       **
    3   **                                                                          **
    4   **   (c) 2003 WiSim Development Team					                              **
    5   **   http://wisim.sourceforge.net/   			                                  **
    6   **                                                                          **
    7   **   All rights reserved                                                    **
    8   **                                                                          **
    9   **   This script is part of the WiSim Business Game project. The WiSim      **
   10   **   project is free software; you can redistribute it and/or modify        **
   11   **   it under the terms of the GNU General Public License as published by   **
   12   **   the Free Software Foundation; either version 2 of the License, or      **
   13   **   (at your option) any later version.                                    **
   14   **                                                                          **
   15   **   The GNU General Public License can be found at                         **
   16   **   http://www.gnu.org/copyleft/gpl.html.                                  **
   17   **   A copy is found in the textfile GPL.txt and important notices to the   **
   18   **   license from the team is found in the textfile LICENSE.txt distributed **
   19   **   in these package.                                                      **
   20   **                                                                          **
   21   **   This copyright notice MUST APPEAR in all copies of the file!           **
   22   **   ********************************************************************   */
   23   
   24   /** JPanelNeuerVertrag
   25    *
   26    * @author  Kay Patzwald und Denise Freitag
   27    * Created on 10. Februar 2003, 18:43
   28    */
   29   
   30   package net.sourceforge.wisim.controller;
   31   
   32   import java.text.DecimalFormat;
   33   import java.text.ParseException;
   34   import java.util.Calendar;
   35   import java.util.Collection;
   36   import java.util.GregorianCalendar;
   37   import java.util.Hashtable;
   38   import java.util.Iterator;
   39   import java.util.Vector;
   40   import java.util.logging.Level;
   41   
   42   import javax.swing.DefaultComboBoxModel;
   43   import javax.swing.JOptionPane;
   44   import javax.swing.JPanel;
   45   
   46   import net.sourceforge.wisim.dao.WiSimDAO;
   47   import net.sourceforge.wisim.dao.WiSimDAOException;
   48   import net.sourceforge.wisim.dao.WiSimDAOWriteException;
   49   import net.sourceforge.wisim.model.Artikel;
   50   import net.sourceforge.wisim.model.AuftragsPosition;
   51   import net.sourceforge.wisim.model.Auftragsrechnung;
   52   import net.sourceforge.wisim.model.Kunde;
   53   import net.sourceforge.wisim.model.Vertrag;
   54   
   55   /**
   56    * @author Denise Freitag
   57    */
   58   public class JPanelNeuerVertrag extends JPanel {
   59   	private WiSimDAO dao;
   60   	private Hashtable kundeObjekt;
   61   	private Hashtable kundenTabelle;
   62   	private Hashtable artikelTabelle;
   63   	private Hashtable artikelObjekt;
   64   	private Vector artikel;
   65   	private float mwst;
   66   	private double rabattwert;
   67   	private double skontowert;
   68   	private double angebotsPreis;
   69   	private double stueckPreis;
   70   	private double zwischensum1;
   71   	private long mengenwert;
   72   	private boolean skontofrist;
   73   	private Validator validate;
   74   	private WiSimMainController wiSimMainController;
   75   	//Logger
   76   	private WiSimLogger wiSimLogger;
   77   	private DecimalFormat form;
   78   
   79   	/** Creates new form JPanelNeuerVertrag */
   80   	public JPanelNeuerVertrag(WiSimMainController wiSimMainController) {
   81   		this.wiSimMainController = wiSimMainController;
   82   		initDAO(wiSimMainController);
   83   		kundeObjekt = new Hashtable();
   84   		kundenTabelle = new Hashtable();
   85   		artikelTabelle = new Hashtable();
   86   		artikelObjekt = new Hashtable();
   87   		artikel = new Vector();
   88   		validate = new Validator();
   89   		rabattwert = 0;
   90   		skontowert = 0;
   91   		mengenwert = 0;
   92   		angebotsPreis = 0;
   93   		zwischensum1 = 0;
   94   		stueckPreis = 0;
   95   		skontofrist = false;
   96   		initComponents();
   97   		ladeMwSt();
   98   		form = new DecimalFormat("###,##0.00");
   99   	}
  100   
  101   	private void initDAO(WiSimMainController wiSimMainController) {
  102   		dao = wiSimMainController.getDAO();
  103   	}
  104   
  105   	/** This method is called from within the constructor to
  106   	 * initialize the form.
  107   	 * WARNING: Do NOT modify this code. The content of this method is
  108   	 * always regenerated by the Form Editor.
  109   	 */
  110       private void initComponents() {//GEN-BEGIN:initComponents
  111           jOptionAlert = new javax.swing.JOptionPane();
  112           jOptionPaneConfirm = new javax.swing.JOptionPane();
  113           jLabelNeuerVertrag = new javax.swing.JLabel();
  114           jPanelKundeWaehlen = new javax.swing.JPanel();
  115           jLabelKunde = new javax.swing.JLabel();
  116           jComboBoxKunde = new javax.swing.JComboBox();
  117           jPanelKundendaten = new javax.swing.JPanel();
  118           jLabelNeuerVertragKundenTyp = new javax.swing.JLabel();
  119           jTextFieldNeuerVertragKundentyp = new javax.swing.JTextField();
  120           jLabelNeuerVertragAnsprueche = new javax.swing.JLabel();
  121           jTextFieldNeuerVertragAnsprueche = new javax.swing.JTextField();
  122           jLabelNeuerVertragZahlungsmoral = new javax.swing.JLabel();
  123           jTextFieldNeuerVertragZahlungsmoral = new javax.swing.JTextField();
  124           jLabelNeuerVertragAnzahlVertraege = new javax.swing.JLabel();
  125           jTextFieldNeuerVertragAnzahlVertraege = new javax.swing.JTextField();
  126           jPanelArtikelWaehlen = new javax.swing.JPanel();
  127           jLabelArtikel = new javax.swing.JLabel();
  128           jComboBoxArtikel = new javax.swing.JComboBox();
  129           jLabelNeuerVertragAbnahmemenge = new javax.swing.JLabel();
  130           jTextFieldNeuerVertragAbnahmemenge = new javax.swing.JTextField();
  131           jLabelZwischensumme1 = new javax.swing.JLabel();
  132           jTextFieldNeuerVertragIntermediateResult1 = new javax.swing.JTextField();
  133           jLabelEUR1 = new javax.swing.JLabel();
  134           jSeparator1 = new javax.swing.JSeparator();
  135           jLabelStueckpreis = new javax.swing.JLabel();
  136           jTextFieldNeuerVertragStueckpreis = new javax.swing.JTextField();
  137           jLabelEUR2 = new javax.swing.JLabel();
  138           jPanelBestelldatenEingeben = new javax.swing.JPanel();
  139           jLabelNeuerVertragLieferdatum = new javax.swing.JLabel();
  140           jTextFieldNeuerVertragTag = new javax.swing.JTextField();
  141           jTextFieldNeuerVertragMonat = new javax.swing.JTextField();
  142           jTextFieldNeuerVertragJahr = new javax.swing.JTextField();
  143           jLabelRabatt = new javax.swing.JLabel();
  144           jTextFieldRabatt = new javax.swing.JTextField();
  145           jLabelSkonto = new javax.swing.JLabel();
  146           jTextFieldSkonto = new javax.swing.JTextField();
  147           jLabelNeuerVertragNettozahldatum = new javax.swing.JLabel();
  148           jLabelProzent2 = new javax.swing.JLabel();
  149           jLabelSkontofrist = new javax.swing.JLabel();
  150           jTextFieldSkontofristTage = new javax.swing.JTextField();
  151           jLabelTage = new javax.swing.JLabel();
  152           jLabelProzent1 = new javax.swing.JLabel();
  153           jTextFieldNeuerVertragNettozahldatum = new javax.swing.JTextField();
  154           jPanelAngebotspreis = new javax.swing.JPanel();
  155           jLabelZwischensumme2 = new javax.swing.JLabel();
  156           jTextFieldNeuerVertragIntermediateResult2 = new javax.swing.JTextField();
  157           jLabelEUR = new javax.swing.JLabel();
  158           jTextFieldMwst = new javax.swing.JTextField();
  159           jLabelProzent = new javax.swing.JLabel();
  160           jLabelMwst = new javax.swing.JLabel();
  161           jTextFieldNeuerVertragAngebotspreisMwST = new javax.swing.JTextField();
  162           jLabelRabatt2 = new javax.swing.JLabel();
  163           jTextFieldNeuerVertragAngebotspreisOhneRabatt = new javax.swing.JTextField();
  164           jLabelSkonto2 = new javax.swing.JLabel();
  165           jTextFieldNeuerVertragAngebotspreisOhneSkonto = new javax.swing.JTextField();
  166           jLabelEUR3 = new javax.swing.JLabel();
  167           jLabelEUR4 = new javax.swing.JLabel();
  168           jLabelEUR5 = new javax.swing.JLabel();
  169           jLabelZwischensumme3 = new javax.swing.JLabel();
  170           jTextFieldNeuerVertragIntermediateResult3 = new javax.swing.JTextField();
  171           jLabelEUR6 = new javax.swing.JLabel();
  172           jTextFieldNeuerVertragAngebotspreis = new javax.swing.JTextField();
  173           jLabelAngebotspreis = new javax.swing.JLabel();
  174           jLabelEUR7 = new javax.swing.JLabel();
  175           jSeparator2 = new javax.swing.JSeparator();
  176           jSeparator3 = new javax.swing.JSeparator();
  177           jLabelMinus = new javax.swing.JLabel();
  178           jLabelGleich = new javax.swing.JLabel();
  179           jLabelMinus2 = new javax.swing.JLabel();
  180           jLabelGleich2 = new javax.swing.JLabel();
  181           jLabelGleich3 = new javax.swing.JLabel();
  182           jButtonNeuerVertragSpeichern = new javax.swing.JButton();
  183           jButtonNeuerVertragAbbrechen = new javax.swing.JButton();
  184   
  185           jOptionAlert.setMessageType(0);
  186           jOptionPaneConfirm.setMessageType(0);
  187   
  188           setLayout(null);
  189   
  190           jLabelNeuerVertrag.setFont(new java.awt.Font("Dialog", 1, 24));
  191           jLabelNeuerVertrag.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  192           jLabelNeuerVertrag.setText("Neuer Vertrag");
  193           add(jLabelNeuerVertrag);
  194           jLabelNeuerVertrag.setBounds(0, 0, 810, 40);
  195   
  196           jPanelKundeWaehlen.setLayout(null);
  197   
  198           jPanelKundeWaehlen.setBorder(new javax.swing.border.TitledBorder("1. Kunden ausw\u00e4hlen"));
  199           jLabelKunde.setFont(new java.awt.Font("Dialog", 1, 14));
  200           jLabelKunde.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  201           jLabelKunde.setText("Kunde");
  202           jPanelKundeWaehlen.add(jLabelKunde);
  203           jLabelKunde.setBounds(40, 30, 80, 19);
  204   
  205           jComboBoxKunde.addActionListener(new java.awt.event.ActionListener() {
  206               public void actionPerformed(java.awt.event.ActionEvent evt) {
  207                   jComboBoxKundeActionPerformed(evt);
  208               }
  209           });
  210           jComboBoxKunde.addAncestorListener(new javax.swing.event.AncestorListener() {
  211               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  212               }
  213               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  214                   jComboBoxKundeAncestorAdded(evt);
  215               }
  216               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  217               }
  218           });
  219   
  220           jPanelKundeWaehlen.add(jComboBoxKunde);
  221           jComboBoxKunde.setBounds(170, 30, 170, 20);
  222   
  223           jPanelKundendaten.setLayout(null);
  224   
  225           jPanelKundendaten.setBorder(new javax.swing.border.TitledBorder(null, "Kundendaten", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10)));
  226           jLabelNeuerVertragKundenTyp.setText("Kundentyp");
  227           jPanelKundendaten.add(jLabelNeuerVertragKundenTyp);
  228           jLabelNeuerVertragKundenTyp.setBounds(20, 20, 60, 16);
  229   
  230           jTextFieldNeuerVertragKundentyp.setEditable(false);
  231           jTextFieldNeuerVertragKundentyp.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  232           jPanelKundendaten.add(jTextFieldNeuerVertragKundentyp);
  233           jTextFieldNeuerVertragKundentyp.setBounds(150, 20, 20, 20);
  234   
  235           jLabelNeuerVertragAnsprueche.setText("Anspr\u00fcche");
  236           jPanelKundendaten.add(jLabelNeuerVertragAnsprueche);
  237           jLabelNeuerVertragAnsprueche.setBounds(20, 50, 62, 16);
  238   
  239           jTextFieldNeuerVertragAnsprueche.setEditable(false);
  240           jTextFieldNeuerVertragAnsprueche.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  241           jPanelKundendaten.add(jTextFieldNeuerVertragAnsprueche);
  242           jTextFieldNeuerVertragAnsprueche.setBounds(150, 50, 130, 20);
  243   
  244           jLabelNeuerVertragZahlungsmoral.setText("Zahlungsmoral");
  245           jPanelKundendaten.add(jLabelNeuerVertragZahlungsmoral);
  246           jLabelNeuerVertragZahlungsmoral.setBounds(20, 80, 90, 16);
  247   
  248           jTextFieldNeuerVertragZahlungsmoral.setEditable(false);
  249           jTextFieldNeuerVertragZahlungsmoral.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  250           jPanelKundendaten.add(jTextFieldNeuerVertragZahlungsmoral);
  251           jTextFieldNeuerVertragZahlungsmoral.setBounds(150, 80, 20, 20);
  252   
  253           jLabelNeuerVertragAnzahlVertraege.setText("weitere Vertr\u00e4ge");
  254           jPanelKundendaten.add(jLabelNeuerVertragAnzahlVertraege);
  255           jLabelNeuerVertragAnzahlVertraege.setBounds(20, 110, 100, 16);
  256   
  257           jTextFieldNeuerVertragAnzahlVertraege.setEditable(false);
  258           jTextFieldNeuerVertragAnzahlVertraege.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  259           jPanelKundendaten.add(jTextFieldNeuerVertragAnzahlVertraege);
  260           jTextFieldNeuerVertragAnzahlVertraege.setBounds(150, 110, 20, 20);
  261   
  262           jPanelKundeWaehlen.add(jPanelKundendaten);
  263           jPanelKundendaten.setBounds(30, 60, 310, 140);
  264   
  265           add(jPanelKundeWaehlen);
  266           jPanelKundeWaehlen.setBounds(40, 50, 360, 210);
  267   
  268           jPanelArtikelWaehlen.setLayout(null);
  269   
  270           jPanelArtikelWaehlen.setBorder(new javax.swing.border.TitledBorder("2. Artikel ausw\u00e4hlen"));
  271           jLabelArtikel.setFont(new java.awt.Font("Dialog", 1, 14));
  272           jLabelArtikel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  273           jLabelArtikel.setText("Artikel");
  274           jPanelArtikelWaehlen.add(jLabelArtikel);
  275           jLabelArtikel.setBounds(40, 40, 80, 19);
  276   
  277           jComboBoxArtikel.addActionListener(new java.awt.event.ActionListener() {
  278               public void actionPerformed(java.awt.event.ActionEvent evt) {
  279                   jComboBoxArtikelActionPerformed(evt);
  280               }
  281           });
  282           jComboBoxArtikel.addAncestorListener(new javax.swing.event.AncestorListener() {
  283               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  284               }
  285               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  286                   jComboBoxArtikelAncestorAdded(evt);
  287               }
  288               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  289               }
  290           });
  291   
  292           jPanelArtikelWaehlen.add(jComboBoxArtikel);
  293           jComboBoxArtikel.setBounds(150, 40, 150, 20);
  294   
  295           jLabelNeuerVertragAbnahmemenge.setFont(new java.awt.Font("Dialog", 1, 14));
  296           jLabelNeuerVertragAbnahmemenge.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  297           jLabelNeuerVertragAbnahmemenge.setText("Abnahmemenge");
  298           jPanelArtikelWaehlen.add(jLabelNeuerVertragAbnahmemenge);
  299           jLabelNeuerVertragAbnahmemenge.setBounds(30, 130, 120, 16);
  300   
  301           jTextFieldNeuerVertragAbnahmemenge.setDocument(new JTextFieldValidation(10));
  302           jTextFieldNeuerVertragAbnahmemenge.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  303           jTextFieldNeuerVertragAbnahmemenge.addFocusListener(new java.awt.event.FocusAdapter() {
  304               public void focusLost(java.awt.event.FocusEvent evt) {
  305                   jTextFieldNeuerVertragAbnahmemengeFocusLost(evt);
  306               }
  307           });
  308   
  309           jPanelArtikelWaehlen.add(jTextFieldNeuerVertragAbnahmemenge);
  310           jTextFieldNeuerVertragAbnahmemenge.setBounds(180, 130, 120, 20);
  311   
  312           jLabelZwischensumme1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  313           jLabelZwischensumme1.setText("Zwischensumme 1");
  314           jPanelArtikelWaehlen.add(jLabelZwischensumme1);
  315           jLabelZwischensumme1.setBounds(30, 170, 120, 16);
  316   
  317           jTextFieldNeuerVertragIntermediateResult1.setEditable(false);
  318           jTextFieldNeuerVertragIntermediateResult1.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  319           jPanelArtikelWaehlen.add(jTextFieldNeuerVertragIntermediateResult1);
  320           jTextFieldNeuerVertragIntermediateResult1.setBounds(180, 170, 120, 20);
  321   
  322           jLabelEUR1.setFont(new java.awt.Font("Dialog", 1, 18));
  323           jLabelEUR1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  324           jLabelEUR1.setText("\u20ac");
  325           jPanelArtikelWaehlen.add(jLabelEUR1);
  326           jLabelEUR1.setBounds(310, 170, 10, 20);
  327   
  328           jPanelArtikelWaehlen.add(jSeparator1);
  329           jSeparator1.setBounds(30, 160, 290, 10);
  330   
  331           jLabelStueckpreis.setFont(new java.awt.Font("Dialog", 1, 14));
  332           jLabelStueckpreis.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  333           jLabelStueckpreis.setText("St\u00fcckpreis");
  334           jPanelArtikelWaehlen.add(jLabelStueckpreis);
  335           jLabelStueckpreis.setBounds(30, 100, 80, 20);
  336   
  337           jTextFieldNeuerVertragStueckpreis.setEditable(false);
  338           jTextFieldNeuerVertragStueckpreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  339           jPanelArtikelWaehlen.add(jTextFieldNeuerVertragStueckpreis);
  340           jTextFieldNeuerVertragStueckpreis.setBounds(180, 100, 120, 20);
  341   
  342           jLabelEUR2.setFont(new java.awt.Font("Dialog", 1, 18));
  343           jLabelEUR2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  344           jLabelEUR2.setText("\u20ac");
  345           jPanelArtikelWaehlen.add(jLabelEUR2);
  346           jLabelEUR2.setBounds(310, 100, 10, 20);
  347   
  348           add(jPanelArtikelWaehlen);
  349           jPanelArtikelWaehlen.setBounds(410, 50, 340, 210);
  350   
  351           jPanelBestelldatenEingeben.setLayout(null);
  352   
  353           jPanelBestelldatenEingeben.setBorder(new javax.swing.border.TitledBorder("3. Bestelldaten eingeben"));
  354           jLabelNeuerVertragLieferdatum.setFont(new java.awt.Font("Dialog", 1, 14));
  355           jLabelNeuerVertragLieferdatum.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  356           jLabelNeuerVertragLieferdatum.setText("Lieferdatum");
  357           jPanelBestelldatenEingeben.add(jLabelNeuerVertragLieferdatum);
  358           jLabelNeuerVertragLieferdatum.setBounds(40, 40, 90, 19);
  359   
  360           jTextFieldNeuerVertragTag.setDocument(new JTextFieldValidation(2));
  361           jTextFieldNeuerVertragTag.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  362           jTextFieldNeuerVertragTag.addFocusListener(new java.awt.event.FocusAdapter() {
  363               public void focusLost(java.awt.event.FocusEvent evt) {
  364                   jTextFieldNeuerVertragTagFocusLost(evt);
  365               }
  366           });
  367   
  368           jPanelBestelldatenEingeben.add(jTextFieldNeuerVertragTag);
  369           jTextFieldNeuerVertragTag.setBounds(180, 40, 30, 20);
  370   
  371           jTextFieldNeuerVertragMonat.setDocument(new JTextFieldValidation(2));
  372           jTextFieldNeuerVertragMonat.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  373           jTextFieldNeuerVertragMonat.addFocusListener(new java.awt.event.FocusAdapter() {
  374               public void focusLost(java.awt.event.FocusEvent evt) {
  375                   jTextFieldNeuerVertragMonatFocusLost(evt);
  376               }
  377           });
  378   
  379           jPanelBestelldatenEingeben.add(jTextFieldNeuerVertragMonat);
  380           jTextFieldNeuerVertragMonat.setBounds(210, 40, 30, 20);
  381   
  382           jTextFieldNeuerVertragJahr.setDocument(new JTextFieldValidation(4));
  383           jTextFieldNeuerVertragJahr.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  384           jTextFieldNeuerVertragJahr.addFocusListener(new java.awt.event.FocusAdapter() {
  385               public void focusLost(java.awt.event.FocusEvent evt) {
  386                   jTextFieldNeuerVertragJahrFocusLost(evt);
  387               }
  388           });
  389   
  390           jPanelBestelldatenEingeben.add(jTextFieldNeuerVertragJahr);
  391           jTextFieldNeuerVertragJahr.setBounds(240, 40, 50, 20);
  392   
  393           jLabelRabatt.setFont(new java.awt.Font("Dialog", 1, 14));
  394           jLabelRabatt.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  395           jLabelRabatt.setText("Rabatt");
  396           jPanelBestelldatenEingeben.add(jLabelRabatt);
  397           jLabelRabatt.setBounds(40, 70, 50, 20);
  398   
  399           jTextFieldRabatt.setDocument(new JTextFieldValidation(5));
  400           jTextFieldRabatt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  401           jTextFieldRabatt.addFocusListener(new java.awt.event.FocusAdapter() {
  402               public void focusLost(java.awt.event.FocusEvent evt) {
  403                   jTextFieldRabattFocusLost(evt);
  404               }
  405           });
  406   
  407           jPanelBestelldatenEingeben.add(jTextFieldRabatt);
  408           jTextFieldRabatt.setBounds(180, 70, 40, 20);
  409   
  410           jLabelSkonto.setFont(new java.awt.Font("Dialog", 1, 14));
  411           jLabelSkonto.setText("Skonto");
  412           jPanelBestelldatenEingeben.add(jLabelSkonto);
  413           jLabelSkonto.setBounds(40, 100, 60, 16);
  414   
  415           jTextFieldSkonto.setDocument(new JTextFieldValidation(5));
  416           jTextFieldSkonto.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  417           jTextFieldSkonto.addFocusListener(new java.awt.event.FocusAdapter() {
  418               public void focusLost(java.awt.event.FocusEvent evt) {
  419                   jTextFieldSkontoFocusLost(evt);
  420               }
  421           });
  422   
  423           jPanelBestelldatenEingeben.add(jTextFieldSkonto);
  424           jTextFieldSkonto.setBounds(180, 100, 40, 20);
  425   
  426           jLabelNeuerVertragNettozahldatum.setFont(new java.awt.Font("Dialog", 1, 14));
  427           jLabelNeuerVertragNettozahldatum.setText("Nettozahldatum");
  428           jPanelBestelldatenEingeben.add(jLabelNeuerVertragNettozahldatum);
  429           jLabelNeuerVertragNettozahldatum.setBounds(40, 160, 110, 19);
  430   
  431           jLabelProzent2.setFont(new java.awt.Font("Dialog", 1, 14));
  432           jLabelProzent2.setText("%");
  433           jPanelBestelldatenEingeben.add(jLabelProzent2);
  434           jLabelProzent2.setBounds(230, 100, 10, 19);
  435   
  436           jLabelSkontofrist.setFont(new java.awt.Font("Dialog", 1, 14));
  437           jLabelSkontofrist.setText("Skontofrist");
  438           jPanelBestelldatenEingeben.add(jLabelSkontofrist);
  439           jLabelSkontofrist.setBounds(40, 130, 80, 19);
  440   
  441           jTextFieldSkontofristTage.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  442           jTextFieldSkontofristTage.addFocusListener(new java.awt.event.FocusAdapter() {
  443               public void focusLost(java.awt.event.FocusEvent evt) {
  444                   jTextFieldSkontofristTageFocusLost(evt);
  445               }
  446           });
  447   
  448           jPanelBestelldatenEingeben.add(jTextFieldSkontofristTage);
  449           jTextFieldSkontofristTage.setBounds(180, 130, 40, 20);
  450   
  451           jLabelTage.setFont(new java.awt.Font("Dialog", 1, 14));
  452           jLabelTage.setText("Tage");
  453           jPanelBestelldatenEingeben.add(jLabelTage);
  454           jLabelTage.setBounds(230, 130, 34, 19);
  455   
  456           jLabelProzent1.setFont(new java.awt.Font("Dialog", 1, 14));
  457           jLabelProzent1.setText("%");
  458           jPanelBestelldatenEingeben.add(jLabelProzent1);
  459           jLabelProzent1.setBounds(230, 70, 10, 19);
  460   
  461           jTextFieldNeuerVertragNettozahldatum.setEditable(false);
  462           jTextFieldNeuerVertragNettozahldatum.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  463           jPanelBestelldatenEingeben.add(jTextFieldNeuerVertragNettozahldatum);
  464           jTextFieldNeuerVertragNettozahldatum.setBounds(180, 160, 110, 20);
  465   
  466           add(jPanelBestelldatenEingeben);
  467           jPanelBestelldatenEingeben.setBounds(40, 270, 360, 230);
  468   
  469           jPanelAngebotspreis.setLayout(null);
  470   
  471           jPanelAngebotspreis.setBorder(new javax.swing.border.TitledBorder("4. Vertrag"));
  472           jLabelZwischensumme2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
  473           jLabelZwischensumme2.setText("Zwischensumme 2");
  474           jPanelAngebotspreis.add(jLabelZwischensumme2);
  475           jLabelZwischensumme2.setBounds(10, 30, 110, 20);
  476   
  477           jTextFieldNeuerVertragIntermediateResult2.setEditable(false);
  478           jTextFieldNeuerVertragIntermediateResult2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  479           jPanelAngebotspreis.add(jTextFieldNeuerVertragIntermediateResult2);
  480           jTextFieldNeuerVertragIntermediateResult2.setBounds(150, 30, 150, 20);
  481   
  482           jLabelEUR.setFont(new java.awt.Font("Dialog", 1, 18));
  483           jLabelEUR.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  484           jLabelEUR.setText("\u20ac");
  485           jPanelAngebotspreis.add(jLabelEUR);
  486           jLabelEUR.setBounds(310, 30, 10, 20);
  487   
  488           jTextFieldMwst.setEditable(false);
  489           jTextFieldMwst.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  490           jPanelAngebotspreis.add(jTextFieldMwst);
  491           jTextFieldMwst.setBounds(80, 200, 30, 20);
  492   
  493           jLabelProzent.setFont(new java.awt.Font("Dialog", 1, 14));
  494           jLabelProzent.setText("%");
  495           jPanelAngebotspreis.add(jLabelProzent);
  496           jLabelProzent.setBounds(110, 200, 10, 19);
  497   
  498           jLabelMwst.setText("Incl. MwSt");
  499           jPanelAngebotspreis.add(jLabelMwst);
  500           jLabelMwst.setBounds(10, 200, 60, 20);
  501   
  502           jTextFieldNeuerVertragAngebotspreisMwST.setEditable(false);
  503           jTextFieldNeuerVertragAngebotspreisMwST.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  504           jPanelAngebotspreis.add(jTextFieldNeuerVertragAngebotspreisMwST);
  505           jTextFieldNeuerVertragAngebotspreisMwST.setBounds(150, 200, 150, 20);
  506   
  507           jLabelRabatt2.setText("Abzg. Rabatt");
  508           jPanelAngebotspreis.add(jLabelRabatt2);
  509           jLabelRabatt2.setBounds(10, 60, 90, 20);
  510   
  511           jTextFieldNeuerVertragAngebotspreisOhneRabatt.setEditable(false);
  512           jTextFieldNeuerVertragAngebotspreisOhneRabatt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  513           jPanelAngebotspreis.add(jTextFieldNeuerVertragAngebotspreisOhneRabatt);
  514           jTextFieldNeuerVertragAngebotspreisOhneRabatt.setBounds(150, 60, 150, 20);
  515   
  516           jLabelSkonto2.setText("Abzg. Skonto");
  517           jPanelAngebotspreis.add(jLabelSkonto2);
  518           jLabelSkonto2.setBounds(10, 130, 90, 20);
  519   
  520           jTextFieldNeuerVertragAngebotspreisOhneSkonto.setEditable(false);
  521           jTextFieldNeuerVertragAngebotspreisOhneSkonto.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  522           jPanelAngebotspreis.add(jTextFieldNeuerVertragAngebotspreisOhneSkonto);
  523           jTextFieldNeuerVertragAngebotspreisOhneSkonto.setBounds(150, 130, 150, 20);
  524   
  525           jLabelEUR3.setFont(new java.awt.Font("Dialog", 1, 18));
  526           jLabelEUR3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  527           jLabelEUR3.setText("\u20ac");
  528           jPanelAngebotspreis.add(jLabelEUR3);
  529           jLabelEUR3.setBounds(310, 60, 10, 20);
  530   
  531           jLabelEUR4.setFont(new java.awt.Font("Dialog", 1, 18));
  532           jLabelEUR4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  533           jLabelEUR4.setText("\u20ac");
  534           jPanelAngebotspreis.add(jLabelEUR4);
  535           jLabelEUR4.setBounds(310, 130, 10, 20);
  536   
  537           jLabelEUR5.setFont(new java.awt.Font("Dialog", 1, 18));
  538           jLabelEUR5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  539           jLabelEUR5.setText("\u20ac");
  540           jPanelAngebotspreis.add(jLabelEUR5);
  541           jLabelEUR5.setBounds(310, 200, 10, 20);
  542   
  543           jLabelZwischensumme3.setText("Zwischensumme 3");
  544           jPanelAngebotspreis.add(jLabelZwischensumme3);
  545           jLabelZwischensumme3.setBounds(10, 100, 110, 20);
  546   
  547           jTextFieldNeuerVertragIntermediateResult3.setEditable(false);
  548           jTextFieldNeuerVertragIntermediateResult3.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  549           jPanelAngebotspreis.add(jTextFieldNeuerVertragIntermediateResult3);
  550           jTextFieldNeuerVertragIntermediateResult3.setBounds(150, 100, 150, 20);
  551   
  552           jLabelEUR6.setFont(new java.awt.Font("Dialog", 1, 18));
  553           jLabelEUR6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  554           jLabelEUR6.setText("\u20ac");
  555           jPanelAngebotspreis.add(jLabelEUR6);
  556           jLabelEUR6.setBounds(310, 100, 10, 20);
  557   
  558           jTextFieldNeuerVertragAngebotspreis.setEditable(false);
  559           jTextFieldNeuerVertragAngebotspreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
  560           jPanelAngebotspreis.add(jTextFieldNeuerVertragAngebotspreis);
  561           jTextFieldNeuerVertragAngebotspreis.setBounds(150, 170, 150, 20);
  562   
  563           jLabelAngebotspreis.setText("Angebotspreis");
  564           jPanelAngebotspreis.add(jLabelAngebotspreis);
  565           jLabelAngebotspreis.setBounds(10, 170, 90, 20);
  566   
  567           jLabelEUR7.setFont(new java.awt.Font("Dialog", 1, 18));
  568           jLabelEUR7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  569           jLabelEUR7.setText("\u20ac");
  570           jPanelAngebotspreis.add(jLabelEUR7);
  571           jLabelEUR7.setBounds(310, 170, 10, 20);
  572   
  573           jPanelAngebotspreis.add(jSeparator2);
  574           jSeparator2.setBounds(10, 90, 310, 10);
  575   
  576           jPanelAngebotspreis.add(jSeparator3);
  577           jSeparator3.setBounds(10, 160, 310, 10);
  578   
  579           jLabelMinus.setFont(new java.awt.Font("Dialog", 1, 18));
  580           jLabelMinus.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  581           jLabelMinus.setText("-");
  582           jPanelAngebotspreis.add(jLabelMinus);
  583           jLabelMinus.setBounds(130, 60, 20, 20);
  584   
  585           jLabelGleich.setFont(new java.awt.Font("Dialog", 1, 18));
  586           jLabelGleich.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  587           jLabelGleich.setText("=");
  588           jPanelAngebotspreis.add(jLabelGleich);
  589           jLabelGleich.setBounds(130, 100, 20, 20);
  590   
  591           jLabelMinus2.setFont(new java.awt.Font("Dialog", 1, 18));
  592           jLabelMinus2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  593           jLabelMinus2.setText("-");
  594           jPanelAngebotspreis.add(jLabelMinus2);
  595           jLabelMinus2.setBounds(130, 130, 20, 20);
  596   
  597           jLabelGleich2.setFont(new java.awt.Font("Dialog", 1, 18));
  598           jLabelGleich2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  599           jLabelGleich2.setText("=");
  600           jPanelAngebotspreis.add(jLabelGleich2);
  601           jLabelGleich2.setBounds(130, 170, 20, 20);
  602   
  603           jLabelGleich3.setFont(new java.awt.Font("Dialog", 1, 18));
  604           jLabelGleich3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  605           jLabelGleich3.setText("=");
  606           jPanelAngebotspreis.add(jLabelGleich3);
  607           jLabelGleich3.setBounds(130, 200, 20, 20);
  608   
  609           add(jPanelAngebotspreis);
  610           jPanelAngebotspreis.setBounds(410, 270, 340, 230);
  611   
  612           jButtonNeuerVertragSpeichern.setFont(new java.awt.Font("Dialog", 1, 11));
  613           jButtonNeuerVertragSpeichern.setText("Speichern");
  614           jButtonNeuerVertragSpeichern.addActionListener(new java.awt.event.ActionListener() {
  615               public void actionPerformed(java.awt.event.ActionEvent evt) {
  616                   jButtonNeuerVertragSpeichernActionPerformed(evt);
  617               }
  618           });
  619   
  620           add(jButtonNeuerVertragSpeichern);
  621           jButtonNeuerVertragSpeichern.setBounds(260, 510, 120, 25);
  622   
  623           jButtonNeuerVertragAbbrechen.setFont(new java.awt.Font("Dialog", 1, 11));
  624           jButtonNeuerVertragAbbrechen.setText("Abbrechen");
  625           jButtonNeuerVertragAbbrechen.addActionListener(new java.awt.event.ActionListener() {
  626               public void actionPerformed(java.awt.event.ActionEvent evt) {
  627                   jButtonNeuerVertragAbbrechenActionPerformed(evt);
  628               }
  629           });
  630   
  631           add(jButtonNeuerVertragAbbrechen);
  632           jButtonNeuerVertragAbbrechen.setBounds(430, 510, 120, 25);
  633   
  634       }//GEN-END:initComponents
  635   
  636   	private void jTextFieldSkontofristTageFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldSkontofristTageFocusLost
  637   		pruefeSkontofrist();
  638   	} //GEN-LAST:event_jTextFieldSkontofristTageFocusLost
  639   
  640   	private void jTextFieldNeuerVertragJahrFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerVertragJahrFocusLost
  641   		pruefeLieferdatumJahr();
  642   	} //GEN-LAST:event_jTextFieldNeuerVertragJahrFocusLost
  643   
  644   	private void jTextFieldNeuerVertragMonatFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerVertragMonatFocusLost
  645   		pruefeLieferdatumMonat();
  646   	} //GEN-LAST:event_jTextFieldNeuerVertragMonatFocusLost
  647   
  648   	private void jTextFieldNeuerVertragTagFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerVertragTagFocusLost
  649   		pruefeLieferdatumTag();
  650   	} //GEN-LAST:event_jTextFieldNeuerVertragTagFocusLost
  651   
  652   	private void jComboBoxKundeActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxKundeActionPerformed
  653   		ladeKundendaten();
  654   	} //GEN-LAST:event_jComboBoxKundeActionPerformed
  655   
  656   	private void jTextFieldSkontoFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldSkontoFocusLost
  657   		pruefeSkonto();
  658   		calculate();
  659   	} //GEN-LAST:event_jTextFieldSkontoFocusLost
  660   
  661   	private void jTextFieldRabattFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldRabattFocusLost
  662   		pruefeRabatt();
  663   		calculate();
  664   	} //GEN-LAST:event_jTextFieldRabattFocusLost
  665   
  666   	private void jTextFieldNeuerVertragAbnahmemengeFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerVertragAbnahmemengeFocusLost
  667   		pruefeAbnahmemenge();
  668   		calculate();
  669   	} //GEN-LAST:event_jTextFieldNeuerVertragAbnahmemengeFocusLost
  670   
  671   	private void jComboBoxArtikelActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxArtikelActionPerformed
  672   		ladeStueckpreis();
  673   	} //GEN-LAST:event_jComboBoxArtikelActionPerformed
  674   
  675   	private void jComboBoxArtikelAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxArtikelAncestorAdded
  676   		ladeArtikel();
  677   	} //GEN-LAST:event_jComboBoxArtikelAncestorAdded
  678   
  679   	private void jComboBoxKundeAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxKundeAncestorAdded
  680   		ladeKunden();
  681   	} //GEN-LAST:event_jComboBoxKundeAncestorAdded
  682   
  683   	private void jButtonNeuerVertragAbbrechenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonNeuerVertragAbbrechenActionPerformed
  684   		clearFields();
  685   	} //GEN-LAST:event_jButtonNeuerVertragAbbrechenActionPerformed
  686   
  687   	private void jButtonNeuerVertragSpeichernActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonNeuerVertragSpeichernActionPerformed
  688   		speicherVertrag();
  689   	} //GEN-LAST:event_jButtonNeuerVertragSpeichernActionPerformed
  690   
  691   	/**
  692   	 * Method pruefeSkontofrist. ?berpr?ft, ob eine Zahl und das etwas eingegeben wurde.
  693   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  694   	 * aufgefordert.
  695   	 */
  696   	private void pruefeSkontofrist() {
  697   
  698   		String skontofrist = jTextFieldSkontofristTage.getText();
  699   		boolean skontofristOk = false;
  700   		if (!skontofrist.equals("") && skontofrist != null) {
  701   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird die Skontofrist immer wieder ?berpr?ft
  702   			while (!skontofristOk && skontofrist != null) {
  703   				//Erlaubt sind nur Eingaben von Zahlen
  704   				if (!validate.checkZahl(skontofrist)) {
  705   					jOptionPaneConfirm.setWantsInput(true);
  706   					skontofrist = JOptionPane.showInputDialog(this, "Ung?ltige Skontofrist! Bitte neu eingeben:", skontofrist);
  707   				} else {
  708   					skontofristOk = true;
  709   				}
  710   			}
  711   			if (skontofrist != null) {
  712   				jTextFieldSkontofristTage.setText(skontofrist);
  713   			} else {
  714   				jTextFieldSkontofristTage.setText("");
  715   			}
  716   		}
  717   
  718   		//Das Nettozahldatum wird erzeugt
  719   		if (!jTextFieldSkontofristTage.getText().equals("") && !jTextFieldSkontofristTage.getText().equals("0")) {
  720   
  721   			long nettoDatumMili = wiSimMainController.getActDate().getTime() + (Long.parseLong(jTextFieldSkontofristTage.getText()) * 1000 * 60 * 60 * 24);
  722   			GregorianCalendar nettoDatum = new GregorianCalendar();
  723   			nettoDatum.setTimeInMillis(nettoDatumMili);
  724   
  725   			String Tag = String.valueOf(nettoDatum.get(Calendar.DATE));
  726   			String Monat = String.valueOf(nettoDatum.get(Calendar.MONTH) + 1);
  727   			String Jahr = String.valueOf(nettoDatum.get(Calendar.YEAR));
  728   			jTextFieldNeuerVertragNettozahldatum.setText(Tag + "." + Monat + "." + Jahr);
  729   		} else {
  730   			jTextFieldNeuerVertragNettozahldatum.setText("Keins vorhanden!");
  731   		}
  732   	}
  733   
  734   	/**
  735   	 * Method pruefeSkonto. ?berpr?ft, ob ein korrekter Skontowert eingegeben wurde.
  736   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  737   	 * aufgefordert.
  738   	 */
  739   	private void pruefeSkonto() {
  740   
  741   		String skonto = jTextFieldSkonto.getText();
  742   
  743   		//Falls Zahl ohne "." eingegeben wurde wird ".0" erg?nzt
  744   		if (skonto.matches("^[0-9]{1,2}$")) {
  745   			skonto = skonto + ".0";
  746   			jTextFieldSkonto.setText(skonto);
  747   		}
  748   
  749   		//Falls Zahl mit "," statt "." wird "," mit "." ersetzt
  750   		if (skonto.matches("^[0-9]{1,2}[,][0-9]{1,2}$")) {
  751   			skonto = skonto.replaceAll(",", ".");
  752   			jTextFieldSkonto.setText(skonto);
  753   		}
  754   
  755   		boolean skontoOk = false;
  756   
  757   		if (!skonto.equals("") && skonto != null) {
  758   
  759   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird der Skontowert immer wieder gepr?ft
  760   			while (!skontoOk && skonto != null) {
  761   				/*Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen mit 1 Nachkommastelle
  762   				getrennt durch einen Punkt*/
  763   
  764   				if (!validate.checkProzent(skonto)) {
  765   					jOptionPaneConfirm.setWantsInput(true);
  766   					skonto = JOptionPane.showInputDialog(this, "Ung?ltiger Skonto-Wert (Format: x.y)! Bitte neu eingeben:", skonto);
  767   
  768   					//Falls Zahl ohne "." eingegeben wurde wird ".0" erg?nzt
  769   					if (skonto != null) {
  770   						if (skonto.matches("^[0-9]{1,2}$")) {
  771   							skonto = skonto + ".0";
  772   							jTextFieldSkonto.setText(skonto);
  773   						}
  774   
  775   						//Falls Zahl mit "," statt "." wird "," mit "." ersetzt
  776   						if (skonto.matches("^[0-9]{1,2}[,][0-9]{1,2}$")) {
  777   							skonto = skonto.replaceAll(",", ".");
  778   							jTextFieldSkonto.setText(skonto);
  779   						}
  780   					}
  781   
  782   				} else {
  783   					skontoOk = true;
  784   				}
  785   			}
  786   			if (skonto != null) {
  787   				jTextFieldSkonto.setText(skonto);
  788   				skontowert = Double.parseDouble(skonto);
  789   			} else {
  790   				jTextFieldSkonto.setText("");
  791   				skontowert = 0;
  792   			}
  793   
  794   		}
  795   	}
  796   
  797   	/**
  798   	 * Method pruefeRabatt. ?berpr?ft, ob ein korrekter Rabattwert eingegeben wurde.
  799   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  800   	 * aufgefordert.
  801   	 */
  802   	private void pruefeRabatt() {
  803   
  804   		String rabatt = jTextFieldRabatt.getText();
  805   
  806   		//Falls Zahl ohne "." eingegeben wurde wird ".0" erg?nzt
  807   		if (rabatt.matches("^[0-9]{1,2}$")) {
  808   			rabatt = rabatt + ".0";
  809   			jTextFieldRabatt.setText(rabatt);
  810   		}
  811   
  812   		//Falls Zahl mit "," statt "." wird "," mit "." ersetzt
  813   		if (rabatt.matches("^[0-9]{1,2}[,][0-9]{1,2}$")) {
  814   			rabatt = rabatt.replaceAll(",", ".");
  815   			jTextFieldRabatt.setText(rabatt);
  816   		}
  817   
  818   		boolean rabattOk = false;
  819   
  820   		if (!rabatt.equals("") && rabatt != null) {
  821   
  822   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird der Rabatt immer wieder ?berpr?ft
  823   			while (!rabattOk && rabatt != null) {
  824   				/*Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen mit 1 Nachkommastelle
  825   				getrennt durch einen Punkt*/
  826   
  827   				if (!validate.checkProzent(rabatt)) {
  828   					jOptionPaneConfirm.setWantsInput(true);
  829   					rabatt = JOptionPane.showInputDialog(this, "Ung?ltiger Rabatt (Format: x.y)! Bitte neu eingeben:", rabatt);
  830   
  831   					//Falls Zahl ohne "." eingegeben wurde wird ".0" erg?nzt
  832   					if (rabatt != null) {
  833   						if (rabatt.matches("^[0-9]{1,2}$")) {
  834   							rabatt = rabatt + ".0";
  835   							jTextFieldRabatt.setText(rabatt);
  836   						}
  837   
  838   						//Falls Zahl mit "," statt "." wird "," mit "." ersetzt
  839   						if (rabatt.matches("^[0-9]{1,2}[,][0-9]{1,2}$")) {
  840   							rabatt = rabatt.replaceAll(",", ".");
  841   							jTextFieldRabatt.setText(rabatt);
  842   						}
  843   					}
  844   
  845   				} else {
  846   					rabattOk = true;
  847   				}
  848   			}
  849   			if (rabatt != null) {
  850   				jTextFieldRabatt.setText(rabatt);
  851   				rabattwert = Double.parseDouble(rabatt);
  852   			} else {
  853   				jTextFieldRabatt.setText("");
  854   				rabattwert = 0;
  855   			}
  856   		}
  857   	}
  858   
  859   	/**
  860   	 * Method pruefeLieferdatumTag. ?berpr?ft den eingegebenen Lieferdatumstag.
  861   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  862   	 * aufgefordert.
  863   	 */
  864   	private void pruefeLieferdatumTag() {
  865   		String lieferdatum = jTextFieldNeuerVertragTag.getText();
  866   		boolean lieferdatumOk = false;
  867   		if (!lieferdatum.equals("") && lieferdatum != null) {
  868   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird das Lieferdatum immer wieder ?berpr?ft
  869   			while (!lieferdatumOk && lieferdatum != null) {
  870   				//Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen
  871   				if (!validate.checkTwoDigits(lieferdatum) || Integer.parseInt(lieferdatum) > 31) {
  872   					jOptionPaneConfirm.setWantsInput(true);
  873   					lieferdatum = JOptionPane.showInputDialog(this, "Ung?ltiger Tag! Bitte neu eingeben:", lieferdatum);
  874   				} else {
  875   					lieferdatumOk = true;
  876   				}
  877   			}
  878   			if (lieferdatum != null) {
  879   				jTextFieldNeuerVertragTag.setText(lieferdatum);
  880   			} else {
  881   				jTextFieldNeuerVertragTag.setText("");
  882   			}
  883   		}
  884   	}
  885   
  886   	/**
  887   	 * Method pruefeLieferdatumMonat. ?berpr?ft den eingegebenen Lieferdatumsmonat.
  888   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  889   	 * aufgefordert.
  890   	 */
  891   	private void pruefeLieferdatumMonat() {
  892   		String lieferdatum = jTextFieldNeuerVertragMonat.getText();
  893   		boolean lieferdatumOk = false;
  894   		if (!lieferdatum.equals("") && lieferdatum != null) {
  895   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird das Lieferdatum immer wieder ?berpr?ft
  896   			while (!lieferdatumOk && lieferdatum != null) {
  897   				//Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen || Monatsangabe darf nicht gr??er 12 sein
  898   				if (!validate.checkTwoDigits(lieferdatum) || Integer.parseInt(lieferdatum) > 12) {
  899   					jOptionPaneConfirm.setWantsInput(true);
  900   					lieferdatum = JOptionPane.showInputDialog(this, "Ung?ltiger Monat! Bitte neu eingeben:", lieferdatum);
  901   				} else {
  902   					lieferdatumOk = true;
  903   				}
  904   			}
  905   			if (lieferdatum != null) {
  906   				jTextFieldNeuerVertragMonat.setText(lieferdatum);
  907   			} else {
  908   				jTextFieldNeuerVertragMonat.setText("");
  909   			}
  910   		}
  911   	}
  912   
  913   	/**
  914   	 * Method pruefeLieferdatumJahr. ?berpr?ft das eingegebene Lieferdatumsjahr.
  915   	 * Wenn vom Benutzer etwas falsches eingegeben wurde, wird er zu Korrektueingabe
  916   	 * aufgefordert.
  917   	 */
  918   	private void pruefeLieferdatumJahr() {
  919   		String lieferdatum = jTextFieldNeuerVertragJahr.getText();
  920   		boolean lieferdatumOk = false;
  921   		if (!lieferdatum.equals("") && lieferdatum != null) {
  922   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird das Lieferdatum immer wieder ?berpr?ft
  923   			while (!lieferdatumOk && lieferdatum != null) {
  924   				/*Erlaubt sind nur Eingaben von 4-stelligen Zahlen die nicht mit 0 beginnen*/
  925   				if (!validate.checkYear(lieferdatum)) {
  926   					jOptionPaneConfirm.setWantsInput(true);
  927   					lieferdatum = JOptionPane.showInputDialog(this, "Ung?ltiges Jahr! Bitte neu eingeben:", lieferdatum);
  928   				} else {
  929   					lieferdatumOk = true;
  930   				}
  931   			}
  932   			if (lieferdatum != null) {
  933   				jTextFieldNeuerVertragJahr.setText(lieferdatum);
  934   			} else {
  935   				jTextFieldNeuerVertragJahr.setText("");
  936   			}
  937   		}
  938   	}
  939   
  940   	/**
  941   	 * Method pruefeAbnahmemenge. ?berpr?ft die Abnahmemenge.
  942   	 * Wenn der Benutzer etwas falsche eingibt, wird er zur Korrektureingabe
  943   	 * gefordert.
  944   	 */
  945   	private void pruefeAbnahmemenge() {
  946   
  947   		angebotsPreis = 0;
  948   		zwischensum1 = 0;
  949   
  950   		String abnahmemenge = jTextFieldNeuerVertragAbnahmemenge.getText();
  951   		boolean abnahmemengeOk = false;
  952   		if (!abnahmemenge.equals("") && abnahmemenge != null) {
  953   			//So lange der Benutzer keine richtige Eingabe gemacht hat und nicht auf Abbrechen geklickt hat wird die Abnahmemenge immer wieder ?berpr?ft
  954   			while (!abnahmemengeOk && abnahmemenge != null) {
  955   				/*Erlaubt sind nur Eingaben von Zahlen und nur 10-stellig*/
  956   				if (!validate.checkZahl(abnahmemenge)) {
  957   					jOptionPaneConfirm.setWantsInput(true);
  958   					abnahmemenge = JOptionPane.showInputDialog(this, "Ung?ltige Mengenangabe (Format: 1 - 999)! Bitte neu eingeben:", abnahmemenge);
  959   				} else {
  960   					abnahmemengeOk = true;
  961   				}
  962   			}
  963   			if (abnahmemenge != null) {
  964   				jTextFieldNeuerVertragAbnahmemenge.setText(abnahmemenge);
  965   				mengenwert = Long.parseLong(abnahmemenge);
  966   			} else {
  967   				jTextFieldNeuerVertragAbnahmemenge.setText("");
  968   				mengenwert = 0;
  969   			}
  970   
  971   		}
  972   	}
  973   
  974   	/** Gets the discount from the form.
  975   	 * 
  976   	 * @return double Discount
  977   	 */
  978   	private double getDiscount() {
  979   		double discount = 0;
  980   		if (!jTextFieldRabatt.getText().equals("")) {
  981   
  982   			discount = Double.parseDouble(jTextFieldRabatt.getText());
  983   
  984   		}
  985   		return discount;
  986   	}
  987   
  988   	/** Gets the cash discount from the form.
  989   	 * 
  990   	 * @return double CashDiscount
  991   	 */
  992   	private double getCashDiscount() {
  993   		double cashDiscount = 0;
  994   		if (!jTextFieldSkonto.getText().equals("")) {
  995   
  996   			cashDiscount = Double.parseDouble(jTextFieldSkonto.getText());
  997   
  998   		}
  999   		return cashDiscount;
 1000   	}
 1001   
 1002   	/** Gets the price from the form.
 1003   	 * 
 1004   	 * @return double Prise
 1005   	 */
 1006   	private double getPrice() {
 1007   		double price = 0;
 1008   		if (!jTextFieldNeuerVertragStueckpreis.getText().equals("")) {
 1009   			try {
 1010   				price = form.parse(jTextFieldNeuerVertragStueckpreis.getText()).doubleValue();
 1011   			} catch (ParseException e) {
 1012   				wiSimLogger.log(Level.WARNING,"JPanelNeuerVertrag.getPrice",e,false);
 1013   			}
 1014   		}
 1015   		return price;
 1016   	}
 1017   
 1018   	/** Gets the amount from the form.
 1019   	 * 
 1020   	 * @return double Amount
 1021   	 */
 1022   	private double getAmount() {
 1023   		int amount = 0;
 1024   		if (!jTextFieldNeuerVertragAbnahmemenge.getText().equals("")) {
 1025   			amount = Integer.parseInt(jTextFieldNeuerVertragAbnahmemenge.getText());
 1026   		}
 1027   		return amount;
 1028   	}
 1029   
 1030   	/** Calculates the offer price and all intermediate results */
 1031   	private void calculate() {
 1032   		double iResult1 = 0, iResult2 = 0, iResult3 = 0;
 1033   		double discount = 0, cashDiscount = 0, offerPrice = 0, offerPriceWithMwST = 0;
 1034   		// Calculate intermediate result 1
 1035   		iResult1 = getPrice() * getAmount();
 1036   		jTextFieldNeuerVertragIntermediateResult1.setText(form.format(iResult1));
 1037   		// Calculate intermediate result 2
 1038   		iResult2 = iResult1;
 1039   		jTextFieldNeuerVertragIntermediateResult2.setText(form.format(iResult2));
 1040   		discount = getDiscount() * iResult2 / 100;
 1041   		jTextFieldNeuerVertragAngebotspreisOhneRabatt.setText(form.format(discount));
 1042   		// Calculate intermediate result 3
 1043   		iResult3 = iResult2 - discount;
 1044   		jTextFieldNeuerVertragIntermediateResult3.setText(form.format(iResult3));
 1045   		cashDiscount = getCashDiscount() * iResult3 / 100;
 1046   		jTextFieldNeuerVertragAngebotspreisOhneSkonto.setText(form.format(cashDiscount));
 1047   		offerPrice = iResult3 - cashDiscount;
 1048   		jTextFieldNeuerVertragAngebotspreis.setText(form.format(offerPrice));
 1049   		offerPriceWithMwST = offerPrice + (offerPrice * mwst / 100);
 1050   		jTextFieldNeuerVertragAngebotspreisMwST.setText(form.format(offerPriceWithMwST));
 1051   
 1052   	}
 1053   
 1054   	/**
 1055   	 * Method ladeKunden. L?dt alle Kunden aus der Datenbank.
 1056   	 */
 1057   	private void ladeKunden() {
 1058   		Collection kunden = null;
 1059   		try {
 1060   			kunden = dao.getKunden();
 1061   		} catch (WiSimDAOException e) {
 1062   			wiSimLogger.log("ladeKunden()", e);
 1063   		}
 1064   
 1065   		DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxKunde.getModel();
 1066   		model.removeAllElements();
 1067   		model.addElement("Bitte w?hlen:");
 1068   
 1069   		// Verhindert NullPointerException bei einer leeren Liste
 1070   		if (kunden != null) {
 1071   			Iterator it = kunden.iterator();
 1072   			while (it.hasNext()) {
 1073   				Kunde kunde = (Kunde) it.next();
 1074   				//Merken des Nachnamen und Vornamen, um diese in die ComboBox einzutragen
 1075   				String merkeName = String.valueOf(kunde.getVorname()).concat(" ");
 1076   				merkeName = merkeName.concat(String.valueOf(kunde.getNachname()));
 1077   				model.addElement(merkeName);
 1078   				kundeObjekt.put(String.valueOf(kunde.getId()), kunde);
 1079   				kundenTabelle.put(kunde.getNachname(), String.valueOf(kunde.getId()));
 1080   			}
 1081   			jComboBoxKunde.setModel(model);
 1082   		}
 1083   	}
 1084   
 1085   	/**
 1086   	 * Method ladeKundendaten. L?dt den Kundentyp, Zahlungsmoral und Anspr?che
 1087   	 * zum ausgew?hlten Kunden aus der Hashtable kundeObjekt.
 1088   	 */
 1089   	private void ladeKundendaten() {
 1090   
 1091   		//liefert listItem des selektierten Eintrags
 1092   		String listItem = String.valueOf(jComboBoxKunde.getSelectedIndex());
 1093   
 1094   		//sucht das ausgew?hlte KundenObjekt in Hashtabelle kundeObjekt
 1095   		Kunde auswahlKunde = (Kunde) kundeObjekt.get(listItem);
 1096   
 1097   		if (auswahlKunde != null) {
 1098   
 1099   			// sucht vorhandenen Vertraege zum Kunden
 1100   			Collection vertraege = null;
 1101   			int vertragszaehler = 0;
 1102   
 1103   			try {
 1104   				vertraege = dao.getVertraege();
 1105   			} catch (WiSimDAOException e) {
 1106   				wiSimLogger.log("ladeKundendaten()", e);
 1107   			}
 1108   
 1109   			if (vertraege != null) {
 1110   				Iterator it = vertraege.iterator();
 1111   
 1112   				while (it.hasNext()) {
 1113   					Vertrag vertrag = (Vertrag) it.next();
 1114   
 1115   					if (vertrag.getKundenId() == auswahlKunde.getId()) {
 1116   						vertragszaehler++;
 1117   					}
 1118   				}
 1119   			}
 1120   
 1121   			//Gibt aus dem vorher ausgew?hltem und dann gespeichertem Kundenobjekt die Daten zu Kundentyp, Zahlungsmoral und Anspr?che aus
 1122   			jTextFieldNeuerVertragKundentyp.setText(auswahlKunde.getKundentyp());
 1123   			jTextFieldNeuerVertragAnsprueche.setText(auswahlKunde.getAnspruch());
 1124   			jTextFieldNeuerVertragZahlungsmoral.setText(auswahlKunde.getZahlungsmoral());
 1125   			jTextFieldNeuerVertragAnzahlVertraege.setText(String.valueOf(vertragszaehler));
 1126   		} else {
 1127   			jTextFieldNeuerVertragKundentyp.setText("");
 1128   			jTextFieldNeuerVertragAnsprueche.setText("");
 1129   			jTextFieldNeuerVertragZahlungsmoral.setText("");
 1130   			jTextFieldNeuerVertragAnzahlVertraege.setText("");
 1131   		}
 1132   	}
 1133   
 1134   	/**
 1135   	 * Method ladeArtikel. L?dt die Artikel aus der Datenbank.
 1136   	 */
 1137   	private void ladeArtikel() {
 1138   		Collection artikel = null;
 1139   		try {
 1140   			artikel = dao.getAlleArtikel();
 1141   		} catch (WiSimDAOException e) {
 1142   			wiSimLogger.log("ladeArtikel()", e);
 1143   		}
 1144   
 1145   		DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxArtikel.getModel();
 1146   		model.removeAllElements();
 1147   		model.addElement("Bitte w?hlen:");
 1148   
 1149   		// Verhindert NullPointerException bei einer leeren Liste
 1150   		if (artikel != null) {
 1151   			Iterator it = artikel.iterator();
 1152   			while (it.hasNext()) {
 1153   				Artikel artikel2 = (Artikel) it.next();
 1154   				model.addElement(artikel2.getName());
 1155   				artikelTabelle.put(artikel2.getName(), String.valueOf(artikel2.getNr()));
 1156   				//speichert das Objekt zum ausgew?hlten Artikel in die Hashtable artikelObjekt
 1157   				artikelObjekt.put(String.valueOf(artikel2.getNr()), artikel2);
 1158   			}
 1159   			jComboBoxArtikel.setModel(model);
 1160   		}
 1161   	}
 1162   
 1163   	/**
 1164   	 * Method ladeStueckpreis. L?dt von dem ausgew?hltem Artikel den St?ckpreis aus der Datenbank.
 1165   	 */
 1166   	private void ladeStueckpreis() {
 1167   
 1168   		//liefert listItem des selektierten Eintrags
 1169   		String listItem = String.valueOf(jComboBoxArtikel.getSelectedIndex());
 1170   
 1171   		//sucht das ausgew?hlte ArtikelObjekt in Hashtabelle artikelObjekt
 1172   		Artikel auswahlArtikel = (Artikel) artikelObjekt.get(listItem);
 1173   
 1174   		if (auswahlArtikel != null) {
 1175   			//Gibt aus dem vorher ausgew?hltem und dann gespeichertem Artikelobjekt den St?ckpreis aus
 1176   			jTextFieldNeuerVertragStueckpreis.setText(form.format(auswahlArtikel.getStueckpreis()));
 1177   			try {
 1178   				stueckPreis = form.parse(jTextFieldNeuerVertragStueckpreis.getText()).doubleValue();
 1179   			} catch (ParseException e) {
 1180   				wiSimLogger.log(Level.WARNING,"JPanelNeuerVertrag.ladeStueckpreis",e,false);
 1181   			}
 1182   			calculate();
 1183   		} else {
 1184   			jTextFieldNeuerVertragStueckpreis.setText("");
 1185   			calculate();
 1186   		}
 1187   	}
 1188   
 1189   	/**
 1190   	 * Method ladeMwSt. Ladet den Wert der Mwst aus der Datenbank.
 1191   	 */
 1192   	private void ladeMwSt() {
 1193   		//MwSt-Satz bestimmen
 1194   		try {
 1195   			mwst = dao.getMwSt();
 1196   		} catch (WiSimDAOException e) {
 1197   			wiSimLogger.log("ladeMwSt()", e);
 1198   		}
 1199   		jTextFieldMwst.setText(String.valueOf(mwst));
 1200   	}
 1201   
 1202   	/** ?berpr?ft alle Pflichtfelder auf Inhalt. Gibt eine Fehlemeldung
 1203   	   * an den Benutzer, falls ein oder mehrere Felder leer gelassen
 1204   	   * wurden.
 1205   	   * @return false: Es wurden nicht alle Felder gef?llt.
 1206   	   * true: Alle Pflichtfelder sind gef?llt.
 1207   	   */
 1208   	private boolean ueberpruefenFelder() {
 1209   		Collection pflichtfelder = new Vector();
 1210   
 1211   		if (jComboBoxKunde.getSelectedIndex() == 0) {
 1212   			pflichtfelder.add("Kunde");
 1213   		}
 1214   
 1215   		if (jComboBoxArtikel.getSelectedIndex() == 0) {
 1216   			pflichtfelder.add("Artikel");
 1217   		}
 1218   
 1219   		if (jTextFieldNeuerVertragAbnahmemenge.getText().equals("")) {
 1220   			pflichtfelder.add("Abnahmemenge");
 1221   		}
 1222   
 1223   		if (jTextFieldRabatt.getText().equals("")) {
 1224   			pflichtfelder.add("Rabatt");
 1225   		}
 1226   
 1227   		if (jTextFieldSkonto.getText().equals("")) {
 1228   			pflichtfelder.add("Skonto");
 1229   		}
 1230   
 1231   		if (jTextFieldSkontofristTage.getText().equals("")) {
 1232   			pflichtfelder.add("Skontofrist");
 1233   		}
 1234   
 1235   		if (jTextFieldNeuerVertragTag.getText().equals("") || jTextFieldNeuerVertragMonat.getText().equals("") || jTextFieldNeuerVertragJahr.getText().equals("")) {
 1236   			pflichtfelder.add("Lieferdatum");
 1237   		}
 1238   
 1239   		/*Wurde ein oder mehrere Pflichtfelder nicht ausgef?llt erscheint ein JOptionPane, dass dem
 1240   		 *Benutzer die fehlenden noch leeren Felder anzeigt*/
 1241   		if (!pflichtfelder.isEmpty()) {
 1242   			JOptionPane errorPane = new JOptionPane();
 1243   			if (pflichtfelder.size() > 1)
 1244   				JOptionPane.showMessageDialog(this, "Folgende Felder m?ssen ausgef?llt werden: " + pflichtfelder.toString().substring(1, pflichtfelder.toString().length() - 1), "Fehler beim Anlegen des neuen Vertrages", JOptionPane.ERROR_MESSAGE);
 1245   			else
 1246   				JOptionPane.showMessageDialog(this, "Das folgende Feld muss ausgef?llt werden: " + pflichtfelder.toString().substring(1, pflichtfelder.toString().length() - 1), "Fehler beim Anlegen des neuen Vertrages", JOptionPane.ERROR_MESSAGE);
 1247   
 1248   			return false;
 1249   		}
 1250   		return true;
 1251   	}
 1252   
 1253   	/** ?berpr?ft das eingegebene Lieferdatum
 1254   	   * @return Gibt das Lieferdatum als GregorianDate zur?ck. Oder NULL, wenn das
 1255   	   * Datum ung?ltig ist.
 1256   	   */
 1257   	private GregorianCalendar ueberpruefeLieferdatum() {
 1258   		int lieferTag = Integer.parseInt(jTextFieldNeuerVertragTag.getText());
 1259   		int lieferMonat = Integer.parseInt(jTextFieldNeuerVertragMonat.getText()) - 1;
 1260   		int lieferJahr = Integer.parseInt(jTextFieldNeuerVertragJahr.getText());
 1261   
 1262   		GregorianCalendar lieferDatum = new GregorianCalendar(lieferJahr, lieferMonat, lieferTag);
 1263   
 1264   		if (lieferTag != lieferDatum.get(Calendar.DATE)) {
 1265   			JOptionPane.showMessageDialog(this, "Ung?ltiges Lieferdatum!", "Fehler", 0);
 1266   			return null;
 1267   		}
 1268   
 1269   		if (lieferDatum.getTime().before(wiSimMainController.getActDate())) {
 1270   			JOptionPane.showMessageDialog(this, "Lieferdatum liegt in der Vergangenheit!", "Fehler", 0);
 1271   			return null;
 1272   		}
 1273   		return lieferDatum;
 1274   	}
 1275   
 1276   	/** L?scht alle Felder und setzt alle Werte zur?ck. */
 1277   	private void clearFields() {
 1278   		jTextFieldNeuerVertragKundentyp.setText("");
 1279   		jTextFieldNeuerVertragAnsprueche.setText("");
 1280   		jTextFieldNeuerVertragZahlungsmoral.setText("");
 1281   		jTextFieldNeuerVertragAnzahlVertraege.setText("");
 1282   		jTextFieldNeuerVertragStueckpreis.setText("");
 1283   		jTextFieldNeuerVertragAbnahmemenge.setText("");
 1284   		jTextFieldSkonto.setText("");
 1285   		jTextFieldSkontofristTage.setText("");
 1286   		jTextFieldRabatt.setText("");
 1287   		jTextFieldNeuerVertragTag.setText("");
 1288   		jTextFieldNeuerVertragMonat.setText("");
 1289   		jTextFieldNeuerVertragJahr.setText("");
 1290   		jTextFieldNeuerVertragNettozahldatum.setText("");
 1291   		jTextFieldNeuerVertragIntermediateResult1.setText("");
 1292   		jTextFieldNeuerVertragIntermediateResult2.setText("");
 1293   		jTextFieldNeuerVertragIntermediateResult3.setText("");
 1294   		jTextFieldNeuerVertragAngebotspreisOhneRabatt.setText("");
 1295   		jTextFieldNeuerVertragAngebotspreisOhneSkonto.setText("");
 1296   		jTextFieldNeuerVertragAngebotspreisMwST.setText("");
 1297   		jTextFieldNeuerVertragAngebotspreis.setText("");
 1298   
 1299   		rabattwert = 0;
 1300   		skontowert = 0;
 1301   		mengenwert = 0;
 1302   		angebotsPreis = 0;
 1303   		stueckPreis = 0;
 1304   
 1305   		jComboBoxArtikel.setSelectedIndex(0);
 1306   		jComboBoxKunde.setSelectedIndex(0);
 1307   	}
 1308   
 1309   	/**
 1310   	 * Method speicherVertrag. Schreibt die Daten in die Datenbank.
 1311   	 */
 1312   	private void speicherVertrag() {
 1313   
 1314   		int i = 0;
 1315   		int j = 0;
 1316   
 1317   		//Test der Pflichtfelder
 1318   		if (ueberpruefenFelder() != true) {
 1319   			return;
 1320   		}
 1321   
 1322   		//Validierung des Lieferdatums
 1323   		GregorianCalendar lieferDatum = ueberpruefeLieferdatum();
 1324   		if (lieferDatum == null) {
 1325   			return;
 1326   		}
 1327   		java.sql.Date lieferDateSQL = new java.sql.Date(lieferDatum.getTimeInMillis());
 1328   
 1329   		// Id's in Auftragsrechnung und in Auftrag z?hlen
 1330   
 1331   		Collection vertraege = null;
 1332   		Collection atrechnungen = null;
 1333   
 1334   		try {
 1335   			vertraege = dao.getVertraege();
 1336   		} catch (WiSimDAOException e) {
 1337   			wiSimLogger.log("speicherVertrag()", e);
 1338   		}
 1339   		// Verhindert NullPointerException bei einer leeren Liste
 1340   		if (vertraege != null) {
 1341   			Iterator it = vertraege.iterator();
 1342   			while (it.hasNext()) {
 1343   				Vertrag testVertrag = (Vertrag) it.next();
 1344   				i++;
 1345   			}
 1346   		}
 1347   
 1348   		try {
 1349   			atrechnungen = dao.getAuftragsrechnungen();
 1350   		} catch (WiSimDAOException e) {
 1351   			wiSimLogger.log("speicherVertrag()", e);
 1352   		}
 1353   
 1354   		if (atrechnungen != null) {
 1355   			Iterator it = atrechnungen.iterator();
 1356   			while (it.hasNext()) {
 1357   				Auftragsrechnung testAtr = (Auftragsrechnung) it.next();
 1358   				j++;
 1359   			}
 1360   		}
 1361   
 1362   		//liefert listItem des selektierten Eintrags aus der ComboBox vom Kunden
 1363   		String listItem1 = String.valueOf(jComboBoxKunde.getSelectedIndex());
 1364   		//sucht das ausgew?hlte KundenObjekt in Hashtabelle kundeObjekt
 1365   		Kunde auswahlKunde = (Kunde) kundeObjekt.get(listItem1);
 1366   		int kdId = auswahlKunde.getId();
 1367   
 1368   		//liefert listItem des selektierten Eintrags aus der ComboBox vom Artikel
 1369   		String listItem2 = String.valueOf(jComboBoxArtikel.getSelectedIndex());
 1370   		//sucht das ausgew?hlte Artikelobjekt in Hashtabelle artikelObjekt
 1371   		Artikel auswahlArtikel = (Artikel) artikelObjekt.get(listItem2);
 1372   		int artId = auswahlArtikel.getNr();
 1373   		boolean zleingang = false;
 1374   
 1375   		Auftragsrechnung atr = new Auftragsrechnung();
 1376   		// Auftragsrechnungsdaten vorbereiten
 1377   		atr.setNr(j + 1);
 1378   		try {
 1379   			atr.setBetrag(form.parse(jTextFieldNeuerVertragAngebotspreis.getText()).doubleValue());
 1380   		} catch (ParseException e) {
 1381   			wiSimLogger.log(Level.WARNING,"JPanelNeuerVertrag.speicherVertrag",e,false);
 1382   		}
 1383   		atr.setAuftragNr(i + 1);
 1384   		atr.setMwSt(mwst);
 1385   		atr.setzEingang(zleingang);
 1386   
 1387   		try {
 1388   			dao.setAuftragsrechnung(atr);
 1389   		} catch (WiSimDAOException e) {
 1390   			wiSimLogger.log("speicherVertrag()", e);
 1391   		} catch (WiSimDAOWriteException e) {
 1392   			wiSimLogger.log("speicherVertrag()", e);
 1393   		}
 1394   
 1395   		Vertrag vertrag = new Vertrag();
 1396   		// Vertragsdaten vorbereiten
 1397   		vertrag.setVertragsId(i + 1);
 1398   		vertrag.setKundenId(kdId);
 1399   		vertrag.setLieferdatum(lieferDateSQL);
 1400   		vertrag.setRabatt(Double.parseDouble(jTextFieldRabatt.getText().toString()));
 1401   		vertrag.setSkonto(Double.parseDouble(jTextFieldSkonto.getText().toString()));
 1402   		vertrag.setSkontofrist(Long.parseLong(jTextFieldSkontofristTage.getText().toString()));
 1403   		vertrag.setVertragsdatum(new java.sql.Date(wiSimMainController.getActDate().getTime()));
 1404   		vertrag.setAuftragsrechnungsId(j + 1);
 1405   
 1406   		try {
 1407   			dao.setNeuenVertrag(vertrag);
 1408   		} catch (WiSimDAOException e) {
 1409   			wiSimLogger.log("speicherVertrag()", e);
 1410   		} catch (WiSimDAOWriteException e) {
 1411   			wiSimLogger.log("speicherVertrag()", e);
 1412   		}
 1413   
 1414   		AuftragsPosition atp = new AuftragsPosition();
 1415   		//AuftragsPositionsdaten vorbereiten
 1416   		atp.setAtNr(i + 1);
 1417   		atp.setArtNr(artId);
 1418   		atp.setBestellmenge(Long.parseLong(jTextFieldNeuerVertragAbnahmemenge.getText().toString()));
 1419   
 1420   		try {
 1421   			dao.setAuftragsPosition(atp);
 1422   		} catch (WiSimDAOWriteException e) {
 1423   			wiSimLogger.log("speicherVertrag()", e);
 1424   		}
 1425   
 1426   		i = 0;
 1427   		j = 0;
 1428   		clearFields();
 1429   		ladeKunden();
 1430   		ladeArtikel();
 1431   
 1432   	}
 1433   
 1434       // Variables declaration - do not modify//GEN-BEGIN:variables
 1435       private javax.swing.JButton jButtonNeuerVertragAbbrechen;
 1436       private javax.swing.JButton jButtonNeuerVertragSpeichern;
 1437       private javax.swing.JComboBox jComboBoxArtikel;
 1438       private javax.swing.JComboBox jComboBoxKunde;
 1439       private javax.swing.JLabel jLabelAngebotspreis;
 1440       private javax.swing.JLabel jLabelArtikel;
 1441       private javax.swing.JLabel jLabelEUR;
 1442       private javax.swing.JLabel jLabelEUR1;
 1443       private javax.swing.JLabel jLabelEUR2;
 1444       private javax.swing.JLabel jLabelEUR3;
 1445       private javax.swing.JLabel jLabelEUR4;
 1446       private javax.swing.JLabel jLabelEUR5;
 1447       private javax.swing.JLabel jLabelEUR6;
 1448       private javax.swing.JLabel jLabelEUR7;
 1449       private javax.swing.JLabel jLabelGleich;
 1450       private javax.swing.JLabel jLabelGleich2;
 1451       private javax.swing.JLabel jLabelGleich3;
 1452       private javax.swing.JLabel jLabelKunde;
 1453       private javax.swing.JLabel jLabelMinus;
 1454       private javax.swing.JLabel jLabelMinus2;
 1455       private javax.swing.JLabel jLabelMwst;
 1456       private javax.swing.JLabel jLabelNeuerVertrag;
 1457       private javax.swing.JLabel jLabelNeuerVertragAbnahmemenge;
 1458       private javax.swing.JLabel jLabelNeuerVertragAnsprueche;
 1459       private javax.swing.JLabel jLabelNeuerVertragAnzahlVertraege;
 1460       private javax.swing.JLabel jLabelNeuerVertragKundenTyp;
 1461       private javax.swing.JLabel jLabelNeuerVertragLieferdatum;
 1462       private javax.swing.JLabel jLabelNeuerVertragNettozahldatum;
 1463       private javax.swing.JLabel jLabelNeuerVertragZahlungsmoral;
 1464       private javax.swing.JLabel jLabelProzent;
 1465       private javax.swing.JLabel jLabelProzent1;
 1466       private javax.swing.JLabel jLabelProzent2;
 1467       private javax.swing.JLabel jLabelRabatt;
 1468       private javax.swing.JLabel jLabelRabatt2;
 1469       private javax.swing.JLabel jLabelSkonto;
 1470       private javax.swing.JLabel jLabelSkonto2;
 1471       private javax.swing.JLabel jLabelSkontofrist;
 1472       private javax.swing.JLabel jLabelStueckpreis;
 1473       private javax.swing.JLabel jLabelTage;
 1474       private javax.swing.JLabel jLabelZwischensumme1;
 1475       private javax.swing.JLabel jLabelZwischensumme2;
 1476       private javax.swing.JLabel jLabelZwischensumme3;
 1477       private javax.swing.JOptionPane jOptionAlert;
 1478       private javax.swing.JOptionPane jOptionPaneConfirm;
 1479       private javax.swing.JPanel jPanelAngebotspreis;
 1480       private javax.swing.JPanel jPanelArtikelWaehlen;
 1481       private javax.swing.JPanel jPanelBestelldatenEingeben;
 1482       private javax.swing.JPanel jPanelKundeWaehlen;
 1483       private javax.swing.JPanel jPanelKundendaten;
 1484       private javax.swing.JSeparator jSeparator1;
 1485       private javax.swing.JSeparator jSeparator2;
 1486       private javax.swing.JSeparator jSeparator3;
 1487       private javax.swing.JTextField jTextFieldMwst;
 1488       private javax.swing.JTextField jTextFieldNeuerVertragAbnahmemenge;
 1489       private javax.swing.JTextField jTextFieldNeuerVertragAngebotspreis;
 1490       private javax.swing.JTextField jTextFieldNeuerVertragAngebotspreisMwST;
 1491       private javax.swing.JTextField jTextFieldNeuerVertragAngebotspreisOhneRabatt;
 1492       private javax.swing.JTextField jTextFieldNeuerVertragAngebotspreisOhneSkonto;
 1493       private javax.swing.JTextField jTextFieldNeuerVertragAnsprueche;
 1494       private javax.swing.JTextField jTextFieldNeuerVertragAnzahlVertraege;
 1495       private javax.swing.JTextField jTextFieldNeuerVertragIntermediateResult1;
 1496       private javax.swing.JTextField jTextFieldNeuerVertragIntermediateResult2;
 1497       private javax.swing.JTextField jTextFieldNeuerVertragIntermediateResult3;
 1498       private javax.swing.JTextField jTextFieldNeuerVertragJahr;
 1499       private javax.swing.JTextField jTextFieldNeuerVertragKundentyp;
 1500       private javax.swing.JTextField jTextFieldNeuerVertragMonat;
 1501       private javax.swing.JTextField jTextFieldNeuerVertragNettozahldatum;
 1502       private javax.swing.JTextField jTextFieldNeuerVertragStueckpreis;
 1503       private javax.swing.JTextField jTextFieldNeuerVertragTag;
 1504       private javax.swing.JTextField jTextFieldNeuerVertragZahlungsmoral;
 1505       private javax.swing.JTextField jTextFieldRabatt;
 1506       private javax.swing.JTextField jTextFieldSkonto;
 1507       private javax.swing.JTextField jTextFieldSkontofristTage;
 1508       // End of variables declaration//GEN-END:variables
 1509   }

Save This Page
Home » openjdk-7 » net.sourceforge.wisim » controller » [javadoc | source]