OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 149 | Rev 174 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 149 Rev 156
1
/*
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 * 
3
 * 
4
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
4
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
5
 * 
5
 * 
6
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
6
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
7
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
7
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
8
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
8
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
9
 * language governing permissions and limitations under the License.
9
 * language governing permissions and limitations under the License.
10
 * 
10
 * 
11
 * When distributing the software, include this License Header Notice in each file.
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
12
 */
13
 
13
 
14
 package org.openconcerto.erp.core.supplychain.order.component;
14
 package org.openconcerto.erp.core.supplychain.order.component;
15
 
15
 
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
17
import org.openconcerto.erp.core.common.component.AdresseSQLComponent;
17
import org.openconcerto.erp.core.common.component.AdresseSQLComponent;
18
import org.openconcerto.erp.core.common.component.TransfertBaseSQLComponent;
18
import org.openconcerto.erp.core.common.component.TransfertBaseSQLComponent;
19
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
19
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
20
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement;
20
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement;
21
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable;
21
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable;
22
import org.openconcerto.erp.core.common.ui.DeviseField;
22
import org.openconcerto.erp.core.common.ui.DeviseField;
23
import org.openconcerto.erp.core.common.ui.TotalPanel;
23
import org.openconcerto.erp.core.common.ui.TotalPanel;
24
import org.openconcerto.erp.core.finance.tax.model.TaxeCache;
24
import org.openconcerto.erp.core.finance.tax.model.TaxeCache;
25
import org.openconcerto.erp.core.sales.product.element.ReferenceArticleSQLElement;
25
import org.openconcerto.erp.core.sales.product.element.ReferenceArticleSQLElement;
26
import org.openconcerto.erp.core.supplychain.order.element.DemandeAchatItemSQLElement;
26
import org.openconcerto.erp.core.supplychain.order.element.DemandeAchatItemSQLElement;
27
import org.openconcerto.erp.core.supplychain.order.ui.CommandeItemTable;
27
import org.openconcerto.erp.core.supplychain.order.ui.CommandeItemTable;
28
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater;
28
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater;
29
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater.TypeStockUpdate;
29
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater.TypeStockUpdate;
30
import org.openconcerto.erp.core.supplychain.stock.element.StockLabel;
30
import org.openconcerto.erp.core.supplychain.stock.element.StockLabel;
31
import org.openconcerto.erp.generationDoc.gestcomm.CommandeXmlSheet;
31
import org.openconcerto.erp.generationDoc.gestcomm.CommandeXmlSheet;
32
import org.openconcerto.erp.panel.PanelOOSQLComponent;
32
import org.openconcerto.erp.panel.PanelOOSQLComponent;
33
import org.openconcerto.erp.preferences.DefaultNXProps;
33
import org.openconcerto.erp.preferences.DefaultNXProps;
34
import org.openconcerto.erp.utils.TM;
34
import org.openconcerto.erp.utils.TM;
35
import org.openconcerto.sql.Configuration;
35
import org.openconcerto.sql.Configuration;
36
import org.openconcerto.sql.element.DefaultElementSQLObject;
36
import org.openconcerto.sql.element.DefaultElementSQLObject;
37
import org.openconcerto.sql.element.ElementSQLObject;
37
import org.openconcerto.sql.element.ElementSQLObject;
38
import org.openconcerto.sql.element.SQLElement;
38
import org.openconcerto.sql.element.SQLElement;
39
import org.openconcerto.sql.model.SQLBackgroundTableCache;
39
import org.openconcerto.sql.model.SQLBackgroundTableCache;
40
import org.openconcerto.sql.model.SQLInjector;
40
import org.openconcerto.sql.model.SQLInjector;
41
import org.openconcerto.sql.model.SQLRow;
41
import org.openconcerto.sql.model.SQLRow;
42
import org.openconcerto.sql.model.SQLRowAccessor;
42
import org.openconcerto.sql.model.SQLRowAccessor;
43
import org.openconcerto.sql.model.SQLRowValues;
43
import org.openconcerto.sql.model.SQLRowValues;
44
import org.openconcerto.sql.model.SQLTable;
44
import org.openconcerto.sql.model.SQLTable;
45
import org.openconcerto.sql.model.Where;
45
import org.openconcerto.sql.model.Where;
-
 
46
import org.openconcerto.sql.preferences.SQLPreferences;
46
import org.openconcerto.sql.sqlobject.ElementComboBox;
47
import org.openconcerto.sql.sqlobject.ElementComboBox;
47
import org.openconcerto.sql.sqlobject.JUniqueTextField;
48
import org.openconcerto.sql.sqlobject.JUniqueTextField;
48
import org.openconcerto.sql.sqlobject.SQLRequestComboBox;
49
import org.openconcerto.sql.sqlobject.SQLRequestComboBox;
49
import org.openconcerto.sql.users.UserManager;
50
import org.openconcerto.sql.users.UserManager;
50
import org.openconcerto.sql.view.EditFrame;
51
import org.openconcerto.sql.view.EditFrame;
51
import org.openconcerto.sql.view.list.RowValuesTable;
52
import org.openconcerto.sql.view.list.RowValuesTable;
52
import org.openconcerto.ui.AutoHideListener;
53
import org.openconcerto.ui.AutoHideListener;
53
import org.openconcerto.ui.DefaultGridBagConstraints;
54
import org.openconcerto.ui.DefaultGridBagConstraints;
54
import org.openconcerto.ui.FormLayouter;
55
import org.openconcerto.ui.FormLayouter;
55
import org.openconcerto.ui.JDate;
56
import org.openconcerto.ui.JDate;
56
import org.openconcerto.ui.TitledSeparator;
57
import org.openconcerto.ui.TitledSeparator;
57
import org.openconcerto.ui.component.ComboLockedMode;
58
import org.openconcerto.ui.component.ComboLockedMode;
58
import org.openconcerto.ui.component.ITextArea;
59
import org.openconcerto.ui.component.ITextArea;
59
import org.openconcerto.ui.component.ITextCombo;
60
import org.openconcerto.ui.component.ITextCombo;
60
import org.openconcerto.ui.component.InteractionMode;
61
import org.openconcerto.ui.component.InteractionMode;
61
import org.openconcerto.ui.preferences.DefaultProps;
62
import org.openconcerto.ui.preferences.DefaultProps;
62
import org.openconcerto.utils.ExceptionHandler;
63
import org.openconcerto.utils.ExceptionHandler;
63
 
64
 
64
import java.awt.Color;
65
import java.awt.Color;
65
import java.awt.GridBagConstraints;
66
import java.awt.GridBagConstraints;
66
import java.awt.GridBagLayout;
67
import java.awt.GridBagLayout;
67
import java.awt.event.ActionEvent;
68
import java.awt.event.ActionEvent;
68
import java.awt.event.ActionListener;
69
import java.awt.event.ActionListener;
69
import java.beans.PropertyChangeEvent;
70
import java.beans.PropertyChangeEvent;
70
import java.beans.PropertyChangeListener;
71
import java.beans.PropertyChangeListener;
71
import java.sql.SQLException;
72
import java.sql.SQLException;
-
 
73
import java.util.List;
72
 
74
 
73
import javax.swing.JCheckBox;
75
import javax.swing.JCheckBox;
74
import javax.swing.JLabel;
76
import javax.swing.JLabel;
75
import javax.swing.JOptionPane;
77
import javax.swing.JOptionPane;
76
import javax.swing.JPanel;
78
import javax.swing.JPanel;
77
import javax.swing.JScrollPane;
79
import javax.swing.JScrollPane;
78
import javax.swing.JTextField;
80
import javax.swing.JTextField;
79
import javax.swing.SwingConstants;
81
import javax.swing.SwingConstants;
80
import javax.swing.SwingUtilities;
82
import javax.swing.SwingUtilities;
81
import javax.swing.event.DocumentEvent;
83
import javax.swing.event.DocumentEvent;
82
import javax.swing.event.DocumentListener;
84
import javax.swing.event.DocumentListener;
83
import javax.swing.event.TableModelEvent;
85
import javax.swing.event.TableModelEvent;
84
import javax.swing.event.TableModelListener;
86
import javax.swing.event.TableModelListener;
85
 
87
 
86
public class CommandeSQLComponent extends TransfertBaseSQLComponent {
88
public class CommandeSQLComponent extends TransfertBaseSQLComponent {
87
 
89
 
88
    private CommandeItemTable table = new CommandeItemTable();
90
    private CommandeItemTable table = new CommandeItemTable();
89
    private PanelOOSQLComponent panelOO;
91
    private PanelOOSQLComponent panelOO;
90
 
92
 
91
    private JUniqueTextField numeroUniqueCommande;
93
    private JUniqueTextField numeroUniqueCommande;
92
    private final SQLTable tableNum = getTable().getBase().getTable("NUMEROTATION_AUTO");
94
    private final SQLTable tableNum = getTable().getBase().getTable("NUMEROTATION_AUTO");
93
    private final ITextArea infos = new ITextArea(3, 3);
95
    private final ITextArea infos = new ITextArea(3, 3);
94
    private ElementComboBox fourn = new ElementComboBox();
96
    private ElementComboBox fourn = new ElementComboBox();
95
    private final JCheckBox boxLivrClient = new JCheckBox("Livrer directement le client");
97
    private final JCheckBox boxLivrClient = new JCheckBox("Livrer directement le client");
96
    private DefaultElementSQLObject compAdr;
98
    private DefaultElementSQLObject compAdr;
97
    final JPanel panelAdrSpec = new JPanel(new GridBagLayout());
99
    final JPanel panelAdrSpec = new JPanel(new GridBagLayout());
98
    protected ElementComboBox boxAdr;
100
    protected ElementComboBox boxAdr;
99
    private JDate dateCommande = new JDate(true);
101
    private JDate dateCommande = new JDate(true);
100
    private ElementSQLObject componentPrincipaleAdr;
102
    private ElementSQLObject componentPrincipaleAdr;
101
 
103
 
102
    public CommandeSQLComponent() {
104
    public CommandeSQLComponent() {
103
        super(Configuration.getInstance().getDirectory().getElement("COMMANDE"));
105
        super(Configuration.getInstance().getDirectory().getElement("COMMANDE"));
104
    }
106
    }
105
 
107
 
106
    public ElementComboBox getBoxFournisseur() {
108
    public ElementComboBox getBoxFournisseur() {
107
        return this.fourn;
109
        return this.fourn;
108
    }
110
    }
109
 
111
 
110
    public void addViews() {
112
    public void addViews() {
111
        this.setLayout(new GridBagLayout());
113
        this.setLayout(new GridBagLayout());
112
        final GridBagConstraints c = new DefaultGridBagConstraints();
114
        final GridBagConstraints c = new DefaultGridBagConstraints();
113
 
115
 
114
        // Numero du commande
116
        // Numero du commande
115
        c.gridx = 0;
117
        c.gridx = 0;
116
        c.weightx = 0;
118
        c.weightx = 0;
117
        this.add(new JLabel(getLabelFor("NUMERO"), SwingConstants.RIGHT), c);
119
        this.add(new JLabel(getLabelFor("NUMERO"), SwingConstants.RIGHT), c);
118
 
120
 
119
        this.numeroUniqueCommande = new JUniqueTextField(16) {
121
        this.numeroUniqueCommande = new JUniqueTextField(16) {
120
            @Override
122
            @Override
121
            public String getAutoRefreshNumber() {
123
            public String getAutoRefreshNumber() {
122
                if (getMode() == Mode.INSERTION) {
124
                if (getMode() == Mode.INSERTION) {
123
                    return NumerotationAutoSQLElement.getNextNumero(getElement().getClass(), dateCommande.getDate());
125
                    return NumerotationAutoSQLElement.getNextNumero(getElement().getClass(), dateCommande.getDate());
124
                } else {
126
                } else {
125
                    return null;
127
                    return null;
126
                }
128
                }
127
            }
129
            }
128
        };
130
        };
129
        c.gridx++;
131
        c.gridx++;
130
        c.weightx = 1;
132
        c.weightx = 1;
131
        c.fill = GridBagConstraints.NONE;
133
        c.fill = GridBagConstraints.NONE;
132
        DefaultGridBagConstraints.lockMinimumSize(numeroUniqueCommande);
134
        DefaultGridBagConstraints.lockMinimumSize(numeroUniqueCommande);
133
        this.add(this.numeroUniqueCommande, c);
135
        this.add(this.numeroUniqueCommande, c);
134
 
136
 
135
        // Date
137
        // Date
136
        JLabel labelDate = new JLabel(getLabelFor("DATE"));
138
        JLabel labelDate = new JLabel(getLabelFor("DATE"));
137
        labelDate.setHorizontalAlignment(SwingConstants.RIGHT);
139
        labelDate.setHorizontalAlignment(SwingConstants.RIGHT);
138
        c.gridx = 2;
140
        c.gridx = 2;
139
        c.weightx = 0;
141
        c.weightx = 0;
140
        c.fill = GridBagConstraints.HORIZONTAL;
142
        c.fill = GridBagConstraints.HORIZONTAL;
141
        this.add(labelDate, c);
143
        this.add(labelDate, c);
142
 
144
 
143
        c.gridx++;
145
        c.gridx++;
144
        c.fill = GridBagConstraints.NONE;
146
        c.fill = GridBagConstraints.NONE;
145
        this.add(dateCommande, c);
147
        this.add(dateCommande, c);
146
 
148
 
147
        this.dateCommande.addValueListener(new PropertyChangeListener() {
149
        this.dateCommande.addValueListener(new PropertyChangeListener() {
148
 
150
 
149
            @Override
151
            @Override
150
            public void propertyChange(PropertyChangeEvent evt) {
152
            public void propertyChange(PropertyChangeEvent evt) {
151
                if (!isFilling() && dateCommande.getValue() != null) {
153
                if (!isFilling() && dateCommande.getValue() != null) {
152
                    table.setDateDevise(dateCommande.getValue());
154
                    table.setDateDevise(dateCommande.getValue());
153
                }
155
                }
154
            }
156
            }
155
        });
157
        });
156
 
158
 
157
        // Fournisseur
159
        // Fournisseur
158
        c.gridx = 0;
160
        c.gridx = 0;
159
        c.gridy++;
161
        c.gridy++;
160
        c.weightx = 0;
162
        c.weightx = 0;
161
        c.fill = GridBagConstraints.HORIZONTAL;
163
        c.fill = GridBagConstraints.HORIZONTAL;
162
        this.add(new JLabel(getLabelFor("ID_FOURNISSEUR"), SwingConstants.RIGHT), c);
164
        this.add(new JLabel(getLabelFor("ID_FOURNISSEUR"), SwingConstants.RIGHT), c);
163
 
165
 
164
        c.gridx++;
166
        c.gridx++;
165
        c.gridwidth = 1;
167
        c.gridwidth = 1;
166
        c.weightx = 1;
168
        c.weightx = 1;
167
        c.weighty = 0;
169
        c.weighty = 0;
168
        c.fill = GridBagConstraints.NONE;
170
        c.fill = GridBagConstraints.NONE;
169
        this.add(this.fourn, c);
171
        this.add(this.fourn, c);
170
        addRequiredSQLObject(this.fourn, "ID_FOURNISSEUR");
172
        addRequiredSQLObject(this.fourn, "ID_FOURNISSEUR");
-
 
173
        fourn.addModelListener("wantedID", new PropertyChangeListener() {
-
 
174
 
-
 
175
            @Override
-
 
176
            public void propertyChange(PropertyChangeEvent evt) {
-
 
177
                int wantedID = fourn.getWantedID();
-
 
178
                if (wantedID != SQLRow.NONEXISTANT_ID && wantedID >= SQLRow.MIN_VALID_ID) {
-
 
179
 
-
 
180
                    final SQLRow rowF = getTable().getForeignTable("ID_FOURNISSEUR").getRow(wantedID);
-
 
181
 
-
 
182
                    if (rowF.getObject("ID_CATEGORIE_COMPTABLE") != null && !rowF.isForeignEmpty("ID_CATEGORIE_COMPTABLE")) {
-
 
183
                        table.setRowCatComptable(rowF.getForeign("ID_CATEGORIE_COMPTABLE"));
-
 
184
                    } else {
-
 
185
                        table.setRowCatComptable(null);
-
 
186
                    }
-
 
187
 
-
 
188
                } else {
-
 
189
                    table.setRowCatComptable(null);
-
 
190
                }
-
 
191
            }
-
 
192
        });
171
 
193
 
172
        if (!getTable().getFieldsName().contains("LIVRER")) {
194
        if (!getTable().getFieldsName().contains("LIVRER")) {
173
            // Commande en cours
195
            // Commande en cours
174
            JCheckBox boxEnCours = new JCheckBox(getLabelFor("EN_COURS"));
196
            JCheckBox boxEnCours = new JCheckBox(getLabelFor("EN_COURS"));
175
            c.gridx += 2;
197
            c.gridx += 2;
176
            c.weightx = 0;
198
            c.weightx = 0;
177
            c.fill = GridBagConstraints.HORIZONTAL;
199
            c.fill = GridBagConstraints.HORIZONTAL;
178
            c.gridwidth = GridBagConstraints.REMAINDER;
200
            c.gridwidth = GridBagConstraints.REMAINDER;
179
            this.add(boxEnCours, c);
201
            this.add(boxEnCours, c);
180
            c.gridwidth = 1;
202
            c.gridwidth = 1;
181
            this.addRequiredSQLObject(boxEnCours, "EN_COURS");
203
            this.addRequiredSQLObject(boxEnCours, "EN_COURS");
182
        }
204
        }
183
 
205
 
184
        if (getTable().contains("DATE_RECEPTION_DEMANDEE")) {
206
        if (getTable().contains("DATE_RECEPTION_DEMANDEE")) {
185
            // Date
207
            // Date
186
            JLabel labelDateRecptDemande = new JLabel(getLabelFor("DATE_RECEPTION_DEMANDEE"));
208
            JLabel labelDateRecptDemande = new JLabel(getLabelFor("DATE_RECEPTION_DEMANDEE"));
187
            labelDateRecptDemande.setHorizontalAlignment(SwingConstants.RIGHT);
209
            labelDateRecptDemande.setHorizontalAlignment(SwingConstants.RIGHT);
188
            c.gridx = 0;
210
            c.gridx = 0;
189
            c.gridy++;
211
            c.gridy++;
190
            c.weightx = 0;
212
            c.weightx = 0;
191
            c.fill = GridBagConstraints.HORIZONTAL;
213
            c.fill = GridBagConstraints.HORIZONTAL;
192
            this.add(labelDateRecptDemande, c);
214
            this.add(labelDateRecptDemande, c);
193
 
215
 
194
            c.gridx++;
216
            c.gridx++;
195
            c.fill = GridBagConstraints.NONE;
217
            c.fill = GridBagConstraints.NONE;
196
            JDate dateRecptDemande = new JDate();
218
            JDate dateRecptDemande = new JDate();
197
            this.add(dateRecptDemande, c);
219
            this.add(dateRecptDemande, c);
198
            this.addView(dateRecptDemande, "DATE_RECEPTION_DEMANDEE", REQ);
220
            this.addView(dateRecptDemande, "DATE_RECEPTION_DEMANDEE", REQ);
199
 
221
 
200
            JLabel labelDateRecptConfirme = new JLabel(getLabelFor("DATE_RECEPTION_CONFIRMEE"));
222
            JLabel labelDateRecptConfirme = new JLabel(getLabelFor("DATE_RECEPTION_CONFIRMEE"));
201
            labelDateRecptConfirme.setHorizontalAlignment(SwingConstants.RIGHT);
223
            labelDateRecptConfirme.setHorizontalAlignment(SwingConstants.RIGHT);
202
            c.gridx++;
224
            c.gridx++;
203
            c.weightx = 0;
225
            c.weightx = 0;
204
            c.fill = GridBagConstraints.HORIZONTAL;
226
            c.fill = GridBagConstraints.HORIZONTAL;
205
            this.add(labelDateRecptConfirme, c);
227
            this.add(labelDateRecptConfirme, c);
206
 
228
 
207
            c.gridx++;
229
            c.gridx++;
208
            c.fill = GridBagConstraints.NONE;
230
            c.fill = GridBagConstraints.NONE;
209
            JDate dateRecptConfirme = new JDate();
231
            JDate dateRecptConfirme = new JDate();
210
            this.add(dateRecptConfirme, c);
232
            this.add(dateRecptConfirme, c);
211
            this.addView(dateRecptConfirme, "DATE_RECEPTION_CONFIRMEE");
233
            this.addView(dateRecptConfirme, "DATE_RECEPTION_CONFIRMEE");
212
        }
234
        }
213
        // Fournisseur
235
        // Fournisseur
214
        if (getTable().contains("ID_CONTACT_FOURNISSEUR")) {
236
        if (getTable().contains("ID_CONTACT_FOURNISSEUR")) {
215
            c.gridx = 0;
237
            c.gridx = 0;
216
            c.gridy++;
238
            c.gridy++;
217
            c.weightx = 0;
239
            c.weightx = 0;
218
            c.fill = GridBagConstraints.HORIZONTAL;
240
            c.fill = GridBagConstraints.HORIZONTAL;
219
            this.add(new JLabel(getLabelFor("ID_CONTACT_FOURNISSEUR"), SwingConstants.RIGHT), c);
241
            this.add(new JLabel(getLabelFor("ID_CONTACT_FOURNISSEUR"), SwingConstants.RIGHT), c);
220
 
242
 
221
            c.gridx = GridBagConstraints.RELATIVE;
243
            c.gridx = GridBagConstraints.RELATIVE;
222
            c.gridwidth = 1;
244
            c.gridwidth = 1;
223
            c.weightx = 1;
245
            c.weightx = 1;
224
            c.weighty = 0;
246
            c.weighty = 0;
225
            c.fill = GridBagConstraints.HORIZONTAL;
247
            c.fill = GridBagConstraints.HORIZONTAL;
226
            final ElementComboBox boxContactFournisseur = new ElementComboBox();
248
            final ElementComboBox boxContactFournisseur = new ElementComboBox();
227
            final SQLElement contactElement = Configuration.getInstance().getDirectory().getElement("CONTACT_FOURNISSEUR");
249
            final SQLElement contactElement = Configuration.getInstance().getDirectory().getElement("CONTACT_FOURNISSEUR");
228
            boxContactFournisseur.init(contactElement, contactElement.getComboRequest(true));
250
            boxContactFournisseur.init(contactElement, contactElement.getComboRequest(true));
229
            this.add(boxContactFournisseur, c);
251
            this.add(boxContactFournisseur, c);
230
            this.addView(boxContactFournisseur, "ID_CONTACT_FOURNISSEUR", REQ);
252
            this.addView(boxContactFournisseur, "ID_CONTACT_FOURNISSEUR", REQ);
231
 
253
 
232
            fourn.addValueListener(new PropertyChangeListener() {
254
            fourn.addValueListener(new PropertyChangeListener() {
233
 
255
 
234
                @Override
256
                @Override
235
                public void propertyChange(PropertyChangeEvent arg0) {
257
                public void propertyChange(PropertyChangeEvent arg0) {
236
                    if (fourn.getSelectedRow() != null) {
258
                    if (fourn.getSelectedRow() != null) {
237
                        boxContactFournisseur.getRequest().setWhere(new Where(contactElement.getTable().getField("ID_FOURNISSEUR"), "=", fourn.getSelectedRow().getID()));
259
                        boxContactFournisseur.getRequest().setWhere(new Where(contactElement.getTable().getField("ID_FOURNISSEUR"), "=", fourn.getSelectedRow().getID()));
238
                    } else {
260
                    } else {
239
                        boxContactFournisseur.getRequest().setWhere(null);
261
                        boxContactFournisseur.getRequest().setWhere(null);
240
                    }
262
                    }
241
                }
263
                }
242
            });
264
            });
243
        }
265
        }
244
        // Adresse de livraison
266
        // Adresse de livraison
245
        if (getTable().getFieldsName().contains("ID_ADRESSE")) {
267
        if (getTable().getFieldsName().contains("ID_ADRESSE")) {
246
            if (getTable().getFieldsName().contains("LIVRAISON_F")) {
268
            if (getTable().getFieldsName().contains("LIVRAISON_F")) {
247
                c.gridx = 0;
269
                c.gridx = 0;
248
                c.gridy++;
270
                c.gridy++;
249
                c.weightx = 0;
271
                c.weightx = 0;
250
                c.fill = GridBagConstraints.HORIZONTAL;
272
                c.fill = GridBagConstraints.HORIZONTAL;
251
 
273
 
252
                this.boxAdr = new ElementComboBox();
274
                this.boxAdr = new ElementComboBox();
253
                final SQLElement adrElement = getElement().getForeignElement("ID_ADRESSE");
275
                final SQLElement adrElement = getElement().getForeignElement("ID_ADRESSE");
254
                boxAdr.init(adrElement);
276
                boxAdr.init(adrElement);
255
                c.gridwidth = 1;
277
                c.gridwidth = 1;
256
                final JLabel labelAdrLiv = new JLabel("Adresse de livraison existante");
278
                final JLabel labelAdrLiv = new JLabel("Adresse de livraison existante");
257
                this.add(labelAdrLiv, c);
279
                this.add(labelAdrLiv, c);
258
                c.gridx++;
280
                c.gridx++;
259
                c.gridwidth = 2;
281
                c.gridwidth = 2;
260
                this.add(boxAdr, c);
282
                this.add(boxAdr, c);
261
 
283
 
262
                c.gridx = 0;
284
                c.gridx = 0;
263
                c.gridy++;
285
                c.gridy++;
264
                this.add(new JLabel(getLabelFor("ID_ADRESSE")), c);
286
                this.add(new JLabel(getLabelFor("ID_ADRESSE")), c);
265
                c.gridx++;
287
                c.gridx++;
266
                c.gridwidth = GridBagConstraints.REMAINDER;
288
                c.gridwidth = GridBagConstraints.REMAINDER;
267
                // c.gridy++;
289
                // c.gridy++;
268
                this.addView("ID_ADRESSE");
290
                this.addView("ID_ADRESSE");
269
                final DefaultElementSQLObject comp = (DefaultElementSQLObject) this.getView("ID_ADRESSE").getComp();
291
                final DefaultElementSQLObject comp = (DefaultElementSQLObject) this.getView("ID_ADRESSE").getComp();
270
 
292
 
271
                componentPrincipaleAdr = (ElementSQLObject) this.getView("ID_ADRESSE");
293
                componentPrincipaleAdr = (ElementSQLObject) this.getView("ID_ADRESSE");
272
                ((AdresseSQLComponent) componentPrincipaleAdr.getSQLChild()).setDestinataireVisible(true);
294
                ((AdresseSQLComponent) componentPrincipaleAdr.getSQLChild()).setDestinataireVisible(true);
273
                final JCheckBox boxLivr = new JCheckBox("Livré par le fournisseur");
295
                final JCheckBox boxLivr = new JCheckBox("Livré par le fournisseur");
274
                this.add(boxLivr, c);
296
                this.add(boxLivr, c);
275
                this.addSQLObject(boxLivr, "LIVRAISON_F");
297
                this.addSQLObject(boxLivr, "LIVRAISON_F");
276
                boxLivr.addActionListener(new ActionListener() {
298
                boxLivr.addActionListener(new ActionListener() {
277
 
299
 
278
                    @Override
300
                    @Override
279
                    public void actionPerformed(ActionEvent e) {
301
                    public void actionPerformed(ActionEvent e) {
280
 
302
 
281
                        if (boxLivr.isSelected() && !comp.isCreated()) {
303
                        if (boxLivr.isSelected() && !comp.isCreated()) {
282
                            comp.setCreated(true);
304
                            comp.setCreated(true);
283
                            componentPrincipaleAdr.setEditable(InteractionMode.READ_WRITE);
305
                            componentPrincipaleAdr.setEditable(InteractionMode.READ_WRITE);
284
                            if (CommandeSQLComponent.this.getTable().contains("ID_AFFAIRE")) {
306
                            if (CommandeSQLComponent.this.getTable().contains("ID_AFFAIRE")) {
285
 
307
 
286
                                final SQLRow selectedRow = ((ElementComboBox) CommandeSQLComponent.this.getView("ID_AFFAIRE").getComp()).getSelectedRow();
308
                                final SQLRow selectedRow = ((ElementComboBox) CommandeSQLComponent.this.getView("ID_AFFAIRE").getComp()).getSelectedRow();
287
                                SQLRowValues rowVals = getLivraisonAdr(selectedRow);
309
                                SQLRowValues rowVals = getLivraisonAdr(selectedRow);
288
 
310
 
289
                                comp.setValue(rowVals);
311
                                comp.setValue(rowVals);
290
 
312
 
291
                                if (selectedRow != null && !selectedRow.isUndefined()) {
313
                                if (selectedRow != null && !selectedRow.isUndefined()) {
292
                                    final SQLRow clientRow = selectedRow.getForeign("ID_CLIENT");
314
                                    final SQLRow clientRow = selectedRow.getForeign("ID_CLIENT");
293
                                    Where w = new Where(boxAdr.getRequest().getPrimaryTable().getField("ID_CLIENT"), "=", clientRow.getID());
315
                                    Where w = new Where(boxAdr.getRequest().getPrimaryTable().getField("ID_CLIENT"), "=", clientRow.getID());
294
                                    w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE")));
316
                                    w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE")));
295
                                    // w = w.or(new
317
                                    // w = w.or(new
296
                                    // Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=",
318
                                    // Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=",
297
                                    // clientRow.getInt("ID_ADRESSE_F")));
319
                                    // clientRow.getInt("ID_ADRESSE_F")));
298
                                    w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L")));
320
                                    w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L")));
299
                                    if (clientRow.getTable().contains("ID_ADRESSE_L_2")) {
321
                                    if (clientRow.getTable().contains("ID_ADRESSE_L_2")) {
300
                                        w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L_2")));
322
                                        w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L_2")));
301
                                    }
323
                                    }
302
                                    if (clientRow.getTable().contains("ID_ADRESSE_L_3")) {
324
                                    if (clientRow.getTable().contains("ID_ADRESSE_L_3")) {
303
                                        w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L_3")));
325
                                        w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", clientRow.getInt("ID_ADRESSE_L_3")));
304
                                    }
326
                                    }
305
                                    boxAdr.getRequest().setWhere(w);
327
                                    boxAdr.getRequest().setWhere(w);
306
                                } else {
328
                                } else {
307
                                    boxAdr.getRequest().setWhere(null);
329
                                    boxAdr.getRequest().setWhere(null);
308
                                }
330
                                }
309
 
331
 
310
                            }
332
                            }
311
 
333
 
312
                        } else {
334
                        } else {
313
                            if (!boxLivr.isSelected()) {
335
                            if (!boxLivr.isSelected()) {
314
                                comp.setCreated(false);
336
                                comp.setCreated(false);
315
                                componentPrincipaleAdr.setEditable(InteractionMode.DISABLED);
337
                                componentPrincipaleAdr.setEditable(InteractionMode.DISABLED);
316
                            }
338
                            }
317
                        }
339
                        }
318
                    }
340
                    }
319
                });
341
                });
320
 
342
 
321
                c.gridy++;
343
                c.gridy++;
322
                this.add(comp, c);
344
                this.add(comp, c);
323
                this.add(this.getView("ID_ADRESSE").getComp(), c);
345
                this.add(this.getView("ID_ADRESSE").getComp(), c);
324
 
346
 
325
                comp.addValueListener(new PropertyChangeListener() {
347
                comp.addValueListener(new PropertyChangeListener() {
326
 
348
 
327
                    @Override
349
                    @Override
328
                    public void propertyChange(PropertyChangeEvent evt) {
350
                    public void propertyChange(PropertyChangeEvent evt) {
329
                        boxAdr.setVisible(comp.isCreated());
351
                        boxAdr.setVisible(comp.isCreated());
330
                        labelAdrLiv.setVisible(comp.isCreated());
352
                        labelAdrLiv.setVisible(comp.isCreated());
331
                    }
353
                    }
332
                });
354
                });
333
 
355
 
334
                boxAdr.addValueListener(new PropertyChangeListener() {
356
                boxAdr.addValueListener(new PropertyChangeListener() {
335
 
357
 
336
                    @Override
358
                    @Override
337
                    public void propertyChange(PropertyChangeEvent evt) {
359
                    public void propertyChange(PropertyChangeEvent evt) {
338
                        final SQLRow selectedRow = boxAdr.getSelectedRow();
360
                        final SQLRow selectedRow = boxAdr.getSelectedRow();
339
                        if (selectedRow != null && !selectedRow.isUndefined()) {
361
                        if (selectedRow != null && !selectedRow.isUndefined()) {
340
                            SQLRowValues rowVals = selectedRow.asRowValues();
362
                            SQLRowValues rowVals = selectedRow.asRowValues();
341
                            rowVals.clearPrimaryKeys();
363
                            rowVals.clearPrimaryKeys();
342
                            comp.setValue(rowVals);
364
                            comp.setValue(rowVals);
343
                        }
365
                        }
344
                    }
366
                    }
345
                });
367
                });
346
                boxAdr.setVisible(false);
368
                boxAdr.setVisible(false);
347
                labelAdrLiv.setVisible(false);
369
                labelAdrLiv.setVisible(false);
348
 
370
 
349
            } else {
371
            } else {
350
 
372
 
351
                c.gridy++;
373
                c.gridy++;
352
                c.gridx = 1;
374
                c.gridx = 1;
353
              
375
 
354
                c.gridwidth = GridBagConstraints.REMAINDER;
376
                c.gridwidth = GridBagConstraints.REMAINDER;
355
                this.add(boxLivrClient, c);
377
                this.add(boxLivrClient, c);
356
                c.gridwidth = 1;
378
                c.gridwidth = 1;
357
 
379
 
358
                final GridBagConstraints cAdr = new DefaultGridBagConstraints();
380
                final GridBagConstraints cAdr = new DefaultGridBagConstraints();
359
 
381
 
360
                panelAdrSpec.add(new JLabel(getLabelFor("ID_CLIENT"), SwingConstants.RIGHT), cAdr);
382
                panelAdrSpec.add(new JLabel(getLabelFor("ID_CLIENT"), SwingConstants.RIGHT), cAdr);
361
                final ElementComboBox boxClient = new ElementComboBox(true);
383
                final ElementComboBox boxClient = new ElementComboBox(true);
362
                cAdr.weightx = 1;
384
                cAdr.weightx = 1;
363
                cAdr.gridx++;
385
                cAdr.gridx++;
364
                panelAdrSpec.add(boxClient, cAdr);
386
                panelAdrSpec.add(boxClient, cAdr);
365
                this.addView(boxClient, "ID_CLIENT");
387
                this.addView(boxClient, "ID_CLIENT");
366
 
388
 
367
                cAdr.gridy++;
389
                cAdr.gridy++;
368
                cAdr.weightx = 0;
390
                cAdr.weightx = 0;
369
                cAdr.gridx = 0;
391
                cAdr.gridx = 0;
370
                panelAdrSpec.add(new JLabel(TM.tr("address"), SwingConstants.RIGHT), cAdr);
392
                panelAdrSpec.add(new JLabel(TM.tr("address"), SwingConstants.RIGHT), cAdr);
371
                final SQLRequestComboBox boxAdr = new SQLRequestComboBox(true);
393
                final SQLRequestComboBox boxAdr = new SQLRequestComboBox(true);
372
                boxAdr.uiInit(Configuration.getInstance().getDirectory().getElement(getTable().getTable("ADRESSE")).getComboRequest(true));
394
                boxAdr.uiInit(Configuration.getInstance().getDirectory().getElement(getTable().getTable("ADRESSE")).getComboRequest(true));
373
                boxClient.addModelListener("wantedID", new PropertyChangeListener() {
395
                boxClient.addModelListener("wantedID", new PropertyChangeListener() {
374
 
396
 
375
                    @Override
397
                    @Override
376
                    public void propertyChange(PropertyChangeEvent evt) {
398
                    public void propertyChange(PropertyChangeEvent evt) {
377
                        if (boxClient.getSelectedRow() != null && !boxClient.getSelectedRow().isUndefined()) {
399
                        if (boxClient.getSelectedRow() != null && !boxClient.getSelectedRow().isUndefined()) {
378
                            Where w = new Where(boxAdr.getRequest().getPrimaryTable().getField("ID_CLIENT"), "=", boxClient.getSelectedRow().getID());
400
                            Where w = new Where(boxAdr.getRequest().getPrimaryTable().getField("ID_CLIENT"), "=", boxClient.getSelectedRow().getID());
379
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE")));
401
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE")));
380
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE_F")));
402
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE_F")));
381
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE_L")));
403
                            w = w.or(new Where(boxAdr.getRequest().getPrimaryTable().getKey(), "=", boxClient.getSelectedRow().getInt("ID_ADRESSE_L")));
382
                            boxAdr.getRequest().setWhere(w);
404
                            boxAdr.getRequest().setWhere(w);
383
                        } else {
405
                        } else {
384
                            boxAdr.getRequest().setWhere(null);
406
                            boxAdr.getRequest().setWhere(null);
385
                        }
407
                        }
386
                    }
408
                    }
387
                });
409
                });
388
                cAdr.weightx = 1;
410
                cAdr.weightx = 1;
389
                cAdr.gridx++;
411
                cAdr.gridx++;
390
                panelAdrSpec.add(boxAdr, cAdr);
412
                panelAdrSpec.add(boxAdr, cAdr);
391
 
413
 
392
                cAdr.gridx = 0;
414
                cAdr.gridx = 0;
393
                cAdr.gridy++;
415
                cAdr.gridy++;
394
                cAdr.weightx = 0;
416
                cAdr.weightx = 0;
395
                if (getMode() == Mode.MODIFICATION) {
417
                if (getMode() == Mode.MODIFICATION) {
396
                    panelAdrSpec.add(new JLabel(getLabelFor("ID_ADRESSE")), cAdr);
418
                    panelAdrSpec.add(new JLabel(getLabelFor("ID_ADRESSE")), cAdr);
397
                }
419
                }
398
                cAdr.gridx++;
420
                cAdr.gridx++;
399
                cAdr.gridwidth = GridBagConstraints.REMAINDER;
421
                cAdr.gridwidth = GridBagConstraints.REMAINDER;
400
                this.addView("ID_ADRESSE");
422
                this.addView("ID_ADRESSE");
401
                compAdr = (DefaultElementSQLObject) this.getView("ID_ADRESSE").getComp();
423
                compAdr = (DefaultElementSQLObject) this.getView("ID_ADRESSE").getComp();
402
 
424
 
403
                cAdr.gridy++;
425
                cAdr.gridy++;
404
                if (getMode() == Mode.MODIFICATION) {
426
                if (getMode() == Mode.MODIFICATION) {
405
                    panelAdrSpec.add(compAdr, cAdr);
427
                    panelAdrSpec.add(compAdr, cAdr);
406
                }
428
                }
407
                boxAdr.addValueListener(new PropertyChangeListener() {
429
                boxAdr.addValueListener(new PropertyChangeListener() {
408
 
430
 
409
                    @Override
431
                    @Override
410
                    public void propertyChange(PropertyChangeEvent evt) {
432
                    public void propertyChange(PropertyChangeEvent evt) {
411
                        SQLRow row = boxAdr.getSelectedRow();
433
                        SQLRow row = boxAdr.getSelectedRow();
412
                        if (row != null && !row.isUndefined()) {
434
                        if (row != null && !row.isUndefined()) {
413
                            compAdr.setCreated(true);
435
                            compAdr.setCreated(true);
414
                            SQLRowValues asRowValues = new SQLRowValues(row.asRowValues());
436
                            SQLRowValues asRowValues = new SQLRowValues(row.asRowValues());
415
                            compAdr.setValue(asRowValues);
437
                            compAdr.setValue(asRowValues);
416
                        }
438
                        }
417
                    }
439
                    }
418
                });
440
                });
419
 
441
 
420
                c.gridy++;
442
                c.gridy++;
421
                c.gridx = 0;
443
                c.gridx = 0;
422
                c.gridwidth = GridBagConstraints.REMAINDER;
444
                c.gridwidth = GridBagConstraints.REMAINDER;
423
                c.weightx = 1;
445
                c.weightx = 1;
424
                this.add(panelAdrSpec, c);
446
                this.add(panelAdrSpec, c);
425
                c.gridwidth = 1;
447
                c.gridwidth = 1;
426
                c.weightx = 0;
448
                c.weightx = 0;
427
 
449
 
428
                boxLivrClient.addActionListener(new ActionListener() {
450
                boxLivrClient.addActionListener(new ActionListener() {
429
 
451
 
430
                    @Override
452
                    @Override
431
                    public void actionPerformed(ActionEvent e) {
453
                    public void actionPerformed(ActionEvent e) {
432
                        panelAdrSpec.setVisible(boxLivrClient.isSelected());
454
                        panelAdrSpec.setVisible(boxLivrClient.isSelected());
433
 
455
 
434
                        if (!boxLivrClient.isSelected()) {
456
                        if (!boxLivrClient.isSelected()) {
435
                            boxClient.setValue((Integer) null);
457
                            boxClient.setValue((Integer) null);
436
                            boxAdr.setValue((Integer) null);
458
                            boxAdr.setValue((Integer) null);
437
                            compAdr.setCreated(false);
459
                            compAdr.setCreated(false);
438
                        }
460
                        }
439
                    }
461
                    }
440
                });
462
                });
441
                panelAdrSpec.setVisible(false);
463
                panelAdrSpec.setVisible(false);
442
            }
464
            }
443
        }
465
        }
444
        c.gridwidth = 1;
466
        c.gridwidth = 1;
445
 
467
 
446
        // Champ Module
468
        // Champ Module
447
        c.gridx = 0;
469
        c.gridx = 0;
448
        c.gridy++;
470
        c.gridy++;
449
        c.gridwidth = GridBagConstraints.REMAINDER;
471
        c.gridwidth = GridBagConstraints.REMAINDER;
450
        final JPanel addP = ComptaSQLConfElement.createAdditionalPanel();
472
        final JPanel addP = ComptaSQLConfElement.createAdditionalPanel();
451
        this.setAdditionalFieldsPanel(new FormLayouter(addP, 2));
473
        this.setAdditionalFieldsPanel(new FormLayouter(addP, 2));
452
        this.add(addP, c);
474
        this.add(addP, c);
453
 
475
 
454
        c.gridy++;
476
        c.gridy++;
455
        c.gridwidth = 1;
477
        c.gridwidth = 1;
456
 
478
 
-
 
479
        SQLPreferences prefs = SQLPreferences.getMemCached(getTable().getDBRoot());
-
 
480
        final boolean showDevise = prefs.getBoolean(AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE, false);
-
 
481
 
457
        final ElementComboBox boxDevise = new ElementComboBox();
482
        final ElementComboBox boxDevise = new ElementComboBox();
458
        if (DefaultNXProps.getInstance().getBooleanValue(AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE, false)) {
483
        if (showDevise) {
459
            // Devise
484
            // Devise
460
            c.gridx = 0;
485
            c.gridx = 0;
461
            c.gridy++;
486
            c.gridy++;
462
            c.weightx = 0;
487
            c.weightx = 0;
463
            c.fill = GridBagConstraints.HORIZONTAL;
488
            c.fill = GridBagConstraints.HORIZONTAL;
464
            this.add(new JLabel(getLabelFor("ID_DEVISE"), SwingConstants.RIGHT), c);
489
            this.add(new JLabel(getLabelFor("ID_DEVISE"), SwingConstants.RIGHT), c);
465
 
490
 
466
            c.gridx++;
491
            c.gridx++;
467
            c.gridwidth = 1;
492
            c.gridwidth = 1;
468
            c.weightx = 1;
493
            c.weightx = 1;
469
            c.weighty = 0;
494
            c.weighty = 0;
470
            c.fill = GridBagConstraints.NONE;
495
            c.fill = GridBagConstraints.NONE;
471
            DefaultGridBagConstraints.lockMinimumSize(boxDevise);
496
            DefaultGridBagConstraints.lockMinimumSize(boxDevise);
472
            this.add(boxDevise, c);
497
            this.add(boxDevise, c);
473
            this.addView(boxDevise, "ID_DEVISE");
498
            this.addView(boxDevise, "ID_DEVISE");
474
 
499
 
475
            fourn.addValueListener(new PropertyChangeListener() {
500
            fourn.addValueListener(new PropertyChangeListener() {
476
 
501
 
477
                @Override
502
                @Override
478
                public void propertyChange(PropertyChangeEvent arg0) {
503
                public void propertyChange(PropertyChangeEvent arg0) {
479
                    if (fourn.getSelectedRow() != null) {
504
                    if (fourn.getSelectedRow() != null) {
480
                        boxDevise.setValue(fourn.getSelectedRow().getForeignID("ID_DEVISE"));
505
                        boxDevise.setValue(fourn.getSelectedRow().getForeignID("ID_DEVISE"));
481
                    } else {
506
                    } else {
482
                        boxDevise.setValue((SQLRowAccessor) null);
507
                        boxDevise.setValue((SQLRowAccessor) null);
483
                    }
508
                    }
484
                }
509
                }
485
            });
510
            });
486
 
511
 
487
            if (getTable().contains("INCOTERM")) {
512
            if (getTable().contains("INCOTERM")) {
488
                // Incoterm
513
                // Incoterm
489
                c.gridx++;
514
                c.gridx++;
490
                c.weightx = 0;
515
                c.weightx = 0;
491
                c.fill = GridBagConstraints.HORIZONTAL;
516
                c.fill = GridBagConstraints.HORIZONTAL;
492
                this.add(new JLabel(getLabelFor("INCOTERM"), SwingConstants.RIGHT), c);
517
                this.add(new JLabel(getLabelFor("INCOTERM"), SwingConstants.RIGHT), c);
493
 
518
 
494
                c.gridx++;
519
                c.gridx++;
495
                c.gridwidth = 1;
520
                c.gridwidth = 1;
496
                c.weightx = 1;
521
                c.weightx = 1;
497
                c.weighty = 0;
522
                c.weighty = 0;
498
                c.fill = GridBagConstraints.NONE;
523
                c.fill = GridBagConstraints.NONE;
499
                final ITextCombo box = new ITextCombo(ComboLockedMode.LOCKED);
524
                final ITextCombo box = new ITextCombo(ComboLockedMode.LOCKED);
500
 
525
 
501
                for (String s : ReferenceArticleSQLElement.CONDITIONS) {
526
                for (String s : ReferenceArticleSQLElement.CONDITIONS) {
502
                    box.addItem(s);
527
                    box.addItem(s);
503
                }
528
                }
504
                this.add(box, c);
529
                this.add(box, c);
505
                this.addView(box, "INCOTERM", REQ);
530
                this.addView(box, "INCOTERM", REQ);
506
                box.addValueListener(new PropertyChangeListener() {
531
                box.addValueListener(new PropertyChangeListener() {
507
 
532
 
508
                    @Override
533
                    @Override
509
                    public void propertyChange(PropertyChangeEvent evt) {
534
                    public void propertyChange(PropertyChangeEvent evt) {
510
                        table.setIncoterms(box.getCurrentValue());
535
                        table.setIncoterms(box.getCurrentValue());
511
                    }
536
                    }
512
                });
537
                });
513
            }
538
            }
514
 
539
 
515
        }
540
        }
516
 
541
 
517
        // Reference
542
        // Reference
518
        c.gridx = 0;
543
        c.gridx = 0;
519
        c.gridy++;
544
        c.gridy++;
520
        c.gridwidth = 1;
545
        c.gridwidth = 1;
521
        c.weightx = 0;
546
        c.weightx = 0;
522
        c.fill = GridBagConstraints.HORIZONTAL;
547
        c.fill = GridBagConstraints.HORIZONTAL;
523
        c.anchor = GridBagConstraints.EAST;
548
        c.anchor = GridBagConstraints.EAST;
524
        this.add(new JLabel(getLabelFor("NOM"), SwingConstants.RIGHT), c);
549
        this.add(new JLabel(getLabelFor("NOM"), SwingConstants.RIGHT), c);
525
 
550
 
526
        final JTextField textNom = new JTextField();
551
        final JTextField textNom = new JTextField();
527
        c.gridx++;
552
        c.gridx++;
528
        c.weightx = 1;
553
        c.weightx = 1;
529
        this.add(textNom, c);
554
        this.add(textNom, c);
530
 
555
 
531
        String field;
556
        String field;
532
            field = "ID_COMMERCIAL";
557
            field = "ID_COMMERCIAL";
533
        // Commercial
558
        // Commercial
534
        c.weightx = 0;
559
        c.weightx = 0;
535
        c.gridx++;
560
        c.gridx++;
536
        this.add(new JLabel(getLabelFor(field), SwingConstants.RIGHT), c);
561
        this.add(new JLabel(getLabelFor(field), SwingConstants.RIGHT), c);
537
 
562
 
538
        ElementComboBox commSel = new ElementComboBox(false, 25);
563
        ElementComboBox commSel = new ElementComboBox(false, 25);
539
        c.gridx = GridBagConstraints.RELATIVE;
564
        c.gridx = GridBagConstraints.RELATIVE;
540
        c.gridwidth = 1;
565
        c.gridwidth = 1;
541
        c.weightx = 1;
566
        c.weightx = 1;
542
        c.weighty = 0;
567
        c.weighty = 0;
543
        c.fill = GridBagConstraints.NONE;
568
        c.fill = GridBagConstraints.NONE;
544
        c.anchor = GridBagConstraints.WEST;
569
        c.anchor = GridBagConstraints.WEST;
545
        this.add(commSel, c);
570
        this.add(commSel, c);
546
        addRequiredSQLObject(commSel, field);
571
        addRequiredSQLObject(commSel, field);
547
 
572
 
548
        // Table d'élément
573
        // Table d'élément
549
        c.fill = GridBagConstraints.BOTH;
574
        c.fill = GridBagConstraints.BOTH;
550
        c.gridy++;
575
        c.gridy++;
551
        c.gridx = 0;
576
        c.gridx = 0;
552
        c.weightx = 0;
577
        c.weightx = 0;
553
        c.weighty = 1;
578
        c.weighty = 1;
554
        c.gridwidth = 4;
579
        c.gridwidth = 4;
555
        this.add(this.table, c);
580
        this.add(this.table, c);
556
        if (DefaultNXProps.getInstance().getBooleanValue(AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE, false)) {
581
        if (showDevise) {
557
 
582
 
558
            boxDevise.addValueListener(new PropertyChangeListener() {
583
            boxDevise.addValueListener(new PropertyChangeListener() {
559
 
584
 
560
                @Override
585
                @Override
561
                public void propertyChange(PropertyChangeEvent evt) {
586
                public void propertyChange(PropertyChangeEvent evt) {
562
                    table.setDevise(boxDevise.getSelectedRow());
587
                    table.setDevise(boxDevise.getSelectedRow());
563
                }
588
                }
564
            });
589
            });
565
        }
590
        }
566
 
591
 
567
        this.fourn.addValueListener(new PropertyChangeListener() {
592
        this.fourn.addValueListener(new PropertyChangeListener() {
568
 
593
 
569
            @Override
594
            @Override
570
            public void propertyChange(PropertyChangeEvent evt) {
595
            public void propertyChange(PropertyChangeEvent evt) {
571
                table.setFournisseur(fourn.getSelectedRow());
596
                table.setFournisseur(fourn.getSelectedRow());
572
            }
597
            }
573
        });
598
        });
574
        // Bottom
599
        // Bottom
575
        c.gridy++;
600
        c.gridy++;
576
        c.weighty = 0;
601
        c.weighty = 0;
577
        this.add(getBottomPanel(), c);
602
        this.add(getBottomPanel(), c);
578
 
603
 
579
        c.gridx = 0;
604
        c.gridx = 0;
580
        c.gridy++;
605
        c.gridy++;
581
        c.fill = GridBagConstraints.NONE;
606
        c.fill = GridBagConstraints.NONE;
582
        c.anchor = GridBagConstraints.SOUTHEAST;
607
        c.anchor = GridBagConstraints.SOUTHEAST;
583
        c.gridwidth = GridBagConstraints.REMAINDER;
608
        c.gridwidth = GridBagConstraints.REMAINDER;
584
 
609
 
585
        this.panelOO = new PanelOOSQLComponent(this);
610
        this.panelOO = new PanelOOSQLComponent(this);
586
        this.add(this.panelOO, c);
611
        this.add(this.panelOO, c);
587
 
612
 
588
        addSQLObject(textNom, "NOM");
613
        addSQLObject(textNom, "NOM");
589
        addRequiredSQLObject(dateCommande, "DATE");
614
        addRequiredSQLObject(dateCommande, "DATE");
590
        // addRequiredSQLObject(radioEtat, "ID_ETAT_DEVIS");
615
        // addRequiredSQLObject(radioEtat, "ID_ETAT_DEVIS");
591
        addRequiredSQLObject(this.numeroUniqueCommande, "NUMERO");
616
        addRequiredSQLObject(this.numeroUniqueCommande, "NUMERO");
592
        addSQLObject(this.infos, "INFOS");
617
        addSQLObject(this.infos, "INFOS");
593
 
618
 
594
        this.numeroUniqueCommande.setText(NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
619
        this.numeroUniqueCommande.setText(NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
595
 
620
 
596
        // radioEtat.setValue(EtatDevisSQLElement.EN_ATTENTE);
621
        // radioEtat.setValue(EtatDevisSQLElement.EN_ATTENTE);
597
        // this.numeroUniqueDevis.addLabelWarningMouseListener(new MouseAdapter() {
622
        // this.numeroUniqueDevis.addLabelWarningMouseListener(new MouseAdapter() {
598
        // public void mousePressed(MouseEvent e) {
623
        // public void mousePressed(MouseEvent e) {
599
        //
624
        //
600
        // if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
625
        // if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
601
        // numeroUniqueDevis.setText(NumerotationAutoSQLElement.getNextNumeroDevis());
626
        // numeroUniqueDevis.setText(NumerotationAutoSQLElement.getNextNumeroDevis());
602
        // }
627
        // }
603
        // }
628
        // }
604
        // });
629
        // });
605
 
630
 
606
        DefaultGridBagConstraints.lockMinimumSize(this.fourn);
631
        DefaultGridBagConstraints.lockMinimumSize(this.fourn);
607
        DefaultGridBagConstraints.lockMinimumSize(commSel);
632
        DefaultGridBagConstraints.lockMinimumSize(commSel);
608
    }
633
    }
609
 
634
 
610
    protected SQLRowValues getLivraisonAdr(SQLRow rowAffaire) {
635
    protected SQLRowValues getLivraisonAdr(SQLRow rowAffaire) {
611
        if (rowAffaire != null) {
636
        if (rowAffaire != null) {
612
            SQLRow rowClient = rowAffaire.getForeignRow("ID_CLIENT");
637
            SQLRow rowClient = rowAffaire.getForeignRow("ID_CLIENT");
613
            SQLRow rowAdrL = rowClient.getForeignRow("ID_ADRESSE_L");
638
            SQLRow rowAdrL = rowClient.getForeignRow("ID_ADRESSE_L");
614
            if (rowAdrL == null || rowAdrL.isUndefined()) {
639
            if (rowAdrL == null || rowAdrL.isUndefined()) {
615
                rowAdrL = rowClient.getForeignRow("ID_ADRESSE");
640
                rowAdrL = rowClient.getForeignRow("ID_ADRESSE");
616
            }
641
            }
617
            SQLRowValues rowVals = rowAdrL.asRowValues();
642
            SQLRowValues rowVals = rowAdrL.asRowValues();
618
            rowVals.clearPrimaryKeys();
643
            rowVals.clearPrimaryKeys();
619
            return rowVals;
644
            return rowVals;
620
        } else {
645
        } else {
621
            return new SQLRowValues(getTable().getTable("ADRESSE"));
646
            return new SQLRowValues(getTable().getTable("ADRESSE"));
622
        }
647
        }
623
    }
648
    }
624
 
649
 
625
    private JPanel getBottomPanel() {
650
    private JPanel getBottomPanel() {
626
        final JPanel panel = new JPanel(new GridBagLayout());
651
        final JPanel panel = new JPanel(new GridBagLayout());
627
        final GridBagConstraints c = new DefaultGridBagConstraints();
652
        final GridBagConstraints c = new DefaultGridBagConstraints();
628
 
653
 
629
        // Colonne 1 : Infos
654
        // Colonne 1 : Infos
630
        c.gridx = 0;
655
        c.gridx = 0;
631
        c.weightx = 1;
656
        c.weightx = 1;
632
        c.anchor = GridBagConstraints.WEST;
657
        c.anchor = GridBagConstraints.WEST;
633
        c.fill = GridBagConstraints.HORIZONTAL;
658
        c.fill = GridBagConstraints.HORIZONTAL;
634
 
659
 
635
        panel.add(new TitledSeparator(getLabelFor("INFOS")), c);
660
        panel.add(new TitledSeparator(getLabelFor("INFOS")), c);
636
 
661
 
637
        c.gridy++;
662
        c.gridy++;
638
        c.weighty = 0;
663
        c.weighty = 0;
639
        c.weightx = 1;
664
        c.weightx = 1;
640
        c.fill = GridBagConstraints.BOTH;
665
        c.fill = GridBagConstraints.BOTH;
641
        final JScrollPane scrollPane = new JScrollPane(this.infos);
666
        final JScrollPane scrollPane = new JScrollPane(this.infos);
642
        scrollPane.setBorder(null);
667
        scrollPane.setBorder(null);
643
        panel.add(scrollPane, c);
668
        panel.add(scrollPane, c);
644
 
669
 
645
        // Colonne 2 : Poids & autres
670
        // Colonne 2 : Poids & autres
646
        DefaultProps props = DefaultNXProps.getInstance();
671
        DefaultProps props = DefaultNXProps.getInstance();
647
        Boolean b = props.getBooleanValue("ArticleShowPoids");
672
        Boolean b = props.getBooleanValue("ArticleShowPoids");
648
        final JTextField textPoidsTotal = new JTextField(8);
673
        final JTextField textPoidsTotal = new JTextField(8);
649
        JTextField poids = new JTextField();
674
        JTextField poids = new JTextField();
650
        if (b) {
675
        if (b) {
651
            final JPanel panelPoids = new JPanel(new GridBagLayout());
676
            final JPanel panelPoids = new JPanel(new GridBagLayout());
652
            GridBagConstraints cPoids = new DefaultGridBagConstraints();
677
            GridBagConstraints cPoids = new DefaultGridBagConstraints();
653
            cPoids.weightx = 0;
678
            cPoids.weightx = 0;
654
            panelPoids.add(new JLabel(getLabelFor("T_POIDS")), cPoids);
679
            panelPoids.add(new JLabel(getLabelFor("T_POIDS")), cPoids);
655
            cPoids.weightx = 1;
680
            cPoids.weightx = 1;
656
            textPoidsTotal.setEnabled(false);
681
            textPoidsTotal.setEnabled(false);
657
            textPoidsTotal.setHorizontalAlignment(JTextField.RIGHT);
682
            textPoidsTotal.setHorizontalAlignment(JTextField.RIGHT);
658
            textPoidsTotal.setDisabledTextColor(Color.BLACK);
683
            textPoidsTotal.setDisabledTextColor(Color.BLACK);
659
            cPoids.gridx++;
684
            cPoids.gridx++;
660
            panelPoids.add(textPoidsTotal, cPoids);
685
            panelPoids.add(textPoidsTotal, cPoids);
661
 
686
 
662
            c.gridx++;
687
            c.gridx++;
663
            c.gridy = 0;
688
            c.gridy = 0;
664
            c.weightx = 0;
689
            c.weightx = 0;
665
            c.weighty = 0;
690
            c.weighty = 0;
666
            c.gridwidth = 1;
691
            c.gridwidth = 1;
667
            c.gridheight = 2;
692
            c.gridheight = 2;
668
            c.fill = GridBagConstraints.NONE;
693
            c.fill = GridBagConstraints.NONE;
669
            c.anchor = GridBagConstraints.NORTHEAST;
694
            c.anchor = GridBagConstraints.NORTHEAST;
670
            panel.add(panelPoids, c);
695
            panel.add(panelPoids, c);
671
            DefaultGridBagConstraints.lockMinimumSize(panelPoids);
696
            DefaultGridBagConstraints.lockMinimumSize(panelPoids);
672
            addSQLObject(textPoidsTotal, "T_POIDS");
697
            addSQLObject(textPoidsTotal, "T_POIDS");
673
        } else {
698
        } else {
674
            addSQLObject(poids, "T_POIDS");
699
            addSQLObject(poids, "T_POIDS");
675
        }
700
        }
676
 
701
 
677
        DeviseField textPortHT = new DeviseField();
702
        DeviseField textPortHT = new DeviseField();
678
        DeviseField textRemiseHT = new DeviseField();
703
        DeviseField textRemiseHT = new DeviseField();
679
        ElementComboBox comboTaxePort = new ElementComboBox(false, 10);
704
        ElementComboBox comboTaxePort = new ElementComboBox(false, 10);
680
 
705
 
681
        if (getTable().contains("PORT_HT")) {
706
        if (getTable().contains("PORT_HT")) {
682
 
707
 
683
            addSQLObject(textPortHT, "PORT_HT");
708
            addSQLObject(textPortHT, "PORT_HT");
684
            final JPanel panelPoids = new JPanel(new GridBagLayout());
709
            final JPanel panelPoids = new JPanel(new GridBagLayout());
685
            GridBagConstraints cPort = new DefaultGridBagConstraints();
710
            GridBagConstraints cPort = new DefaultGridBagConstraints();
686
            cPort.gridx = 0;
711
            cPort.gridx = 0;
687
            cPort.fill = GridBagConstraints.NONE;
712
            cPort.fill = GridBagConstraints.NONE;
688
            cPort.weightx = 0;
713
            cPort.weightx = 0;
689
            panelPoids.add(new JLabel(getLabelFor("PORT_HT")), cPort);
714
            panelPoids.add(new JLabel(getLabelFor("PORT_HT")), cPort);
690
            textPortHT.setHorizontalAlignment(JTextField.RIGHT);
715
            textPortHT.setHorizontalAlignment(JTextField.RIGHT);
691
            cPort.gridx++;
716
            cPort.gridx++;
692
            cPort.weightx = 1;
717
            cPort.weightx = 1;
693
            panelPoids.add(textPortHT, cPort);
718
            panelPoids.add(textPortHT, cPort);
694
 
719
 
695
            cPort.gridy++;
720
            cPort.gridy++;
696
            cPort.gridx = 0;
721
            cPort.gridx = 0;
697
            cPort.weightx = 0;
722
            cPort.weightx = 0;
698
            addRequiredSQLObject(comboTaxePort, "ID_TAXE_PORT");
723
            addRequiredSQLObject(comboTaxePort, "ID_TAXE_PORT");
699
            panelPoids.add(new JLabel(getLabelFor("ID_TAXE_PORT")), cPort);
724
            panelPoids.add(new JLabel(getLabelFor("ID_TAXE_PORT")), cPort);
700
            cPort.gridx++;
725
            cPort.gridx++;
701
            cPort.weightx = 1;
726
            cPort.weightx = 1;
702
            panelPoids.add(comboTaxePort, cPort);
727
            panelPoids.add(comboTaxePort, cPort);
703
 
728
 
704
            addSQLObject(textRemiseHT, "REMISE_HT");
729
            addSQLObject(textRemiseHT, "REMISE_HT");
705
            cPort.gridy++;
730
            cPort.gridy++;
706
            cPort.gridx = 0;
731
            cPort.gridx = 0;
707
            cPort.fill = GridBagConstraints.NONE;
732
            cPort.fill = GridBagConstraints.NONE;
708
            cPort.weightx = 0;
733
            cPort.weightx = 0;
709
            panelPoids.add(new JLabel(getLabelFor("REMISE_HT")), cPort);
734
            panelPoids.add(new JLabel(getLabelFor("REMISE_HT")), cPort);
710
            textRemiseHT.setHorizontalAlignment(JTextField.RIGHT);
735
            textRemiseHT.setHorizontalAlignment(JTextField.RIGHT);
711
            cPort.gridx++;
736
            cPort.gridx++;
712
            cPort.weightx = 1;
737
            cPort.weightx = 1;
713
            panelPoids.add(textRemiseHT, cPort);
738
            panelPoids.add(textRemiseHT, cPort);
714
 
739
 
715
            c.gridx++;
740
            c.gridx++;
716
            c.gridy = 0;
741
            c.gridy = 0;
717
            c.weightx = 0;
742
            c.weightx = 0;
718
            c.weighty = 0;
743
            c.weighty = 0;
719
            c.gridwidth = 1;
744
            c.gridwidth = 1;
720
            c.gridheight = 2;
745
            c.gridheight = 2;
721
            c.fill = GridBagConstraints.NONE;
746
            c.fill = GridBagConstraints.NONE;
722
            c.anchor = GridBagConstraints.NORTHEAST;
747
            c.anchor = GridBagConstraints.NORTHEAST;
723
            panel.add(panelPoids, c);
748
            panel.add(panelPoids, c);
724
            DefaultGridBagConstraints.lockMinimumSize(panelPoids);
749
            DefaultGridBagConstraints.lockMinimumSize(panelPoids);
725
        }
750
        }
726
        // Total
751
        // Total
727
 
752
 
728
        DeviseField fieldHT = new DeviseField();
753
        DeviseField fieldHT = new DeviseField();
729
        DeviseField fieldEco = new DeviseField();
754
        DeviseField fieldEco = new DeviseField();
730
        DeviseField fieldTVA = new DeviseField();
755
        DeviseField fieldTVA = new DeviseField();
731
        DeviseField fieldTTC = new DeviseField();
756
        DeviseField fieldTTC = new DeviseField();
732
        DeviseField fieldDevise = new DeviseField();
757
        DeviseField fieldDevise = new DeviseField();
733
        DeviseField fieldService = new DeviseField();
758
        DeviseField fieldService = new DeviseField();
734
        fieldHT.setOpaque(false);
759
        fieldHT.setOpaque(false);
735
        fieldTVA.setOpaque(false);
760
        fieldTVA.setOpaque(false);
736
        fieldTTC.setOpaque(false);
761
        fieldTTC.setOpaque(false);
737
        fieldService.setOpaque(false);
762
        fieldService.setOpaque(false);
738
        addRequiredSQLObject(fieldEco, "T_ECO_CONTRIBUTION");
763
        addRequiredSQLObject(fieldEco, "T_ECO_CONTRIBUTION");
739
        addRequiredSQLObject(fieldDevise, "T_DEVISE");
764
        addRequiredSQLObject(fieldDevise, "T_DEVISE");
740
        addRequiredSQLObject(fieldHT, "T_HT");
765
        addRequiredSQLObject(fieldHT, "T_HT");
741
        addRequiredSQLObject(fieldTVA, "T_TVA");
766
        addRequiredSQLObject(fieldTVA, "T_TVA");
742
 
767
 
743
        addRequiredSQLObject(fieldTTC, "T_TTC");
768
        addRequiredSQLObject(fieldTTC, "T_TTC");
744
        addRequiredSQLObject(fieldService, "T_SERVICE");
769
        addRequiredSQLObject(fieldService, "T_SERVICE");
745
 
770
 
746
        // Disable
771
        // Disable
747
        this.allowEditable("T_ECO_CONTRIBUTION", false);
772
        this.allowEditable("T_ECO_CONTRIBUTION", false);
748
        this.allowEditable("T_HT", false);
773
        this.allowEditable("T_HT", false);
749
        this.allowEditable("T_TVA", false);
774
        this.allowEditable("T_TVA", false);
750
        this.allowEditable("T_TTC", false);
775
        this.allowEditable("T_TTC", false);
751
        this.allowEditable("T_SERVICE", false);
776
        this.allowEditable("T_SERVICE", false);
752
 
777
 
753
        final TotalPanel totalTTC = new TotalPanel(this.table, fieldEco, fieldHT, fieldTVA, fieldTTC, textPortHT, textRemiseHT, fieldService, null, fieldDevise, null, null,
778
        final TotalPanel totalTTC = new TotalPanel(this.table, fieldEco, fieldHT, fieldTVA, fieldTTC, textPortHT, textRemiseHT, fieldService, null, fieldDevise, null, null,
754
                (getTable().contains("ID_TAXE_PORT") ? comboTaxePort : null), null);
779
                (getTable().contains("ID_TAXE_PORT") ? comboTaxePort : null), null);
755
 
780
 
756
        c.gridx++;
781
        c.gridx++;
757
        c.gridy--;
782
        c.gridy--;
758
        c.gridwidth = GridBagConstraints.REMAINDER;
783
        c.gridwidth = GridBagConstraints.REMAINDER;
759
        c.gridheight = 2;
784
        c.gridheight = 2;
760
        c.anchor = GridBagConstraints.NORTHEAST;
785
        c.anchor = GridBagConstraints.NORTHEAST;
761
        c.fill = GridBagConstraints.BOTH;
786
        c.fill = GridBagConstraints.BOTH;
762
        c.weighty = 0;
787
        c.weighty = 0;
763
        c.weightx = 0;
788
        c.weightx = 0;
764
        DefaultGridBagConstraints.lockMinimumSize(totalTTC);
789
        DefaultGridBagConstraints.lockMinimumSize(totalTTC);
765
 
790
 
766
        panel.add(totalTTC, c);
791
        panel.add(totalTTC, c);
767
 
792
 
768
        c.gridy += 3;
793
        c.gridy += 3;
769
        c.gridheight = 2;
794
        c.gridheight = 2;
770
        c.fill = GridBagConstraints.NONE;
795
        c.fill = GridBagConstraints.NONE;
771
        c.anchor = GridBagConstraints.EAST;
796
        c.anchor = GridBagConstraints.EAST;
772
        panel.add(getModuleTotalPanel(), c);
797
        panel.add(getModuleTotalPanel(), c);
773
 
798
 
774
        table.getModel().addTableModelListener(new TableModelListener() {
799
        table.getModel().addTableModelListener(new TableModelListener() {
775
 
800
 
776
            public void tableChanged(TableModelEvent e) {
801
            public void tableChanged(TableModelEvent e) {
777
                textPoidsTotal.setText(String.valueOf(table.getPoidsTotal()));
802
                textPoidsTotal.setText(String.valueOf(table.getPoidsTotal()));
778
            }
803
            }
779
        });
804
        });
780
 
805
 
781
        textPortHT.getDocument().addDocumentListener(new DocumentListener() {
806
        textPortHT.getDocument().addDocumentListener(new DocumentListener() {
782
            public void changedUpdate(DocumentEvent e) {
807
            public void changedUpdate(DocumentEvent e) {
783
                totalTTC.updateTotal();
808
                totalTTC.updateTotal();
784
            }
809
            }
785
 
810
 
786
            public void removeUpdate(DocumentEvent e) {
811
            public void removeUpdate(DocumentEvent e) {
787
                totalTTC.updateTotal();
812
                totalTTC.updateTotal();
788
            }
813
            }
789
 
814
 
790
            public void insertUpdate(DocumentEvent e) {
815
            public void insertUpdate(DocumentEvent e) {
791
                totalTTC.updateTotal();
816
                totalTTC.updateTotal();
792
            }
817
            }
793
        });
818
        });
794
 
819
 
795
        comboTaxePort.addValueListener(new PropertyChangeListener() {
820
        comboTaxePort.addValueListener(new PropertyChangeListener() {
796
 
821
 
797
            @Override
822
            @Override
798
            public void propertyChange(PropertyChangeEvent evt) {
823
            public void propertyChange(PropertyChangeEvent evt) {
799
                totalTTC.updateTotal();
824
                totalTTC.updateTotal();
800
            }
825
            }
801
        });
826
        });
802
 
827
 
803
        textRemiseHT.getDocument().addDocumentListener(new DocumentListener() {
828
        textRemiseHT.getDocument().addDocumentListener(new DocumentListener() {
804
            public void changedUpdate(DocumentEvent e) {
829
            public void changedUpdate(DocumentEvent e) {
805
                totalTTC.updateTotal();
830
                totalTTC.updateTotal();
806
            }
831
            }
807
 
832
 
808
            public void removeUpdate(DocumentEvent e) {
833
            public void removeUpdate(DocumentEvent e) {
809
                totalTTC.updateTotal();
834
                totalTTC.updateTotal();
810
            }
835
            }
811
 
836
 
812
            public void insertUpdate(DocumentEvent e) {
837
            public void insertUpdate(DocumentEvent e) {
813
                totalTTC.updateTotal();
838
                totalTTC.updateTotal();
814
            }
839
            }
815
        });
840
        });
816
        return panel;
841
        return panel;
817
    }
842
    }
818
 
843
 
819
    protected JPanel getModuleTotalPanel() {
844
    protected JPanel getModuleTotalPanel() {
820
 
845
 
821
        return AutoHideListener.listen(new JPanel());
846
        return AutoHideListener.listen(new JPanel());
822
    }
847
    }
823
 
848
 
824
    public int insert(SQLRow order) {
849
    public int insert(SQLRow order) {
825
 
850
 
826
        int idCommande = getSelectedID();
851
        int idCommande = getSelectedID();
827
        // on verifie qu'un devis du meme numero n'a pas été inséré entre temps
852
        // on verifie qu'un devis du meme numero n'a pas été inséré entre temps
828
        int attempt = 0;
853
        int attempt = 0;
829
        if (!this.numeroUniqueCommande.checkValidation(false)) {
854
        if (!this.numeroUniqueCommande.checkValidation(false)) {
830
            while (attempt < JUniqueTextField.RETRY_COUNT) {
855
            while (attempt < JUniqueTextField.RETRY_COUNT) {
831
                String num = NumerotationAutoSQLElement.getNextNumero(getElement().getClass(), dateCommande.getDate());
856
                String num = NumerotationAutoSQLElement.getNextNumero(getElement().getClass(), dateCommande.getDate());
832
                this.numeroUniqueCommande.setText(num);
857
                this.numeroUniqueCommande.setText(num);
833
                attempt++;
858
                attempt++;
834
                if (this.numeroUniqueCommande.checkValidation(false)) {
859
                if (this.numeroUniqueCommande.checkValidation(false)) {
835
                    System.err.println("ATEMPT " + attempt + " SUCCESS WITH NUMERO " + num);
860
                    System.err.println("ATEMPT " + attempt + " SUCCESS WITH NUMERO " + num);
836
                    break;
861
                    break;
837
                }
862
                }
838
                try {
863
                try {
839
                    Thread.sleep(JUniqueTextField.SLEEP_WAIT_MS);
864
                    Thread.sleep(JUniqueTextField.SLEEP_WAIT_MS);
840
                } catch (InterruptedException e) {
865
                } catch (InterruptedException e) {
841
                    e.printStackTrace();
866
                    e.printStackTrace();
842
                }
867
                }
843
            }
868
            }
844
        }
869
        }
845
        final String num = this.numeroUniqueCommande.getText();
870
        final String num = this.numeroUniqueCommande.getText();
846
        if (attempt == JUniqueTextField.RETRY_COUNT) {
871
        if (attempt == JUniqueTextField.RETRY_COUNT) {
847
            idCommande = getSelectedID();
872
            idCommande = getSelectedID();
848
            ExceptionHandler.handle("Impossible d'ajouter, numéro de commande existant.");
873
            ExceptionHandler.handle("Impossible d'ajouter, numéro de commande existant.");
849
            final Object root = SwingUtilities.getRoot(this);
874
            final Object root = SwingUtilities.getRoot(this);
850
            if (root instanceof EditFrame) {
875
            if (root instanceof EditFrame) {
851
                final EditFrame frame = (EditFrame) root;
876
                final EditFrame frame = (EditFrame) root;
852
                frame.getPanel().setAlwaysVisible(true);
877
                frame.getPanel().setAlwaysVisible(true);
853
            }
878
            }
854
        } else {
879
        } else {
855
            idCommande = super.insert(order);
880
            idCommande = super.insert(order);
856
            this.table.updateField("ID_COMMANDE", idCommande);
881
            this.table.updateField("ID_COMMANDE", idCommande);
857
 
882
 
858
            // Création des articles
883
            // Création des articles
859
            this.table.createArticle(idCommande, this.getElement());
884
            this.table.createArticle(idCommande, this.getElement());
860
 
885
 
861
            try {
886
            try {
862
                updateStock(idCommande);
887
                updateStock(idCommande);
863
            } catch (SQLException e) {
888
            } catch (SQLException e) {
864
                ExceptionHandler.handle("Erreur lors de la mise à jour du stock!", e);
889
                ExceptionHandler.handle("Erreur lors de la mise à jour du stock!", e);
865
            }
890
            }
866
 
891
 
867
            // generation du document
892
            // generation du document
868
            final CommandeXmlSheet sheet = new CommandeXmlSheet(getTable().getRow(idCommande));
893
            final CommandeXmlSheet sheet = new CommandeXmlSheet(getTable().getRow(idCommande));
869
            sheet.createDocumentAsynchronous();
894
            sheet.createDocumentAsynchronous();
870
            sheet.showPrintAndExportAsynchronous(this.panelOO.isVisualisationSelected(), this.panelOO.isImpressionSelected(), true);
895
            sheet.showPrintAndExportAsynchronous(this.panelOO.isVisualisationSelected(), this.panelOO.isImpressionSelected(), true);
871
 
896
 
872
            // incrémentation du numéro auto
897
            // incrémentation du numéro auto
873
            if (NumerotationAutoSQLElement.getNextNumero(getElement().getClass()).equalsIgnoreCase(this.numeroUniqueCommande.getText().trim())) {
898
            if (NumerotationAutoSQLElement.getNextNumero(getElement().getClass()).equalsIgnoreCase(this.numeroUniqueCommande.getText().trim())) {
874
                SQLRowValues rowVals = new SQLRowValues(this.tableNum);
899
                SQLRowValues rowVals = new SQLRowValues(this.tableNum);
875
                int val = this.tableNum.getRow(2).getInt(NumerotationAutoSQLElement.getLabelNumberFor(getElement().getClass()));
900
                int val = this.tableNum.getRow(2).getInt(NumerotationAutoSQLElement.getLabelNumberFor(getElement().getClass()));
876
                val++;
901
                val++;
877
                rowVals.put(NumerotationAutoSQLElement.getLabelNumberFor(getElement().getClass()), new Integer(val));
902
                rowVals.put(NumerotationAutoSQLElement.getLabelNumberFor(getElement().getClass()), new Integer(val));
878
 
903
 
879
                try {
904
                try {
880
                    rowVals.update(2);
905
                    rowVals.update(2);
881
                } catch (SQLException e) {
906
                } catch (SQLException e) {
882
                    e.printStackTrace();
907
                    e.printStackTrace();
883
                }
908
                }
884
            }
909
            }
885
            DemandeAchatItemSQLElement elt = getElement().getDirectory().getElement(DemandeAchatItemSQLElement.class);
910
            DemandeAchatItemSQLElement elt = getElement().getDirectory().getElement(DemandeAchatItemSQLElement.class);
886
            elt.updateStatus(getTable(), getTable().getTable("COMMANDE_ELEMENT"), idCommande);
911
            elt.updateStatus(getTable(), getTable().getTable("COMMANDE_ELEMENT"), idCommande);
887
 
912
 
888
            if (attempt > 0) {
913
            if (attempt > 0) {
889
                SwingUtilities.invokeLater(new Runnable() {
914
                SwingUtilities.invokeLater(new Runnable() {
890
                    public void run() {
915
                    public void run() {
891
                        JOptionPane.showMessageDialog(null, "Le numéro a été actualisé en " + num);
916
                        JOptionPane.showMessageDialog(null, "Le numéro a été actualisé en " + num);
892
                    }
917
                    }
893
                });
918
                });
894
            }
919
            }
895
        }
920
        }
896
 
921
 
897
        return idCommande;
922
        return idCommande;
898
    }
923
    }
899
 
924
 
900
    @Override
925
    @Override
901
    public void select(SQLRowAccessor r) {
926
    public void select(SQLRowAccessor r) {
902
        if (!getTable().contains("LIVRAISON_F") && r != null && !r.isUndefined()) {
927
        if (!getTable().contains("LIVRAISON_F") && r != null && !r.isUndefined()) {
903
 
928
 
904
            SQLRowAccessor adr = (r.getFields().contains("ID_ADRESSE") ? r.getForeign("ID_ADRESSE") : null);
929
            SQLRowAccessor adr = (r.getFields().contains("ID_ADRESSE") ? r.getForeign("ID_ADRESSE") : null);
905
            boxLivrClient.setSelected(adr != null && !adr.isUndefined());
930
            boxLivrClient.setSelected(adr != null && !adr.isUndefined());
906
            panelAdrSpec.setVisible(boxLivrClient.isSelected());
931
            panelAdrSpec.setVisible(boxLivrClient.isSelected());
907
 
932
 
908
            if (!boxLivrClient.isSelected()) {
933
            if (!boxLivrClient.isSelected()) {
909
                compAdr.setCreated(false);
934
                compAdr.setCreated(false);
910
            }
935
            }
911
        }
936
        }
912
        if (getTable().contains("LIVRAISON_F") && componentPrincipaleAdr != null) {
937
        if (getTable().contains("LIVRAISON_F") && componentPrincipaleAdr != null) {
913
            final boolean bLivraison = r != null && r.getFields().contains("ID_ADRESSE") && !r.isForeignEmpty("ID_ADRESSE");
938
            final boolean bLivraison = r != null && r.getFields().contains("ID_ADRESSE") && !r.isForeignEmpty("ID_ADRESSE");
914
            componentPrincipaleAdr.setEditable(bLivraison ? InteractionMode.READ_WRITE : InteractionMode.DISABLED);
939
            componentPrincipaleAdr.setEditable(bLivraison ? InteractionMode.READ_WRITE : InteractionMode.DISABLED);
915
        }
940
        }
916
 
941
 
917
        super.select(r);
942
        super.select(r);
918
        if (r != null) {
-
 
919
            this.table.insertFrom("ID_COMMANDE", r.getID());
-
 
920
        }
-
 
921
    }
943
    }
922
 
944
 
923
    @Override
945
    @Override
924
    public void update() {
946
    public void update() {
925
        if (!this.numeroUniqueCommande.checkValidation()) {
947
        if (!this.numeroUniqueCommande.checkValidation()) {
926
            ExceptionHandler.handle("Impossible d'ajouter, numéro de commande client existant.");
948
            ExceptionHandler.handle("Impossible d'ajouter, numéro de commande client existant.");
927
            Object root = SwingUtilities.getRoot(this);
949
            Object root = SwingUtilities.getRoot(this);
928
            if (root instanceof EditFrame) {
950
            if (root instanceof EditFrame) {
929
                EditFrame frame = (EditFrame) root;
951
                EditFrame frame = (EditFrame) root;
930
                frame.getPanel().setAlwaysVisible(true);
952
                frame.getPanel().setAlwaysVisible(true);
931
            }
953
            }
932
            return;
954
            return;
933
        }
955
        }
934
 
956
 
935
        super.update();
957
        super.update();
936
        final int id = getSelectedID();
958
        final int id = getSelectedID();
937
        this.table.updateField("ID_COMMANDE", id);
959
        this.table.updateField("ID_COMMANDE", id);
938
        this.table.createArticle(id, this.getElement());
960
        this.table.createArticle(id, this.getElement());
939
        ComptaPropsConfiguration.getInstanceCompta().getNonInteractiveSQLExecutor().execute(new Runnable() {
961
        ComptaPropsConfiguration.getInstanceCompta().getNonInteractiveSQLExecutor().execute(new Runnable() {
940
 
962
 
941
            @Override
963
            @Override
942
            public void run() {
964
            public void run() {
943
                try {
965
                try {
944
 
966
 
945
                    // Mise à jour du stock
967
                    // Mise à jour du stock
946
                    updateStock(id);
968
                    updateStock(id);
947
                } catch (Exception e) {
969
                } catch (Exception e) {
948
                    ExceptionHandler.handle("Update error", e);
970
                    ExceptionHandler.handle("Update error", e);
949
                }
971
                }
950
            }
972
            }
951
        });
973
        });
952
 
974
 
953
        DemandeAchatItemSQLElement elt = getElement().getDirectory().getElement(DemandeAchatItemSQLElement.class);
975
        DemandeAchatItemSQLElement elt = getElement().getDirectory().getElement(DemandeAchatItemSQLElement.class);
954
        elt.updateStatus(getTable(), getTable().getTable("COMMANDE_ELEMENT"), getSelectedID());
976
        elt.updateStatus(getTable(), getTable().getTable("COMMANDE_ELEMENT"), getSelectedID());
955
 
977
 
956
        // generation du document
978
        // generation du document
957
        final CommandeXmlSheet sheet = new CommandeXmlSheet(getTable().getRow(id));
979
        final CommandeXmlSheet sheet = new CommandeXmlSheet(getTable().getRow(id));
958
        sheet.createDocumentAsynchronous();
980
        sheet.createDocumentAsynchronous();
959
        sheet.showPrintAndExportAsynchronous(this.panelOO.isVisualisationSelected(), this.panelOO.isImpressionSelected(), true);
981
        sheet.showPrintAndExportAsynchronous(this.panelOO.isVisualisationSelected(), this.panelOO.isImpressionSelected(), true);
960
 
982
 
961
    }
983
    }
962
 
984
 
963
    protected String getLibelleStock(SQLRowAccessor row, SQLRowAccessor rowElt) {
985
    protected String getLibelleStock(SQLRowAccessor row, SQLRowAccessor rowElt) {
964
        return "Commande fournisseur N°" + row.getString("NUMERO");
986
        return "Commande fournisseur N°" + row.getString("NUMERO");
965
    }
987
    }
966
 
988
 
967
    /**
989
    /**
968
     * Mise à jour des stocks pour chaque article composant la facture
990
     * Mise à jour des stocks pour chaque article composant la facture
969
     * 
991
     * 
970
     * @throws SQLException
992
     * @throws SQLException
971
     */
993
     */
972
    private void updateStock(int id) throws SQLException {
994
    private void updateStock(int id) throws SQLException {
973
 
995
 
974
        SQLRow row = getTable().getRow(id);
996
        SQLRow row = getTable().getRow(id);
975
        StockItemsUpdater stockUpdater = new StockItemsUpdater(new StockLabel() {
997
        StockItemsUpdater stockUpdater = new StockItemsUpdater(new StockLabel() {
976
            @Override
998
            @Override
977
            public String getLabel(SQLRowAccessor rowOrigin, SQLRowAccessor rowElt) {
999
            public String getLabel(SQLRowAccessor rowOrigin, SQLRowAccessor rowElt) {
978
                return getLibelleStock(rowOrigin, rowElt);
1000
                return getLibelleStock(rowOrigin, rowElt);
979
            }
1001
            }
980
        }, row, row.getReferentRows(getTable().getTable("COMMANDE_ELEMENT")), TypeStockUpdate.VIRTUAL_RECEPT);
1002
        }, row, row.getReferentRows(getTable().getTable("COMMANDE_ELEMENT")), TypeStockUpdate.VIRTUAL_RECEPT);
981
 
1003
 
982
        stockUpdater.update();
1004
        stockUpdater.update();
983
    }
1005
    }
984
 
1006
 
985
    public void setDefaults() {
1007
    public void setDefaults() {
986
        this.resetValue();
1008
        this.resetValue();
987
        this.numeroUniqueCommande.setText(NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
1009
        this.numeroUniqueCommande.setText(NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
988
        this.table.getModel().clearRows();
1010
        this.table.getModel().clearRows();
989
    }
1011
    }
990
 
1012
 
991
    @Override
1013
    @Override
992
    protected SQLRowValues createDefaults() {
1014
    protected SQLRowValues createDefaults() {
993
        SQLRowValues rowVals = new SQLRowValues(getTable());
1015
        SQLRowValues rowVals = new SQLRowValues(getTable());
994
        rowVals.put("T_POIDS", 0.0F);
1016
        rowVals.put("T_POIDS", 0.0F);
995
        rowVals.put("EN_COURS", Boolean.TRUE);
1017
        rowVals.put("EN_COURS", Boolean.TRUE);
996
 
1018
 
997
        // User
1019
        // User
998
        // SQLSelect sel = new SQLSelect(Configuration.getInstance().getBase());
1020
        // SQLSelect sel = new SQLSelect(Configuration.getInstance().getBase());
999
        SQLElement eltComm = Configuration.getInstance().getDirectory().getElement("COMMERCIAL");
1021
        SQLElement eltComm = Configuration.getInstance().getDirectory().getElement("COMMERCIAL");
1000
        int idUser = UserManager.getInstance().getCurrentUser().getId();
1022
        int idUser = UserManager.getInstance().getCurrentUser().getId();
1001
 
1023
 
1002
        // sel.addSelect(eltComm.getTable().getKey());
1024
        // sel.addSelect(eltComm.getTable().getKey());
1003
        // sel.setWhere(new Where(eltComm.getTable().getField("ID_USER_COMMON"), "=", idUser));
1025
        // sel.setWhere(new Where(eltComm.getTable().getField("ID_USER_COMMON"), "=", idUser));
1004
        // List<SQLRow> rowsComm = (List<SQLRow>)
1026
        // List<SQLRow> rowsComm = (List<SQLRow>)
1005
        // Configuration.getInstance().getBase().getDataSource().execute(sel.asString(), new
1027
        // Configuration.getInstance().getBase().getDataSource().execute(sel.asString(), new
1006
        // SQLRowListRSH(eltComm.getTable()));
1028
        // SQLRowListRSH(eltComm.getTable()));
1007
        SQLRow rowsComm = SQLBackgroundTableCache.getInstance().getCacheForTable(eltComm.getTable()).getFirstRowContains(idUser, eltComm.getTable().getField("ID_USER_COMMON"));
1029
        SQLRow rowsComm = SQLBackgroundTableCache.getInstance().getCacheForTable(eltComm.getTable()).getFirstRowContains(idUser, eltComm.getTable().getField("ID_USER_COMMON"));
1008
 
1030
 
1009
        if (rowsComm != null) {
1031
        if (rowsComm != null) {
1010
            rowVals.put("ID_COMMERCIAL", rowsComm.getID());
1032
            rowVals.put("ID_COMMERCIAL", rowsComm.getID());
1011
        }
1033
        }
1012
        rowVals.put("T_HT", Long.valueOf(0));
1034
        rowVals.put("T_HT", Long.valueOf(0));
1013
        rowVals.put("T_SERVICE", Long.valueOf(0));
1035
        rowVals.put("T_SERVICE", Long.valueOf(0));
1014
        rowVals.put("T_DEVISE", Long.valueOf(0));
1036
        rowVals.put("T_DEVISE", Long.valueOf(0));
1015
        rowVals.put("T_TVA", Long.valueOf(0));
1037
        rowVals.put("T_TVA", Long.valueOf(0));
1016
        rowVals.put("T_TTC", Long.valueOf(0));
1038
        rowVals.put("T_TTC", Long.valueOf(0));
1017
        rowVals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
1039
        rowVals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
1018
 
1040
 
1019
        if (getTable().contains("ID_TAXE_PORT")) {
1041
        if (getTable().contains("ID_TAXE_PORT")) {
1020
            rowVals.put("ID_TAXE_PORT", TaxeCache.getCache().getFirstTaxe().getID());
1042
            rowVals.put("ID_TAXE_PORT", TaxeCache.getCache().getFirstTaxe().getID());
1021
        }
1043
        }
1022
        if (getTable().contains("LIVRAISON_F") && componentPrincipaleAdr != null) {
1044
        if (getTable().contains("LIVRAISON_F") && componentPrincipaleAdr != null) {
1023
            componentPrincipaleAdr.setEditable(InteractionMode.DISABLED);
1045
            componentPrincipaleAdr.setEditable(InteractionMode.DISABLED);
1024
        }
1046
        }
1025
 
1047
 
1026
        return rowVals;
1048
        return rowVals;
1027
    }
1049
    }
1028
 
1050
 
1029
    public CommandeItemTable getRowValuesTablePanel() {
1051
    public CommandeItemTable getRowValuesTablePanel() {
1030
        return this.table;
1052
        return this.table;
1031
    }
1053
    }
1032
 
1054
 
1033
    @Override
1055
    @Override
1034
    public RowValuesTable getRowValuesTable() {
1056
    public RowValuesTable getRowValuesTable() {
1035
        return this.table.getRowValuesTable();
1057
        return this.table.getRowValuesTable();
1036
    }
1058
    }
1037
 
1059
 
1038
    /**
1060
    /**
1039
     * Chargement des éléments d'une commande dans la table
1061
     * Chargement des éléments d'une commande dans la table
1040
     * 
1062
     * 
1041
     * @param idCommande
1063
     * @param idCommande
1042
     * 
1064
     * 
1043
     */
1065
     */
1044
    public void loadCommande(int idCommande) {
1066
    public void loadCommande(int idCommande) {
1045
 
1067
 
1046
        SQLElement commande = Configuration.getInstance().getDirectory().getElement("COMMANDE_CLIENT");
1068
        SQLElement commande = Configuration.getInstance().getDirectory().getElement("COMMANDE_CLIENT");
1047
        SQLElement commandeElt = Configuration.getInstance().getDirectory().getElement("COMMANDE_CLIENT_ELEMENT");
1069
        SQLElement commandeElt = Configuration.getInstance().getDirectory().getElement("COMMANDE_CLIENT_ELEMENT");
1048
 
1070
 
1049
        if (idCommande > 1) {
1071
        if (idCommande > 1) {
1050
            SQLInjector injector = SQLInjector.getInjector(commande.getTable(), this.getTable());
1072
            SQLInjector injector = SQLInjector.getInjector(commande.getTable(), this.getTable());
1051
            this.select(injector.createRowValuesFrom(idCommande));
1073
            this.select(injector.createRowValuesFrom(idCommande));
1052
        }
1074
        }
1053
 
1075
 
1054
        loadItem(this.table, commande, idCommande, commandeElt);
1076
        loadItem(this.table, commande, idCommande, commandeElt);
1055
    }
1077
    }
1056
 
1078
 
1057
    /**
1079
    /**
1058
     * Chargement des éléments d'un devis dans la table
1080
     * Chargement des éléments d'un devis dans la table
1059
     * 
1081
     * 
1060
     * @param idDevis
1082
     * @param idDevis
1061
     * 
1083
     * 
1062
     */
1084
     */
1063
    public void loadDevis(int idDevis) {
1085
    public void loadDevis(int idDevis) {
1064
 
1086
 
1065
        SQLElement devis = Configuration.getInstance().getDirectory().getElement("DEVIS");
1087
        SQLElement devis = Configuration.getInstance().getDirectory().getElement("DEVIS");
1066
        SQLElement devisElt = Configuration.getInstance().getDirectory().getElement("DEVIS_ELEMENT");
1088
        SQLElement devisElt = Configuration.getInstance().getDirectory().getElement("DEVIS_ELEMENT");
1067
 
1089
 
1068
        if (idDevis > 1) {
1090
        if (idDevis > 1) {
1069
            SQLInjector injector = SQLInjector.getInjector(devis.getTable(), this.getTable());
1091
            SQLInjector injector = SQLInjector.getInjector(devis.getTable(), this.getTable());
1070
            this.select(injector.createRowValuesFrom(idDevis));
1092
            this.select(injector.createRowValuesFrom(idDevis));
1071
        }
1093
        }
1072
 
1094
 
1073
        loadItem(this.table, devis, idDevis, devisElt);
1095
        loadItem(this.table, devis, idDevis, devisElt);
1074
    }
1096
    }
1075
 
1097
 
1076
    /**
1098
    /**
1077
     * Chargement des éléments d'une facture dans la table
1099
     * Chargement des éléments d'une facture dans la table
1078
     * 
1100
     * 
1079
     * @param idFact
1101
     * @param idFact
1080
     * 
1102
     * 
1081
     */
1103
     */
1082
    public void loadFacture(int idFact) {
1104
    public void loadFacture(int idFact) {
1083
 
1105
 
1084
        SQLElement facture = Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_FACTURE");
1106
        SQLElement facture = Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_FACTURE");
1085
        SQLElement factureElt = Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_FACTURE_ELEMENT");
1107
        SQLElement factureElt = Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_FACTURE_ELEMENT");
1086
 
1108
 
1087
        if (idFact > 1) {
1109
        if (idFact > 1) {
1088
            SQLInjector injector = SQLInjector.getInjector(facture.getTable(), this.getTable());
1110
            SQLInjector injector = SQLInjector.getInjector(facture.getTable(), this.getTable());
1089
            this.select(injector.createRowValuesFrom(idFact));
1111
            this.select(injector.createRowValuesFrom(idFact));
1090
        }
1112
        }
1091
 
1113
 
1092
        loadItem(this.table, facture, idFact, factureElt);
1114
        loadItem(this.table, facture, idFact, factureElt);
1093
    }
1115
    }
1094
 
1116
 
1095
    @Override
1117
    @Override
1096
    protected void refreshAfterSelect(SQLRowAccessor rSource) {
1118
    protected void refreshAfterSelect(SQLRowAccessor rSource) {
1097
        if (this.dateCommande.getValue() != null) {
1119
        if (this.dateCommande.getValue() != null) {
1098
            this.table.setDateDevise(this.dateCommande.getValue());
1120
            this.table.setDateDevise(this.dateCommande.getValue());
1099
        }
1121
        }
1100
 
1122
 
-
 
1123
    }
-
 
1124
 
-
 
1125
    public void duplicate(final int idCmd) {
-
 
1126
 
-
 
1127
        final SQLElement cmd = Configuration.getInstance().getDirectory().getElement("COMMANDE");
-
 
1128
        final SQLElement cmdElt = Configuration.getInstance().getDirectory().getElement("COMMANDE_ELEMENT");
-
 
1129
 
-
 
1130
        if (idCmd > 1) {
-
 
1131
            final SQLRow row = cmd.getTable().getRow(idCmd);
-
 
1132
            final SQLRowValues rowVals = new SQLRowValues(cmd.getTable());
-
 
1133
            rowVals.put("ID_FOURNISSEUR", row.getInt("ID_FOURNISSEUR"));
-
 
1134
            rowVals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(getElement().getClass()));
-
 
1135
 
-
 
1136
            this.select(rowVals);
-
 
1137
        }
-
 
1138
 
-
 
1139
        final List<SQLRow> myListItem = cmd.getTable().getRow(idCmd).getReferentRows(cmdElt.getTable());
-
 
1140
 
-
 
1141
        if (myListItem.size() != 0) {
-
 
1142
            this.table.getModel().clearRows();
-
 
1143
 
-
 
1144
            for (final SQLRow rowElt : myListItem) {
-
 
1145
 
-
 
1146
                final SQLRowValues rowVals = rowElt.createUpdateRow();
-
 
1147
                rowVals.clearPrimaryKeys();
-
 
1148
                this.table.getModel().addRow(rowVals);
-
 
1149
                final int rowIndex = this.table.getModel().getRowCount() - 1;
-
 
1150
                this.table.getModel().fireTableModelModified(rowIndex);
-
 
1151
            }
-
 
1152
        } else {
-
 
1153
            this.table.getModel().clearRows();
-
 
1154
        }
-
 
1155
        this.table.getModel().fireTableDataChanged();
-
 
1156
        this.table.repaint();
-
 
1157
 
1101
    }
1158
    }
1102
}
1159
}