OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Rev

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

Rev 73 Rev 93
Line 15... Line 15...
15
 
15
 
16
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement;
16
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement;
17
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement;
17
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement;
18
import org.openconcerto.sql.Configuration;
18
import org.openconcerto.sql.Configuration;
19
import org.openconcerto.sql.model.SQLRow;
19
import org.openconcerto.sql.model.SQLRow;
-
 
20
import org.openconcerto.sql.model.SQLRowListRSH;
-
 
21
import org.openconcerto.sql.model.SQLRowValues;
-
 
22
import org.openconcerto.sql.model.SQLRowValuesListFetcher;
20
import org.openconcerto.sql.model.SQLSelect;
23
import org.openconcerto.sql.model.SQLSelect;
21
import org.openconcerto.sql.model.SQLTable;
24
import org.openconcerto.sql.model.SQLTable;
22
import org.openconcerto.sql.model.Where;
25
import org.openconcerto.sql.model.Where;
23
import org.openconcerto.utils.ExceptionHandler;
26
import org.openconcerto.utils.ExceptionHandler;
24
import org.openconcerto.utils.GestionDevise;
27
import org.openconcerto.utils.GestionDevise;
-
 
28
import org.openconcerto.utils.Tuple2;
25
 
29
 
26
import java.sql.SQLException;
30
import java.sql.SQLException;
-
 
31
import java.util.ArrayList;
27
import java.util.Date;
32
import java.util.Date;
28
import java.util.HashMap;
33
import java.util.HashMap;
29
import java.util.List;
34
import java.util.List;
30
import java.util.Map;
35
import java.util.Map;
31
import java.util.Map.Entry;
36
import java.util.Map.Entry;
Line 43... Line 48...
43
    private static final SQLTable tableSalarie = base.getTable("SALARIE");
48
    private static final SQLTable tableSalarie = base.getTable("SALARIE");
44
    private static final SQLTable tableReglementPaye = base.getTable("REGLEMENT_PAYE");
49
    private static final SQLTable tableReglementPaye = base.getTable("REGLEMENT_PAYE");
45
    private static final SQLTable tablePrefCompte = base.getTable("PREFS_COMPTE");
50
    private static final SQLTable tablePrefCompte = base.getTable("PREFS_COMPTE");
46
    private static final SQLRow rowPrefsCompte = tablePrefCompte.getRow(2);
51
    private static final SQLRow rowPrefsCompte = tablePrefCompte.getRow(2);
47
 
52
 
-
 
53
    private SQLTable tableCaisse = Configuration.getInstance().getBase().getTable("CAISSE_COTISATION");
-
 
54
 
48
    // Journal OD
55
    // Journal OD
49
    private static final Integer journalOD = Integer.valueOf(JournalSQLElement.OD);
56
    private static final Integer journalOD = Integer.valueOf(JournalSQLElement.OD);
50
 
57
 
51
    private Map<String, SQLTable> mapTableSource = new HashMap<String, SQLTable>();
58
    private Map<String, SQLTable> mapTableSource = new HashMap<String, SQLTable>();
52
 
59
 
53
    public GenerationMvtFichePaye(int[] idFichePaye, String mois, String annee) throws SQLException {
60
    public GenerationMvtFichePaye(int[] idFichePaye, String mois, String annee) throws SQLException {
54
 
61
 
-
 
62
        setRowAnalytiqueSource(null);
55
        SQLTable tableNet = Configuration.getInstance().getBase().getTable("RUBRIQUE_NET");
63
        SQLTable tableNet = Configuration.getInstance().getBase().getTable("RUBRIQUE_NET");
-
 
64
 
56
        SQLTable tableBrut = Configuration.getInstance().getBase().getTable("RUBRIQUE_BRUT");
65
        SQLTable tableBrut = Configuration.getInstance().getBase().getTable("RUBRIQUE_BRUT");
57
        SQLTable tableCotis = Configuration.getInstance().getBase().getTable("RUBRIQUE_COTISATION");
66
        SQLTable tableCotis = Configuration.getInstance().getBase().getTable("RUBRIQUE_COTISATION");
58
        SQLTable tableComm = Configuration.getInstance().getBase().getTable("RUBRIQUE_COMM");
67
        SQLTable tableComm = Configuration.getInstance().getBase().getTable("RUBRIQUE_COMM");
59
        this.mapTableSource.put(tableNet.getName(), tableNet);
68
        this.mapTableSource.put(tableNet.getName(), tableNet);
60
        this.mapTableSource.put(tableBrut.getName(), tableBrut);
69
        this.mapTableSource.put(tableBrut.getName(), tableBrut);
Line 70... Line 79...
70
 
79
 
71
    private void genereComptaFichePaye() throws Exception {
80
    private void genereComptaFichePaye() throws Exception {
72
 
81
 
73
        System.out.println("Génération des ecritures  reglement du mouvement " + this.idMvt);
82
        System.out.println("Génération des ecritures  reglement du mouvement " + this.idMvt);
74
 
83
 
-
 
84
        SQLRowValues rowValsCaisse = new SQLRowValues(tableCaisse);
-
 
85
        rowValsCaisse.put(tableCaisse.getKey().getName(), null);
-
 
86
        rowValsCaisse.put("NUMERO_COMPTE_PCE", null);
-
 
87
        rowValsCaisse.put("NUMERO_COMPTE_PCE_CHARGES", null);
-
 
88
        SQLRowValuesListFetcher fetcher = SQLRowValuesListFetcher.create(rowValsCaisse);
-
 
89
        List<SQLRowValues> result = fetcher.fetch();
-
 
90
 
-
 
91
        Map<Integer, Tuple2<Integer, Integer>> mapCaisse = new HashMap<Integer, Tuple2<Integer, Integer>>(result.size());
-
 
92
        for (SQLRowValues sqlRowValues : result) {
-
 
93
            int idCompte = ComptePCESQLElement.getId(sqlRowValues.getString("NUMERO_COMPTE_PCE"));
-
 
94
            int idCompteCharges = ComptePCESQLElement.getId(sqlRowValues.getString("NUMERO_COMPTE_PCE_CHARGES"));
-
 
95
            mapCaisse.put(sqlRowValues.getID(), Tuple2.create(idCompteCharges, idCompte));
-
 
96
        }
-
 
97
 
75
        // SQLRow rowFiche =
98
        // SQLRow rowFiche =
76
        // Configuration.getInstance().getBase().getTable("FICHE_PAYE").getRow(this.idFichePaye);
99
        // Configuration.getInstance().getBase().getTable("FICHE_PAYE").getRow(this.idFichePaye);
77
        // iniatilisation des valeurs de la map
100
        // iniatilisation des valeurs de la map
78
        this.date = new Date();
101
        this.date = new Date();
79
 
102
 
Line 115... Line 138...
115
                idComptePayeRegl = ComptePCESQLElement.getIdComptePceDefault("PayeReglement");
138
                idComptePayeRegl = ComptePCESQLElement.getIdComptePceDefault("PayeReglement");
116
            }
139
            }
117
            this.mEcritures.put("ID_COMPTE_PCE", Integer.valueOf(idComptePayeRegl));
140
            this.mEcritures.put("ID_COMPTE_PCE", Integer.valueOf(idComptePayeRegl));
118
            this.mEcritures.put("NOM", rowSal.getString("NOM") + " " + this.nom);
141
            this.mEcritures.put("NOM", rowSal.getString("NOM") + " " + this.nom);
119
 
142
 
120
            float sal = rowFiche.getFloat("SAL_BRUT");
143
            float sal = rowFiche.getFloat("NET_A_PAYER");
121
 
144
 
122
            this.mEcritures.put("DEBIT", Long.valueOf(0));
145
            this.mEcritures.put("DEBIT", Long.valueOf(0));
123
            this.mEcritures.put("CREDIT", Long.valueOf(GestionDevise.parseLongCurrency(String.valueOf(sal))));
146
            this.mEcritures.put("CREDIT", Long.valueOf(GestionDevise.parseLongCurrency(String.valueOf(sal))));
124
            ajoutEcriture();
147
            ajoutEcriture();
125
        }
148
        }
Line 160... Line 183...
160
            }
183
            }
161
        }
184
        }
162
 
185
 
163
        // on recupere les élements de la fiche
186
        // on recupere les élements de la fiche
164
        // ensemble des cotisations
187
        // ensemble des cotisations
165
        SQLSelect selAllIDFicheElt = new SQLSelect(base);
188
        SQLSelect selAllFicheElt = new SQLSelect();
166
 
189
 
167
        selAllIDFicheElt.addSelect(tableFichePayeElt.getField("ID"));
190
        selAllFicheElt.addSelectStar(tableFichePayeElt);
168
 
-
 
169
        Where w = null;
191
        List<Integer> idsElt = new ArrayList<Integer>();
170
        for (int i = 0; i < this.idFichePaye.length; i++) {
192
        for (int id : this.idFichePaye) {
171
            if (w == null) {
193
            idsElt.add(id);
172
                w = new Where(tableFichePayeElt.getField("ID_FICHE_PAYE"), "=", this.idFichePaye[i]);
-
 
173
            } else {
-
 
174
                w.and(new Where(tableFichePayeElt.getField("ID_FICHE_PAYE"), "=", this.idFichePaye[i]));
-
 
175
            }
-
 
176
        }
194
        }
-
 
195
        Where w = new Where(tableFichePayeElt.getField("ID_FICHE_PAYE"), idsElt);
-
 
196
        w = w.and(new Where(tableFichePayeElt.getField("SOURCE"), "=", "RUBRIQUE_COTISATION"));
177
 
197
 
178
        selAllIDFicheElt.setWhere(w);
198
        selAllFicheElt.setWhere(w);
179
 
-
 
180
        selAllIDFicheElt.setDistinct(true);
-
 
181
 
-
 
182
        String reqAllIDFichelElt = selAllIDFicheElt.asString();
-
 
183
 
199
 
184
        System.err.println("Request " + reqAllIDFichelElt);
200
        List<SQLRow> resultElt = SQLRowListRSH.execute(selAllFicheElt);
185
 
-
 
186
        Object[] objIDFicheElt = ((List) base.getDataSource().execute(reqAllIDFichelElt, new ArrayListHandler())).toArray();
-
 
187
 
-
 
188
        System.err.println(objIDFicheElt.length + " elements to load");
-
 
189
 
201
 
190
        Map<Integer, Long> mapCompteDebSal = new HashMap<Integer, Long>();
202
        Map<Integer, Long> mapCompteDebSal = new HashMap<Integer, Long>();
191
        Map<Integer, Long> mapCompteDebPat = new HashMap<Integer, Long>();
203
        Map<Integer, Long> mapCompteDebPat = new HashMap<Integer, Long>();
192
        Map<Integer, Long> mapCompteCredSal = new HashMap<Integer, Long>();
204
        Map<Integer, Long> mapCompteCredSal = new HashMap<Integer, Long>();
193
        Map<Integer, Long> mapCompteCredPat = new HashMap<Integer, Long>();
205
        Map<Integer, Long> mapCompteCredPat = new HashMap<Integer, Long>();
194
 
206
 
195
        for (int i = 0; i < objIDFicheElt.length; i++) {
207
        for (SQLRow row : resultElt) {
196
            SQLRow row = tableFichePayeElt.getRow(Integer.parseInt(((Object[]) objIDFicheElt[i])[0].toString()));
-
 
197
 
208
 
198
            String source = row.getString("SOURCE");
209
            String source = row.getString("SOURCE");
199
            int idSource = row.getInt("IDSOURCE");
210
            int idSource = row.getInt("IDSOURCE");
200
 
211
 
201
            if (source.trim().length() != 0) {
-
 
202
 
-
 
203
                System.err.println("Source != null");
-
 
204
 
-
 
205
                if (this.mapTableSource.get(source) != null) {
-
 
206
                    SQLRow rowSource = this.mapTableSource.get(source).getRow(idSource);
212
            SQLRow rowSource = this.mapTableSource.get(source).getRow(idSource);
207
 
213
 
208
                    if (rowSource.getTable().getName().equalsIgnoreCase("RUBRIQUE_COTISATION")) {
214
            int idCaisse = rowSource.getInt("ID_CAISSE_COTISATION");
-
 
215
 
-
 
216
            Tuple2<Integer, Integer> t = mapCaisse.get(idCaisse);
209
                        // on recupere les comptes tiers et charge de la caisse associée
217
            // on recupere les comptes tiers et charge de la caisse associée
210
                        int idCompteCharge = ComptePCESQLElement.getId("645");
218
            int idCompteCharge = (t == null ? ComptePCESQLElement.getId("645") : t.get0());
211
                        // }
219
            // }
212
 
220
 
213
                        // int idCompteTiers = rowCaisse.getInt("ID_COMPTE_PCE_TIERS");
221
            // int idCompteTiers = rowCaisse.getInt("ID_COMPTE_PCE_TIERS");
214
                        // if (idCompteTiers <= 1) {
222
            // if (idCompteTiers <= 1) {
-
 
223
            int idCompteTiers = (t == null ? ComptePCESQLElement.getId("437") : t.get1());
215
                        int idCompteTiers = ComptePCESQLElement.getId("437");
224
            // int idCompteTiers = ComptePCESQLElement.getId("437");
216
                        // }
225
            // }
217
 
226
 
218
                        // Cotisations sal.
227
            // Cotisations sal.
219
                        if (row.getFloat("MONTANT_SAL_DED") != 0) {
228
            if (row.getObject("MONTANT_SAL_DED") != null && row.getFloat("MONTANT_SAL_DED") != 0) {
220
 
229
 
221
                            Object montantCredObj = mapCompteCredSal.get(Integer.valueOf(idCompteTiers));
230
                Object montantCredObj = mapCompteCredSal.get(Integer.valueOf(idCompteTiers));
222
                            long montantCred = (montantCredObj == null) ? 0 : ((Long) montantCredObj).longValue();
231
                long montantCred = (montantCredObj == null) ? 0 : ((Long) montantCredObj).longValue();
223
                            montantCred += GestionDevise.parseLongCurrency(row.getObject("MONTANT_SAL_DED").toString());
232
                montantCred += GestionDevise.parseLongCurrency(row.getObject("MONTANT_SAL_DED").toString());
224
                            mapCompteCredSal.put(Integer.valueOf(idCompteTiers), Long.valueOf(montantCred));
233
                mapCompteCredSal.put(Integer.valueOf(idCompteTiers), Long.valueOf(montantCred));
225
 
234
 
-
 
235
                // Object montantDebObj =
226
                            Object montantDebObj = mapCompteDebSal.get(Integer.valueOf(ComptePCESQLElement.getId("421")));
236
                // mapCompteDebSal.get(Integer.valueOf(ComptePCESQLElement.getId("421")));
227
                            long montantDeb = (montantDebObj == null) ? 0 : ((Long) montantDebObj).longValue();
237
                // long montantDeb = (montantDebObj == null) ? 0 : ((Long)
-
 
238
                // montantDebObj).longValue();
-
 
239
                // montantDeb +=
228
                            montantDeb += GestionDevise.parseLongCurrency(row.getObject("MONTANT_SAL_DED").toString());
240
                // GestionDevise.parseLongCurrency(row.getObject("MONTANT_SAL_DED").toString());
229
                            mapCompteDebSal.put(Integer.valueOf(ComptePCESQLElement.getId("421")), Long.valueOf(montantDeb));
241
                // mapCompteDebSal.put(Integer.valueOf(ComptePCESQLElement.getId("421")),
-
 
242
                // Long.valueOf(montantDeb));
230
                        }
243
            }
231
 
244
 
232
                        // Cotisation pat.
245
            // Cotisation pat.
233
                        if (row.getFloat("MONTANT_PAT") != 0) {
246
            if (row.getObject("MONTANT_PAT") != null && row.getFloat("MONTANT_PAT") != 0) {
234
 
247
 
235
                            Object montantDebObj = mapCompteDebPat.get(Integer.valueOf(idCompteCharge));
248
                Object montantDebObj = mapCompteDebPat.get(Integer.valueOf(idCompteCharge));
236
                            long montantDeb = (montantDebObj == null) ? 0 : ((Long) montantDebObj).longValue();
249
                long montantDeb = (montantDebObj == null) ? 0 : ((Long) montantDebObj).longValue();
237
                            montantDeb += GestionDevise.parseLongCurrency(row.getObject("MONTANT_PAT").toString());
250
                montantDeb += GestionDevise.parseLongCurrency(row.getObject("MONTANT_PAT").toString());
238
                            mapCompteDebPat.put(Integer.valueOf(idCompteCharge), Long.valueOf(montantDeb));
251
                mapCompteDebPat.put(Integer.valueOf(idCompteCharge), Long.valueOf(montantDeb));
Line 241... Line 254...
241
                            long montantCred = (montantCredObj == null) ? 0 : ((Long) montantCredObj).longValue();
254
                long montantCred = (montantCredObj == null) ? 0 : ((Long) montantCredObj).longValue();
242
                            montantCred += GestionDevise.parseLongCurrency(row.getObject("MONTANT_PAT").toString());
255
                montantCred += GestionDevise.parseLongCurrency(row.getObject("MONTANT_PAT").toString());
243
                            mapCompteCredPat.put(Integer.valueOf(idCompteTiers), Long.valueOf(montantCred));
256
                mapCompteCredPat.put(Integer.valueOf(idCompteTiers), Long.valueOf(montantCred));
244
 
257
 
245
                        }
258
            }
246
                    }
-
 
247
 
-
 
248
                } else {
-
 
249
                    System.err.println("Table " + source + " non référencée");
-
 
250
                }
-
 
251
            }
-
 
252
 
259
 
253
        }
260
        }
254
 
261
 
255
        // enregistrement des ecritures pour les cotisations salariales et patronales
262
        // enregistrement des ecritures pour les cotisations salariales et patronales
256
        for (Entry<Integer, Long> entry : mapCompteCredSal.entrySet()) {
263
        for (Entry<Integer, Long> entry : mapCompteCredSal.entrySet()) {