Aggiunta gestione sconto contrattuale

This commit is contained in:
2024-09-11 16:30:32 +02:00
parent 6177cfb56b
commit 665f193692

View File

@@ -742,8 +742,6 @@ public class SalesRules extends QueryRules {
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String columnName = UtilityString.sqlToField(rsmd.getColumnName(i + 1));
Object columnValue = rs.getObject(i + 1);
// 06/09/2019 (FABIO)
//Object valueEntity = DroolsUtil.getFieldValue(entity, "sconto8");
Object valueEntity = DroolsUtil.getFieldValue(entity, columnName);
if (valueEntity == null) {
//if ("percSco4".equals(columnName)){
@@ -774,13 +772,61 @@ public class SalesRules extends QueryRules {
rs.close();
ps.close();
// Se si tratta di un fornitore in TD gli sconti vengono azzerati, ma viene comunque lasciato il codice promozione eventualmente associato
/* if ("S".equals(flagTD)){
campi.put("sconto5", BigDecimal.ZERO);
campi.put("sconto6", BigDecimal.ZERO);
campi.put("sconto7", BigDecimal.ZERO);
campi.put("sconto8", BigDecimal.ZERO);
}*/
// Verifica presenza sconto contrattuali, in tal caso lo sconto viene inserito
// // nell'ultimo sconto di riga e se presente un'altro sconto viene cumulato
query =
"select TOP 1 vtb_promo_sconti.perc_sco1 as sconto5, " +
"vtb_promo_sconti.perc_sco2 as sconto6, " +
"vtb_promo_sconti.perc_sco3 as sconto7 " +
" from vtb_promo, " +
" vtb_promo_clienti, " +
" vtb_promo_articoli, " +
" vtb_promo_sconti " +
"where vtb_promo.cod_promo = vtb_promo_clienti.cod_promo and " +
" vtb_promo.cod_promo = vtb_promo_sconti.cod_promo and " +
" vtb_promo.cod_promo = vtb_promo_articoli.cod_promo and " +
" vtb_promo.flag_sconto_contrattuale = 'S' and " +
" (flag_tipo_promo = 'E') and " +
" vtb_promo.flag_attivo = 'S' and " +
" vtb_promo.data_iniz_sell_in <= " + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + " and " + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + " <= vtb_promo.data_fine_sell_in and " +
" vtb_promo_articoli.cod_mart = " + UtilityDB.valueToString(codMart) + " and " +
" vtb_promo_clienti.cod_anag = " + UtilityDB.valueToString(codAnag) + " and " +
" ISNULL(vtb_promo_clienti.cod_vdes, '') = " + UtilityDB.valueToString(codVdes);
ps = conn.prepareStatement(query);
rs = ps.executeQuery();
if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String columnName = UtilityString.sqlToField(rsmd.getColumnName(i + 1));
Object valueEntity = DroolsUtil.getFieldValue(entity, columnName);
BigDecimal percScoContr = BigDecimal.ZERO;
if (valueEntity == null) {
if ("sconto5".equals(columnName)){
percScoContr = rs.getBigDecimal(1);
} else if ("sconto6".equals(columnName)){
percScoContr = rs.getBigDecimal(2);
} else {
percScoContr = rs.getBigDecimal(3);
}
if (percScoContr.compareTo(BigDecimal.ZERO) != 0) {
BigDecimal sconto = BigDecimal.ZERO;
if (campi.containsValue(columnName)) {
BigDecimal scontoContr = (BigDecimal) campi.get(columnName);
sconto = BigDecimal.ONE.subtract(BigDecimal.ONE.subtract(scontoContr.divide(BigDecimal.valueOf(100))).multiply(BigDecimal.ONE.subtract(percScoContr.divide(BigDecimal.valueOf(100))))).setScale(2, RoundingMode.HALF_UP);
campi.remove(columnName);
} else {
sconto = percScoContr;
}
;
campi.put(columnName, sconto);
}
}
}
}
rs.close();
ps.close();
if (entity instanceof DtbDocr) {
((DtbDocr) entity).setSetDatiLisv(false);