OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

Rev 182 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 182 Rev 185
Line 18... Line 18...
18
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
18
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
19
import org.openconcerto.erp.core.edm.AttachmentAction;
19
import org.openconcerto.erp.core.edm.AttachmentAction;
20
import org.openconcerto.erp.core.sales.order.ui.ReliquatCommandeTableModel;
20
import org.openconcerto.erp.core.sales.order.ui.ReliquatCommandeTableModel;
21
import org.openconcerto.erp.core.supplychain.order.component.CommandeSQLComponent;
21
import org.openconcerto.erp.core.supplychain.order.component.CommandeSQLComponent;
22
import org.openconcerto.erp.core.supplychain.order.component.SaisieAchatSQLComponent;
22
import org.openconcerto.erp.core.supplychain.order.component.SaisieAchatSQLComponent;
-
 
23
import org.openconcerto.erp.core.supplychain.order.ui.EtatCommandeFournisseur;
-
 
24
import org.openconcerto.erp.core.supplychain.order.ui.EtatCommandeRenderer;
23
import org.openconcerto.erp.core.supplychain.receipt.component.BonReceptionSQLComponent;
25
import org.openconcerto.erp.core.supplychain.receipt.component.BonReceptionSQLComponent;
24
import org.openconcerto.erp.generationDoc.gestcomm.CommandeXmlSheet;
26
import org.openconcerto.erp.generationDoc.gestcomm.CommandeXmlSheet;
25
import org.openconcerto.erp.model.MouseSheetXmlListeListener;
27
import org.openconcerto.erp.model.MouseSheetXmlListeListener;
26
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel;
28
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel;
27
import org.openconcerto.sql.Configuration;
29
import org.openconcerto.sql.Configuration;
Line 38... Line 40...
38
import org.openconcerto.sql.model.SQLTableEvent;
40
import org.openconcerto.sql.model.SQLTableEvent;
39
import org.openconcerto.sql.model.SQLTableEvent.Mode;
41
import org.openconcerto.sql.model.SQLTableEvent.Mode;
40
import org.openconcerto.sql.model.SQLTableModifiedListener;
42
import org.openconcerto.sql.model.SQLTableModifiedListener;
41
import org.openconcerto.sql.model.Where;
43
import org.openconcerto.sql.model.Where;
42
import org.openconcerto.sql.preferences.SQLPreferences;
44
import org.openconcerto.sql.preferences.SQLPreferences;
-
 
45
import org.openconcerto.sql.request.UpdateBuilder;
43
import org.openconcerto.sql.view.EditFrame;
46
import org.openconcerto.sql.view.EditFrame;
44
import org.openconcerto.sql.view.EditPanel;
47
import org.openconcerto.sql.view.EditPanel;
-
 
48
import org.openconcerto.sql.view.EditPanelListener;
45
import org.openconcerto.sql.view.list.IListe;
49
import org.openconcerto.sql.view.list.IListe;
46
import org.openconcerto.sql.view.list.IListeAction.IListeEvent;
50
import org.openconcerto.sql.view.list.IListeAction.IListeEvent;
47
import org.openconcerto.sql.view.list.RowAction;
51
import org.openconcerto.sql.view.list.RowAction;
48
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction;
52
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction;
-
 
53
import org.openconcerto.sql.view.list.SQLTableModelColumn;
-
 
54
import org.openconcerto.sql.view.list.SQLTableModelSource;
49
import org.openconcerto.ui.PanelFrame;
55
import org.openconcerto.ui.PanelFrame;
50
import org.openconcerto.utils.ExceptionHandler;
56
import org.openconcerto.utils.ExceptionHandler;
51
import org.openconcerto.utils.cc.ITransformer;
57
import org.openconcerto.utils.cc.ITransformer;
52
 
58
 
-
 
59
import java.awt.Component;
53
import java.awt.GridBagConstraints;
60
import java.awt.GridBagConstraints;
54
import java.awt.GridBagLayout;
61
import java.awt.GridBagLayout;
55
import java.awt.event.ActionEvent;
62
import java.awt.event.ActionEvent;
56
import java.sql.SQLException;
63
import java.sql.SQLException;
57
import java.util.ArrayList;
64
import java.util.ArrayList;
-
 
65
import java.util.Arrays;
58
import java.util.List;
66
import java.util.List;
59
 
67
 
60
import javax.swing.AbstractAction;
68
import javax.swing.AbstractAction;
61
import javax.swing.ImageIcon;
69
import javax.swing.ImageIcon;
62
import javax.swing.JFrame;
70
import javax.swing.JFrame;
-
 
71
import javax.swing.JLabel;
63
import javax.swing.JOptionPane;
72
import javax.swing.JOptionPane;
64
import javax.swing.JPanel;
73
import javax.swing.JPanel;
65
import javax.swing.JScrollPane;
74
import javax.swing.JScrollPane;
66
import javax.swing.JTable;
75
import javax.swing.JTable;
67
import javax.swing.SwingWorker;
76
import javax.swing.SwingWorker;
-
 
77
import javax.swing.table.DefaultTableCellRenderer;
68
 
78
 
69
import org.apache.commons.dbutils.handlers.ArrayListHandler;
79
import org.apache.commons.dbutils.handlers.ArrayListHandler;
70
 
80
 
71
public class CommandeSQLElement extends ComptaSQLConfElement {
81
public class CommandeSQLElement extends ComptaSQLConfElement {
72
 
82
 
Line 77... Line 87...
77
            PredicateRowAction actionAttachment = new PredicateRowAction(new AttachmentAction().getAction(), true);
87
            PredicateRowAction actionAttachment = new PredicateRowAction(new AttachmentAction().getAction(), true);
78
            actionAttachment.setPredicate(IListeEvent.getSingleSelectionPredicate());
88
            actionAttachment.setPredicate(IListeEvent.getSingleSelectionPredicate());
79
            getRowActions().add(actionAttachment);
89
            getRowActions().add(actionAttachment);
80
        }
90
        }
81
 
91
 
-
 
92
        for (final EtatCommandeFournisseur etat : EtatCommandeFournisseur.values()) {
-
 
93
 
-
 
94
            PredicateRowAction action = new PredicateRowAction(new AbstractAction(etat.getTranslation()) {
-
 
95
 
-
 
96
                @Override
-
 
97
                public void actionPerformed(ActionEvent e) {
-
 
98
                    changeStateOfRows(IListe.get(e).getSelectedRows(), etat);
-
 
99
                }
-
 
100
            }, false);
-
 
101
            action.setPredicate(IListeEvent.getNonEmptySelectionPredicate());
-
 
102
            action.setPath(Arrays.asList("Etat", "Etat", "Etat"));
-
 
103
            getRowActions().add(action);
-
 
104
        }
-
 
105
 
82
        getRowActions().addAll(new MouseSheetXmlListeListener(this, CommandeXmlSheet.class).getRowActions());
106
        getRowActions().addAll(new MouseSheetXmlListeListener(this, CommandeXmlSheet.class).getRowActions());
83
 
107
 
84
        // Transfert vers BR
108
        // Transfert vers BR
85
        PredicateRowAction bonAction = new PredicateRowAction(new AbstractAction() {
109
        PredicateRowAction bonAction = new PredicateRowAction(new AbstractAction() {
86
            public void actionPerformed(ActionEvent e) {
110
            public void actionPerformed(ActionEvent e) {
Line 205... Line 229...
205
        l.add("T_TTC");
229
        l.add("T_TTC");
206
        Boolean useCommandeEnCours = SQLPreferences.getMemCached(getTable().getDBRoot()).getBoolean(GestionCommercialeGlobalPreferencePanel.COMMANDE_FOURNISSEUR_EN_COURS, false);
230
        Boolean useCommandeEnCours = SQLPreferences.getMemCached(getTable().getDBRoot()).getBoolean(GestionCommercialeGlobalPreferencePanel.COMMANDE_FOURNISSEUR_EN_COURS, false);
207
        if (useCommandeEnCours) {
231
        if (useCommandeEnCours) {
208
            l.add("EN_COURS");
232
            l.add("EN_COURS");
209
        }
233
        }
-
 
234
        l.add("ETAT_COMMANDE");
210
        l.add("INFOS");
235
        l.add("INFOS");
211
        return l;
236
        return l;
212
    }
237
    }
213
 
238
 
214
    @Override
239
    @Override
Line 218... Line 243...
218
        l.add("NOM");
243
        l.add("NOM");
219
        l.add("DATE");
244
        l.add("DATE");
220
        return l;
245
        return l;
221
    }
246
    }
222
 
247
 
-
 
248
    @Override
-
 
249
    protected void _initTableSource(SQLTableModelSource res) {
-
 
250
        // TODO Auto-generated method stub
-
 
251
        super._initTableSource(res);
-
 
252
        SQLTableModelColumn col = res.getColumn(getTable().getField("ETAT_COMMANDE"));
-
 
253
        if (col != null) {
-
 
254
            col.setRenderer(new EtatCommandeRenderer());
-
 
255
 
-
 
256
        }
-
 
257
 
-
 
258
    }
-
 
259
 
223
    /*
260
    /*
224
     * (non-Javadoc)
261
     * (non-Javadoc)
225
     * 
262
     * 
226
     * @see org.openconcerto.devis.SQLElement#getComponent()
263
     * @see org.openconcerto.devis.SQLElement#getComponent()
227
     */
264
     */
Line 288... Line 325...
288
        comp.loadCommande(commandeID);
325
        comp.loadCommande(commandeID);
289
 
326
 
290
        editFactureFrame.pack();
327
        editFactureFrame.pack();
291
        editFactureFrame.setState(JFrame.NORMAL);
328
        editFactureFrame.setState(JFrame.NORMAL);
292
        editFactureFrame.setVisible(true);
329
        editFactureFrame.setVisible(true);
-
 
330
        editFactureFrame.addEditPanelListener(new EditPanelListener() {
-
 
331
 
-
 
332
            @Override
-
 
333
            public void modified() {
-
 
334
 
-
 
335
            }
-
 
336
 
-
 
337
            @Override
-
 
338
            public void inserted(int id) {
-
 
339
                try {
-
 
340
                    SQLRowValues rowValsTR = new SQLRowValues(getTable().getTable("TR_COMMANDE"));
-
 
341
                    rowValsTR.put("ID_COMMANDE", commandeID);
-
 
342
                    rowValsTR.put("ID_SAISIE_ACHAT", id);
-
 
343
                    rowValsTR.commit();
-
 
344
                } catch (SQLException e) {
-
 
345
                    ExceptionHandler.handle("Erreur lors de l'insertion de la ligne de transfert", e);
-
 
346
                }
-
 
347
            }
-
 
348
 
-
 
349
            @Override
-
 
350
            public void deleted() {
-
 
351
            }
-
 
352
 
-
 
353
            @Override
-
 
354
            public void cancelled() {
-
 
355
            }
-
 
356
        });
293
    }
357
    }
294
 
358
 
295
    public RowAction getCloneAction() {
359
    public RowAction getCloneAction() {
296
        return new RowAction(new AbstractAction() {
360
        return new RowAction(new AbstractAction() {
297
 
361
 
Line 310... Line 374...
310
                return (selection != null && selection.size() == 1);
374
                return (selection != null && selection.size() == 1);
311
            }
375
            }
312
        };
376
        };
313
    }
377
    }
314
 
378
 
-
 
379
    private void changeStateOfRows(List<SQLRowValues> l, EtatCommandeFournisseur etat) {
-
 
380
 
-
 
381
        List<Integer> ids = new ArrayList<Integer>(l.size());
-
 
382
        for (SQLRowValues sqlRowValues : l) {
-
 
383
            ids.add(sqlRowValues.getID());
-
 
384
        }
-
 
385
 
-
 
386
        UpdateBuilder builder = new UpdateBuilder(getTable());
-
 
387
        builder.setObject("ETAT_COMMANDE", etat.getId());
-
 
388
        builder.setWhere(Where.inValues(getTable().getKey(), ids));
-
 
389
 
-
 
390
        getTable().getDBSystemRoot().getDataSource().execute(builder.asString());
-
 
391
        getTable().fireTableModified(-1);
-
 
392
 
-
 
393
        if (etat == EtatCommandeFournisseur.ANNULEE) {
-
 
394
 
-
 
395
            // Suppression des stocks si commande annulée
-
 
396
            SQLElement eltMvtStock = getDirectory().getElement("MOUVEMENT_STOCK");
-
 
397
            SQLSelect sel = new SQLSelect();
-
 
398
            sel.addSelect(eltMvtStock.getTable().getField("ID"));
-
 
399
            Where w = Where.inValues(eltMvtStock.getTable().getField("IDSOURCE"), ids);
-
 
400
            Where w2 = new Where(eltMvtStock.getTable().getField("SOURCE"), "=", getTable().getName());
-
 
401
            sel.setWhere(w.and(w2));
-
 
402
 
-
 
403
            try {
-
 
404
                @SuppressWarnings("rawtypes")
-
 
405
                List res = (List) eltMvtStock.getTable().getBase().getDataSource().execute(sel.asString(), new ArrayListHandler());
-
 
406
                if (res != null) {
-
 
407
                    for (int i = 0; i < res.size(); i++) {
-
 
408
                        Object[] tmp = (Object[]) res.get(i);
-
 
409
                        eltMvtStock.archive(((Number) tmp[0]).intValue());
-
 
410
                    }
-
 
411
                }
-
 
412
 
-
 
413
                final SQLTable tableCmdItem = getTable().getTable("COMMANDE_ELEMENT");
-
 
414
                UpdateBuilder build = new UpdateBuilder(tableCmdItem);
-
 
415
                build.setObject("RECU_FORCED", Boolean.TRUE);
-
 
416
                build.setWhere(Where.inValues(tableCmdItem.getField("ID_COMMANDE"), ids));
-
 
417
                getTable().getDBSystemRoot().getDataSource().execute(build.asString());
-
 
418
 
-
 
419
            } catch (SQLException e) {
-
 
420
                ExceptionHandler.handle("Erreur lors de la suppression des mouvements de stocks", e);
-
 
421
            }
-
 
422
        }
-
 
423
    }
-
 
424
 
315
    @Override
425
    @Override
316
    protected void archive(TreesOfSQLRows trees, boolean cutLinks) throws SQLException {
426
    protected void archive(TreesOfSQLRows trees, boolean cutLinks) throws SQLException {
317
 
427
 
318
        for (SQLRow row : trees.getRows()) {
428
        for (SQLRow row : trees.getRows()) {
319
 
429