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 |
}
|