Line 18... |
Line 18... |
18 |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement;
|
18 |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement;
|
19 |
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement;
|
19 |
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement;
|
20 |
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement;
|
20 |
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement;
|
21 |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement;
|
21 |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement;
|
22 |
import org.openconcerto.erp.core.finance.payment.element.ModeDeReglementSQLElement;
|
22 |
import org.openconcerto.erp.core.finance.payment.element.ModeDeReglementSQLElement;
|
- |
|
23 |
import org.openconcerto.erp.core.finance.payment.element.SEPAMandateSQLElement;
|
23 |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement;
|
24 |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement;
|
24 |
import org.openconcerto.erp.model.PrixTTC;
|
25 |
import org.openconcerto.erp.model.PrixTTC;
|
25 |
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel;
|
26 |
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel;
|
26 |
import org.openconcerto.sql.Configuration;
|
27 |
import org.openconcerto.sql.Configuration;
|
27 |
import org.openconcerto.sql.element.SQLElement;
|
28 |
import org.openconcerto.sql.element.SQLElement;
|
Line 51... |
Line 52... |
51 |
private static final SQLTable tablePrefCompte = base.getTable("PREFS_COMPTE");
|
52 |
private static final SQLTable tablePrefCompte = base.getTable("PREFS_COMPTE");
|
52 |
private static final SQLRow rowPrefsCompte = tablePrefCompte.getRow(2);
|
53 |
private static final SQLRow rowPrefsCompte = tablePrefCompte.getRow(2);
|
53 |
|
54 |
|
54 |
public SQLRow ecrClient = null;
|
55 |
public SQLRow ecrClient = null;
|
55 |
|
56 |
|
56 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource) throws Exception {
|
57 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource) throws SQLException {
|
57 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, true);
|
58 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, true);
|
58 |
}
|
59 |
}
|
59 |
|
60 |
|
60 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse) throws Exception {
|
61 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse) throws SQLException {
|
61 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, false);
|
62 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, false);
|
62 |
}
|
63 |
}
|
63 |
|
64 |
|
64 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance)
|
65 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance)
|
65 |
throws Exception {
|
66 |
throws SQLException {
|
66 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, avance, rowClient.getString("NOM"), null);
|
67 |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, avance, rowClient.getString("NOM"), null);
|
67 |
}
|
68 |
}
|
68 |
|
69 |
|
69 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance, String tiers,
|
70 |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance, String tiers,
|
70 |
SQLRowAccessor cptTiers) throws Exception {
|
71 |
SQLRowAccessor cptTiers) throws SQLException {
|
71 |
|
72 |
|
72 |
SQLRow typeRegRow = modeReglement.getForeignRow("ID_TYPE_REGLEMENT");
|
73 |
SQLRow typeRegRow = modeReglement.getForeignRow("ID_TYPE_REGLEMENT");
|
73 |
setRowAnalytiqueSource(source);
|
74 |
setRowAnalytiqueSource(source);
|
74 |
// iniatilisation des valeurs de la map
|
75 |
// iniatilisation des valeurs de la map
|
75 |
this.date = d;
|
76 |
this.date = d;
|
Line 153... |
Line 154... |
153 |
|
154 |
|
154 |
Date dateTmp = this.date;
|
155 |
Date dateTmp = this.date;
|
155 |
if (modeReglement.getObject("DATE") != null) {
|
156 |
if (modeReglement.getObject("DATE") != null) {
|
156 |
dateTmp = modeReglement.getDate("DATE").getTime();
|
157 |
dateTmp = modeReglement.getDate("DATE").getTime();
|
157 |
}
|
158 |
}
|
158 |
// On fixe la date du règlement de la facture
|
159 |
// On fixe la date du règlement de la facture à reception du cheque
|
159 |
setDateReglement(source, dateTmp);
|
160 |
setDateReglement(source, this.date);
|
160 |
|
161 |
|
161 |
Calendar c = modeReglement.getDate("DATE_DEPOT");
|
162 |
Calendar c = modeReglement.getDate("DATE_DEPOT");
|
162 |
if (c != null) {
|
163 |
if (c != null) {
|
163 |
paiementCheque(c.getTime(), source, ttc, rowClient, modeReglement, mvtSource.getTable().getRow(idMvt), avance, tiers, cptTiers);
|
164 |
paiementCheque(c.getTime(), source, ttc, rowClient, modeReglement, mvtSource.getTable().getRow(idMvt), avance, tiers, cptTiers);
|
164 |
} else {
|
165 |
} else {
|
Line 180... |
Line 181... |
180 |
}
|
181 |
}
|
181 |
if (typeRegRow.getID() == TypeReglementSQLElement.ESPECE) {
|
182 |
if (typeRegRow.getID() == TypeReglementSQLElement.ESPECE) {
|
182 |
this.putValue("ID_JOURNAL", JournalSQLElement.CAISSES);
|
183 |
this.putValue("ID_JOURNAL", JournalSQLElement.CAISSES);
|
183 |
}
|
184 |
}
|
184 |
|
185 |
|
- |
|
186 |
if (typeRegRow.getID() == TypeReglementSQLElement.CB && this.rowPrefsCompte.getTable().contains("ID_JOURNAL_CB_ATTENTE")
|
- |
|
187 |
&& !this.rowPrefsCompte.isForeignEmpty("ID_JOURNAL_CB_ATTENTE")) {
|
- |
|
188 |
this.putValue("ID_JOURNAL", this.rowPrefsCompte.getForeignID("ID_JOURNAL_CB_ATTENTE"));
|
- |
|
189 |
}
|
- |
|
190 |
|
185 |
int idCompteClient = cptTiers != null && !cptTiers.isUndefined() ? cptTiers.getID() : rowClient.getInt("ID_COMPTE_PCE");
|
191 |
int idCompteClient = cptTiers != null && !cptTiers.isUndefined() ? cptTiers.getID() : rowClient.getInt("ID_COMPTE_PCE");
|
186 |
if (avance) {
|
192 |
if (avance) {
|
187 |
idCompteClient = rowPrefsCompte.getInt("ID_COMPTE_PCE_AVANCE_CLIENT");
|
193 |
idCompteClient = rowPrefsCompte.getInt("ID_COMPTE_PCE_AVANCE_CLIENT");
|
188 |
if (idCompteClient <= 1) {
|
194 |
if (idCompteClient <= 1) {
|
189 |
idCompteClient = ComptePCESQLElement.getIdComptePceDefault("AvanceClients");
|
195 |
idCompteClient = ComptePCESQLElement.getIdComptePceDefault("AvanceClients");
|
Line 212... |
Line 218... |
212 |
idCompteRegl = ComptePCESQLElement.getIdComptePceDefault("VenteEspece");
|
218 |
idCompteRegl = ComptePCESQLElement.getIdComptePceDefault("VenteEspece");
|
213 |
}
|
219 |
}
|
214 |
|
220 |
|
215 |
this.putValue("ID_COMPTE_PCE", Integer.valueOf(idCompteRegl));
|
221 |
this.putValue("ID_COMPTE_PCE", Integer.valueOf(idCompteRegl));
|
216 |
} else {
|
222 |
} else {
|
- |
|
223 |
try {
|
217 |
fillCompteBanqueFromRow(modeReglement, "VenteCB", false);
|
224 |
fillCompteBanqueFromRow(modeReglement, "VenteCB", false);
|
- |
|
225 |
} catch (Exception e) {
|
- |
|
226 |
throw new SQLException(e);
|
- |
|
227 |
}
|
- |
|
228 |
}
|
- |
|
229 |
if (typeRegRow.getID() == TypeReglementSQLElement.CB && this.rowPrefsCompte.getTable().contains("ID_COMPTE_PCE_CB_ATTENTE")
|
- |
|
230 |
&& !this.rowPrefsCompte.isForeignEmpty("ID_COMPTE_PCE_CB_ATTENTE")) {
|
- |
|
231 |
|
- |
|
232 |
this.putValue("ID_COMPTE_PCE", this.rowPrefsCompte.getForeignID("ID_COMPTE_PCE_CB_ATTENTE"));
|
218 |
}
|
233 |
}
|
- |
|
234 |
|
219 |
this.putValue("DEBIT", Long.valueOf(ttc.getLongValue()));
|
235 |
this.putValue("DEBIT", Long.valueOf(ttc.getLongValue()));
|
220 |
this.putValue("CREDIT", Long.valueOf(0));
|
236 |
this.putValue("CREDIT", Long.valueOf(0));
|
221 |
ajoutEcriture();
|
237 |
ajoutEcriture();
|
222 |
|
238 |
|
223 |
List<Integer> pieceIDs = new ArrayList<Integer>();
|
239 |
List<Integer> pieceIDs = new ArrayList<Integer>();
|
Line 249... |
Line 265... |
249 |
valEcheance.put("TIERS", tiers);
|
265 |
valEcheance.put("TIERS", tiers);
|
250 |
valEcheance.put("ID_COMPTE_PCE_TIERS", cptTiers == null || !cptTiers.isUndefined() ? null : cptTiers.getID());
|
266 |
valEcheance.put("ID_COMPTE_PCE_TIERS", cptTiers == null || !cptTiers.isUndefined() ? null : cptTiers.getID());
|
251 |
if (source.getTable().equals(tableSaisieVenteFacture)) {
|
267 |
if (source.getTable().equals(tableSaisieVenteFacture)) {
|
252 |
valEcheance.put("ID_SAISIE_VENTE_FACTURE", source.getID());
|
268 |
valEcheance.put("ID_SAISIE_VENTE_FACTURE", source.getID());
|
253 |
}
|
269 |
}
|
- |
|
270 |
if (source.getTable().getName().equals(valEcheance.getTable().getName())) {
|
- |
|
271 |
valEcheance.put("ID_SAISIE_VENTE_FACTURE", source.getObject("ID_SAISIE_VENTE_FACTURE"));
|
- |
|
272 |
}
|
- |
|
273 |
if (modeReglement.getForeign("ID_TYPE_REGLEMENT").getBoolean("SEPA")) {
|
- |
|
274 |
final String foreignBanqueFieldName = "ID_" + BanqueSQLElement.TABLENAME;
|
- |
|
275 |
if (valEcheance.getTable().contains(foreignBanqueFieldName))
|
- |
|
276 |
valEcheance.put(foreignBanqueFieldName, modeReglement.getInt(foreignBanqueFieldName));
|
- |
|
277 |
|
- |
|
278 |
valEcheance.put("ETS", modeReglement.getObject("ETS"));
|
- |
|
279 |
|
- |
|
280 |
if (!modeReglement.isForeignEmpty("ID_SEPA_MANDATE")) {
|
- |
|
281 |
valEcheance.put("ID_SEPA_MANDATE", modeReglement.getForeignID("ID_SEPA_MANDATE"));
|
- |
|
282 |
} else if (rowClient != null && !rowClient.isForeignEmpty("ID_SEPA_MANDATE_DEFAULT")) {
|
- |
|
283 |
valEcheance.put("ID_SEPA_MANDATE", rowClient.getForeignID("ID_SEPA_MANDATE_DEFAULT"));
|
- |
|
284 |
} else {
|
- |
|
285 |
SEPAMandateSQLElement mandateElem = ComptaPropsConfiguration.getInstanceCompta().getDirectory().getElement(SEPAMandateSQLElement.class);
|
- |
|
286 |
final String mandateID = mandateElem.generateMandateIdentification("Facturation", '0', true, true);
|
- |
|
287 |
// TODO gestion si pas de client (ex : don ou cotisation association)
|
- |
|
288 |
if (rowClient != null) {
|
- |
|
289 |
final SQLRowValues newVals = mandateElem.createRecurrent(rowClient.getID(), mandateID, source.getDate("DATE").getTime());
|
- |
|
290 |
SQLRow rowMandate = newVals.commit();
|
- |
|
291 |
valEcheance.put("ID_SEPA_MANDATE", rowMandate.getID());
|
- |
|
292 |
rowClient.createEmptyUpdateRow().put("ID_SEPA_MANDATE_DEFAULT", rowMandate.getID()).commit();
|
- |
|
293 |
}
|
- |
|
294 |
}
|
- |
|
295 |
}
|
254 |
|
296 |
|
255 |
// ajout de l'ecriture
|
297 |
// ajout de l'ecriture
|
256 |
SQLRow row = valEcheance.insert();
|
298 |
SQLRow row = valEcheance.insert();
|
257 |
SQLRowValues rowVals = new SQLRowValues(tableMouvement);
|
299 |
SQLRowValues rowVals = new SQLRowValues(tableMouvement);
|
258 |
rowVals.put("IDSOURCE", row.getID());
|
300 |
rowVals.put("IDSOURCE", row.getID());
|
Line 340... |
Line 382... |
340 |
} catch (SQLException e) {
|
382 |
} catch (SQLException e) {
|
341 |
e.printStackTrace();
|
383 |
e.printStackTrace();
|
342 |
}
|
384 |
}
|
343 |
}
|
385 |
}
|
344 |
|
386 |
|
345 |
private void paiementCheque(Date dateEch, SQLRow source, PrixTTC ttc, SQLRow rowClient, SQLRow modeRegl, SQLRow mvtSource, boolean avance, String tiers, SQLRowAccessor cptTiers) throws Exception {
|
387 |
private void paiementCheque(Date dateEch, SQLRow source, PrixTTC ttc, SQLRow rowClient, SQLRow modeRegl, SQLRow mvtSource, boolean avance, String tiers, SQLRowAccessor cptTiers)
|
- |
|
388 |
throws SQLException {
|
346 |
|
389 |
|
347 |
SQLRowValues valCheque = new SQLRowValues(base.getTable("CHEQUE_A_ENCAISSER"));
|
390 |
SQLRowValues valCheque = new SQLRowValues(base.getTable("CHEQUE_A_ENCAISSER"));
|
348 |
SQLPreferences prefs = SQLPreferences.getMemCached(valCheque.getTable().getDBRoot());
|
391 |
SQLPreferences prefs = SQLPreferences.getMemCached(valCheque.getTable().getDBRoot());
|
349 |
boolean createEcr = prefs.getBoolean(GestionCommercialeGlobalPreferencePanel.CREATE_ECR_CHQ, true);
|
392 |
boolean createEcr = prefs.getBoolean(GestionCommercialeGlobalPreferencePanel.CREATE_ECR_CHQ, true);
|
350 |
|
393 |
|