OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

Rev 41 | Rev 93 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
18 ilm 1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
5
 *
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
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.
10
 *
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
13
 
14
 package org.openconcerto.erp.core.sales.product.ui;
15
 
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
21 ilm 17
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable;
18
import org.openconcerto.erp.core.common.ui.TotalPanel;
18 ilm 19
import org.openconcerto.erp.preferences.DefaultNXProps;
20
import org.openconcerto.sql.Configuration;
21
import org.openconcerto.ui.DefaultGridBagConstraints;
22
import org.openconcerto.ui.preferences.DefaultPreferencePanel;
23
import org.openconcerto.ui.preferences.DefaultProps;
24
 
25
import java.awt.GridBagConstraints;
26
import java.awt.GridBagLayout;
27
import java.awt.event.ItemEvent;
28
import java.awt.event.ItemListener;
29
 
30
import javax.swing.BorderFactory;
31
import javax.swing.JCheckBox;
32
import javax.swing.JPanel;
33
 
34
import org.jdesktop.swingx.VerticalLayout;
35
 
36
public class GestionArticlePreferencePanel extends DefaultPreferencePanel {
37
 
19 ilm 38
    private final JCheckBox checkModeVente, checkLongueur, checkLargeur, checkPoids, checkGestionStockMin;
18 ilm 39
    private final JCheckBox checkService, checkVenteComptoir, checkShowPoids, checkShowStyle, checkSFE;
21 ilm 40
    private final JCheckBox checkDevise, checkMarge;
73 ilm 41
    private JCheckBox checkSite;
18 ilm 42
 
43
    public GestionArticlePreferencePanel() {
44
        super();
45
        setLayout(new GridBagLayout());
46
        final GridBagConstraints c = new DefaultGridBagConstraints();
47
        c.anchor = GridBagConstraints.NORTHWEST;
48
        c.weightx = 1;
49
 
50
        this.checkSFE = new JCheckBox("Activer la vente de formation");
51
        this.checkService = new JCheckBox("Activer la gestion de vente de service");
19 ilm 52
        this.checkGestionStockMin = new JCheckBox("Activer la gestion de stock minimum par article");
18 ilm 53
        this.checkLargeur = new JCheckBox("Largeurs");
54
        this.checkLongueur = new JCheckBox("Longueurs");
55
        this.checkPoids = new JCheckBox("Poids");
56
        this.checkShowStyle = new JCheckBox("Voir la colonne Style");
57
        this.checkModeVente = new JCheckBox("Activer le mode de vente spécifique");
58
        this.checkVenteComptoir = new JCheckBox("Activer le mode vente comptoir");
59
        this.checkShowPoids = new JCheckBox("Voir le Poids");
21 ilm 60
        this.checkDevise = new JCheckBox("Gérer les devise");
61
        this.checkMarge = new JCheckBox("Afficher le taux de marque au lieu du taux de marge");
18 ilm 62
 
19 ilm 63
 
21 ilm 64
        this.add(this.checkDevise, c);
65
        c.gridy++;
66
        this.add(this.checkMarge, c);
67
        c.gridy++;
19 ilm 68
        this.add(this.checkGestionStockMin, c);
69
        c.gridy++;
18 ilm 70
        this.add(this.checkService, c);
71
        c.gridy++;
72
        this.add(this.checkVenteComptoir, c);
73
        c.gridy++;
74
        this.add(this.checkShowPoids, c);
75
        c.gridy++;
76
        this.add(this.checkShowStyle, c);
77
        c.gridy++;
78
        this.add(this.checkModeVente, c);
79
 
80
        final JPanel panelGestionArticle = new JPanel();
81
        panelGestionArticle.setBorder(BorderFactory.createTitledBorder("Gérer les"));
82
        panelGestionArticle.setLayout(new VerticalLayout());
83
        panelGestionArticle.add(this.checkLargeur);
84
        panelGestionArticle.add(this.checkLongueur);
85
        panelGestionArticle.add(this.checkPoids);
86
 
87
        c.gridy++;
88
        c.weighty = 1;
89
        this.add(panelGestionArticle, c);
90
 
91
        setValues();
92
 
93
        this.checkModeVente.addItemListener(new ItemListener() {
94
            public void itemStateChanged(final ItemEvent e) {
95
                enableAdvancedMode(GestionArticlePreferencePanel.this.checkModeVente.isSelected());
96
            }
97
        });
98
    }
99
 
100
    @Override
101
    public void storeValues() {
102
        final DefaultProps props = DefaultNXProps.getInstance();
103
 
104
        props.setProperty("ArticleLongueur", String.valueOf(this.checkLongueur.isSelected()));
105
        props.setProperty("ArticleLargeur", String.valueOf(this.checkLargeur.isSelected()));
106
        props.setProperty("ArticlePoids", String.valueOf(this.checkPoids.isSelected()));
107
        props.setProperty("ArticleShowPoids", String.valueOf(this.checkShowPoids.isSelected()));
108
        props.setProperty("ArticleShowStyle", String.valueOf(this.checkShowStyle.isSelected()));
109
        props.setProperty("ArticleModeVenteAvance", String.valueOf(this.checkModeVente.isSelected()));
110
        props.setProperty("ArticleService", String.valueOf(this.checkService.isSelected()));
111
        props.setProperty("ArticleSFE", String.valueOf(this.checkSFE.isSelected()));
73 ilm 112
        if (this.checkSite != null) {
113
            props.setProperty("ShowSiteFacture", String.valueOf(this.checkSite.isSelected()));
114
        }
18 ilm 115
        props.setProperty("ArticleVenteComptoir", String.valueOf(this.checkVenteComptoir.isSelected()));
19 ilm 116
        props.setProperty("ArticleStockMin", String.valueOf(this.checkGestionStockMin.isSelected()));
21 ilm 117
        props.setProperty(AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE, String.valueOf(this.checkDevise.isSelected()));
118
        props.setProperty(TotalPanel.MARGE_MARQUE, String.valueOf(this.checkMarge.isSelected()));
18 ilm 119
        props.store();
120
    }
121
 
122
    @Override
123
    public void restoreToDefaults() {
124
        this.checkModeVente.setSelected(false);
21 ilm 125
        this.checkShowPoids.setSelected(false);
126
        this.checkShowStyle.setSelected(false);
18 ilm 127
        enableAdvancedMode(false);
128
        this.checkService.setSelected(true);
129
        this.checkSFE.setSelected(false);
41 ilm 130
        this.checkVenteComptoir.setSelected(true);
19 ilm 131
        this.checkGestionStockMin.setSelected(true);
21 ilm 132
        this.checkDevise.setSelected(false);
133
        this.checkMarge.setSelected(false);
73 ilm 134
        if (this.checkSite != null) {
135
            this.checkSite.setSelected(false);
136
        }
18 ilm 137
    }
138
 
139
    @Override
140
    public String getTitleName() {
141
        return "Gestion des articles";
142
    }
143
 
144
    private void setValues() {
145
        final DefaultProps props = DefaultNXProps.getInstance();
146
        // service
147
        final String service = props.getStringProperty("ArticleService");
148
        final Boolean bService = Boolean.valueOf(service);
149
        this.checkService.setSelected(bService == null || bService.booleanValue());
150
 
151
        // SFE
152
        final String sfe = props.getStringProperty("ArticleSFE");
153
        final Boolean bSfe = Boolean.valueOf(sfe);
154
        this.checkSFE.setSelected(bSfe != null && bSfe.booleanValue());
155
 
156
        // vente comptoir
41 ilm 157
        final Boolean bVenteComptoir = DefaultNXProps.getInstance().getBooleanValue("ArticleVenteComptoir", true);
18 ilm 158
        this.checkVenteComptoir.setSelected(bVenteComptoir != null && bVenteComptoir.booleanValue());
159
 
160
        // longueur
161
        final String longueur = props.getStringProperty("ArticleLongueur");
162
        final Boolean bLong = Boolean.valueOf(longueur);
163
        this.checkLongueur.setSelected(bLong == null || bLong.booleanValue());
164
 
165
        // Largeur
166
        final String largeur = props.getStringProperty("ArticleLargeur");
167
        final Boolean bLarg = Boolean.valueOf(largeur);
168
        this.checkLargeur.setSelected(bLarg == null || bLarg.booleanValue());
169
 
170
        // Poids
171
        final String poids = props.getStringProperty("ArticlePoids");
172
        final Boolean bPoids = Boolean.valueOf(poids);
173
        this.checkPoids.setSelected(bPoids == null || bPoids.booleanValue());
174
 
175
        // Show Poids
21 ilm 176
        this.checkShowPoids.setSelected(props.getBooleanValue("ArticleShowPoids", false));
18 ilm 177
 
178
        // Show Style
21 ilm 179
        this.checkShowStyle.setSelected(props.getBooleanValue("ArticleShowStyle", false));
18 ilm 180
 
21 ilm 181
        // Devise
182
        this.checkDevise.setSelected(props.getBooleanValue(AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE, false));
183
 
184
        // Devise
185
        this.checkMarge.setSelected(props.getBooleanValue(TotalPanel.MARGE_MARQUE, false));
186
 
19 ilm 187
        // Show Style
188
        final String gestionStockMin = props.getStringProperty("ArticleStockMin");
189
        final Boolean bStockMin = !gestionStockMin.equalsIgnoreCase("false");
190
        this.checkGestionStockMin.setSelected(bStockMin == null || bStockMin.booleanValue());
191
 
18 ilm 192
        // Mode vente
193
        final String modeVente = props.getStringProperty("ArticleModeVenteAvance");
194
        final Boolean bModeVente = Boolean.valueOf(modeVente);
195
        this.checkModeVente.setSelected(bModeVente == null || bModeVente.booleanValue());
196
        enableAdvancedMode(bModeVente == null || bModeVente.booleanValue());
197
 
73 ilm 198
        // Site
199
        if (this.checkSite != null) {
200
            // Show Style
201
            final String s = props.getStringProperty("ShowSiteFacture");
202
            final Boolean b = s.equalsIgnoreCase("true");
203
            this.checkSite.setSelected(b != null && b);
204
        }
18 ilm 205
    }
206
 
207
    /**
208
     * Active le mode de gestion avancé avec les metriques
209
     */
210
    private void enableAdvancedMode(final boolean b) {
211
        this.checkLargeur.setEnabled(b);
212
        this.checkLongueur.setEnabled(b);
213
        this.checkPoids.setEnabled(b);
214
    }
215
 
216
}