OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

Rev 144 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 144 Rev 156
Line 12... Line 12...
12
 */
12
 */
13
 
13
 
14
 package org.openconcerto.erp.core.humanresources.payroll.element;
14
 package org.openconcerto.erp.core.humanresources.payroll.element;
15
 
15
 
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
16
import org.openconcerto.erp.config.ComptaPropsConfiguration;
-
 
17
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
17
import org.openconcerto.erp.core.common.ui.SQLJavaEditor;
18
import org.openconcerto.erp.core.common.ui.SQLJavaEditor;
18
import org.openconcerto.erp.core.humanresources.payroll.component.FormuleTreeNode;
19
import org.openconcerto.erp.core.humanresources.payroll.component.FormuleTreeNode;
19
import org.openconcerto.erp.core.humanresources.payroll.component.VariableRowTreeNode;
20
import org.openconcerto.erp.core.humanresources.payroll.component.VariableRowTreeNode;
20
import org.openconcerto.erp.core.humanresources.payroll.component.VariableTree;
21
import org.openconcerto.erp.core.humanresources.payroll.component.VariableTree;
21
import org.openconcerto.sql.Configuration;
22
import org.openconcerto.sql.Configuration;
22
import org.openconcerto.sql.element.BaseSQLComponent;
23
import org.openconcerto.sql.element.BaseSQLComponent;
23
import org.openconcerto.sql.element.ConfSQLElement;
-
 
24
import org.openconcerto.sql.element.SQLComponent;
24
import org.openconcerto.sql.element.SQLComponent;
25
import org.openconcerto.sql.element.TreesOfSQLRows;
25
import org.openconcerto.sql.element.TreesOfSQLRows;
-
 
26
import org.openconcerto.sql.model.DBRoot;
26
import org.openconcerto.sql.model.SQLBase;
27
import org.openconcerto.sql.model.SQLBase;
27
import org.openconcerto.sql.model.SQLField;
28
import org.openconcerto.sql.model.SQLField;
28
import org.openconcerto.sql.model.SQLRow;
29
import org.openconcerto.sql.model.SQLRow;
29
import org.openconcerto.sql.model.SQLRowAccessor;
30
import org.openconcerto.sql.model.SQLRowAccessor;
30
import org.openconcerto.sql.model.SQLSelect;
31
import org.openconcerto.sql.model.SQLSelect;
Line 47... Line 48...
47
import java.awt.event.ActionListener;
48
import java.awt.event.ActionListener;
48
import java.awt.event.MouseAdapter;
49
import java.awt.event.MouseAdapter;
49
import java.awt.event.MouseEvent;
50
import java.awt.event.MouseEvent;
50
import java.beans.PropertyChangeEvent;
51
import java.beans.PropertyChangeEvent;
51
import java.beans.PropertyChangeListener;
52
import java.beans.PropertyChangeListener;
52
import java.math.BigDecimal;
-
 
53
import java.sql.SQLException;
53
import java.sql.SQLException;
54
import java.util.ArrayList;
54
import java.util.ArrayList;
-
 
55
import java.util.Arrays;
55
import java.util.HashMap;
56
import java.util.HashMap;
56
import java.util.HashSet;
57
import java.util.HashSet;
57
import java.util.List;
58
import java.util.List;
58
import java.util.Map;
59
import java.util.Map;
59
import java.util.Set;
60
import java.util.Set;
60
 
61
 
61
import javax.swing.AbstractAction;
62
import javax.swing.AbstractAction;
62
import javax.swing.ButtonGroup;
63
import javax.swing.ButtonGroup;
63
import javax.swing.JLabel;
64
import javax.swing.JLabel;
-
 
65
import javax.swing.JOptionPane;
64
import javax.swing.JPanel;
66
import javax.swing.JPanel;
65
import javax.swing.JPopupMenu;
67
import javax.swing.JPopupMenu;
66
import javax.swing.JRadioButton;
68
import javax.swing.JRadioButton;
67
import javax.swing.JScrollPane;
69
import javax.swing.JScrollPane;
68
import javax.swing.JSplitPane;
70
import javax.swing.JSplitPane;
Line 72... Line 74...
72
 
74
 
73
import org.apache.commons.dbutils.handlers.ArrayListHandler;
75
import org.apache.commons.dbutils.handlers.ArrayListHandler;
74
import org.jedit.CTokenMarker;
76
import org.jedit.CTokenMarker;
75
 
77
 
76
// FIXME retirer le scrolling de l'edit frame pour scroller uniquement sur l'arbre des variables
78
// FIXME retirer le scrolling de l'edit frame pour scroller uniquement sur l'arbre des variables
77
public class VariablePayeSQLElement extends ConfSQLElement {
79
public class VariablePayeSQLElement extends ComptaSQLConfElement {
78
 
80
 
79
    private final static ValidState VAR_ALREADY_EXIST = ValidState.createInvalid("Cette variable existe déjà !");
81
    private final static ValidState VAR_ALREADY_EXIST = ValidState.createInvalid("Cette variable existe déjà !");
80
    private final static ValidState VAR_NAME_NOT_CORRECT = ValidState.createInvalid("Nom de variable incorrect !");
82
    private final static ValidState VAR_NAME_NOT_CORRECT = ValidState.createInvalid("Nom de variable incorrect !");
81
    private final static ValidState VAR_NO_NAME = ValidState.createInvalid("Aucun nom attribué !");
83
    private final static ValidState VAR_NO_NAME = ValidState.createInvalid("Aucun nom attribué !");
82
 
84
 
Line 86... Line 88...
86
        if (tableVarSal == null)
88
        if (tableVarSal == null)
87
            tableVarSal = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete().getTable("VARIABLE_SALARIE");
89
            tableVarSal = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete().getTable("VARIABLE_SALARIE");
88
        return tableVarSal;
90
        return tableVarSal;
89
    }
91
    }
90
 
92
 
91
    public VariablePayeSQLElement() {
93
    public VariablePayeSQLElement(final DBRoot root) {
92
        super("VARIABLE_PAYE", "une variable de paye", "variables de paye");
94
        super(root.getTable("VARIABLE_PAYE"), "une variable de paye", "variables de paye");
93
    }
95
    }
94
 
96
 
95
    protected List<String> getListFields() {
97
    protected List<String> getListFields() {
96
        final List<String> l = new ArrayList<String>();
98
        final List<String> l = new ArrayList<String>();
97
        l.add("NOM");
99
        l.add("NOM");
Line 196... Line 198...
196
        SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete();
198
        SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete();
197
        SQLBase baseCommon = Configuration.getInstance().getBase();
199
        SQLBase baseCommon = Configuration.getInstance().getBase();
198
        SQLTable tableVar = baseCommon.getTable("VARIABLE_PAYE");
200
        SQLTable tableVar = baseCommon.getTable("VARIABLE_PAYE");
199
        SQLTable tableCumulsConges = base.getTable("CUMULS_CONGES");
201
        SQLTable tableCumulsConges = base.getTable("CUMULS_CONGES");
200
        SQLTable tableCumulsPaye = base.getTable("CUMULS_PAYE");
202
        SQLTable tableCumulsPaye = base.getTable("CUMULS_PAYE");
-
 
203
        SQLTable tablePAS = base.getTable("PAS");
201
 
204
 
202
        Map<String, List<?>> mapTree = new HashMap<String, List<?>>();
205
        Map<String, List<?>> mapTree = new HashMap<String, List<?>>();
203
 
206
 
204
        // Variables propre au salarié
207
        // Variables propre au salarié
205
        List<SQLField> varSal = new ArrayList<SQLField>();
208
        List<SQLField> varSal = new ArrayList<SQLField>();
Line 216... Line 219...
216
        for (SQLField field : tableCumulsPaye.getContentFields()) {
219
        for (SQLField field : tableCumulsPaye.getContentFields()) {
217
 
220
 
218
            varSal.add(field);
221
            varSal.add(field);
219
        }
222
        }
220
 
223
 
-
 
224
        for (SQLField field : tablePAS.getContentFields()) {
-
 
225
 
-
 
226
            varSal.add(field);
-
 
227
        }
-
 
228
 
221
        mapTree.put("Infos période", varSal);
229
        mapTree.put("Infos période", varSal);
222
 
230
 
223
        List<SQLField> l = new ArrayList<SQLField>();
231
        List<SQLField> l = new ArrayList<SQLField>();
224
        SQLTable tableInfos = base.getTable("INFOS_SALARIE_PAYE");
232
        SQLTable tableInfos = base.getTable("INFOS_SALARIE_PAYE");
225
        l.add(tableInfos.getField("DUREE_HEBDO"));
233
        l.add(tableInfos.getField("DUREE_HEBDO"));
Line 662... Line 670...
662
    }
670
    }
663
 
671
 
664
    // Archive la variable si elle n'est pas utilisé dans une formule
672
    // Archive la variable si elle n'est pas utilisé dans une formule
665
    private void secureArchiveVariable(SQLRow row, boolean cutLinks) throws SQLException {
673
    private void secureArchiveVariable(SQLRow row, boolean cutLinks) throws SQLException {
666
 
674
 
667
        // FIXME verifier que la variable n'est pas utilisée dans une rubrique
-
 
668
        if (row != null) {
675
        if (row != null) {
-
 
676
            // Test si la variable n'est pas utilisée dans une autre variable
669
            SQLSelect sel = new SQLSelect();
677
            SQLSelect selCheckVar = new SQLSelect();
670
            sel.addSelect(getTable().getField("ID"));
678
            selCheckVar.addSelect(getTable().getField("ID"));
671
            System.err.println("Check variable");
679
            final String patternMatching = "%" + row.getString("NOM") + "%";
672
            sel.setWhere(new Where(getTable().getField("FORMULE"), "LIKE", "%" + row.getString("NOM") + "%"));
680
            selCheckVar.setWhere(new Where(getTable().getField("FORMULE"), "LIKE", patternMatching));
673
            sel.andWhere(new Where(getTable().getField("ID"), "!=", row.getID()));
681
            selCheckVar.andWhere(new Where(getTable().getField("ID"), "!=", row.getID()));
674
 
-
 
675
            String req = sel.asString();
682
            String reqCheckVar = selCheckVar.asString();
676
            List l = (List) getTable().getBase().getDataSource().execute(req, new ArrayListHandler());
683
            List<Object> l = getTable().getBase().getDataSource().executeA(reqCheckVar);
677
            if (l.size() == 0) {
684
            if (l.isEmpty()) {
-
 
685
                l = checkVariableInRubrique(patternMatching, "RUBRIQUE_BRUT", Arrays.asList("BASE", "TAUX", "MONTANT"));
-
 
686
                if (l.isEmpty()) {
-
 
687
                    l = checkVariableInRubrique(patternMatching, "RUBRIQUE_COTISATION", Arrays.asList("BASE", "TX_SAL", "TX_PAT"));
-
 
688
                    if (l.isEmpty()) {
-
 
689
                        l = checkVariableInRubrique(patternMatching, "RUBRIQUE_NET", Arrays.asList("BASE", "TAUX", "MONTANT"));
-
 
690
                        if (l.isEmpty()) {
678
                super.archive(new TreesOfSQLRows(this, row), true);
691
                            super.archive(new TreesOfSQLRows(this, row), true);
679
            } else {
692
                        } else {
-
 
693
                            JOptionPane.showMessageDialog(null, "Suppression impossible, cette variable est référencée dans une rubrique de net!");
-
 
694
                        }
-
 
695
 
-
 
696
                    } else {
-
 
697
                        JOptionPane.showMessageDialog(null, "Suppression impossible, cette variable est référencée dans une rubrique de cotisation!");
-
 
698
                    }
-
 
699
 
-
 
700
                } else {
680
                System.err.println("Suppression impossible, cette variable est référencée par une autre.");
701
                    JOptionPane.showMessageDialog(null, "Suppression impossible, cette variable est référencée dans une rubrique de brut!");
-
 
702
                }
-
 
703
            } else {
681
                ExceptionHandler.handle("Suppression impossible, cette variable est référencée par une autre.");
704
                JOptionPane.showMessageDialog(null, "Suppression impossible, cette variable est référencée par une autre.");
682
            }
705
            }
683
 
706
 
684
        } else {
707
        } else {
685
            super.archive(new TreesOfSQLRows(this, row), true);
708
            super.archive(new TreesOfSQLRows(this, row), true);
686
        }
709
        }
687
    }
710
    }
688
 
711
 
-
 
712
    private List checkVariableInRubrique(final String patternMatching, final String tableRub, List<String> fieldsToCheck) {
-
 
713
 
-
 
714
        SQLSelect selBrut = new SQLSelect();
-
 
715
        final SQLTable tableRubBrut = getTable().getDBRoot().findTable(tableRub);
-
 
716
        selBrut.addSelect(tableRubBrut.getField("ID"));
-
 
717
        for (String fieldToCheck : fieldsToCheck) {
-
 
718
            selBrut.setWhere(new Where(tableRubBrut.getField(fieldToCheck), "LIKE", patternMatching));
-
 
719
        }
-
 
720
 
-
 
721
        String reqCheckBrut = selBrut.asString();
-
 
722
        return getTable().getBase().getDataSource().executeA(reqCheckBrut);
-
 
723
 
-
 
724
    }
-
 
725
 
689
    @Override
726
    @Override
690
    protected String createCode() {
727
    protected String createCode() {
691
        return "humanresources.payroll.payment.variable";
728
        return "humanresources.payroll.payment.variable";
692
    }
729
    }
693
}
730
}