modifiche a procedura di importazione listini di apulia
This commit is contained in:
@@ -15,6 +15,7 @@ import it.integry.ems_model.db.ResultSetMapper;
|
||||
import it.integry.ems_model.entity.AtbList;
|
||||
import it.integry.ems_model.entity.AtbListData;
|
||||
import it.integry.ems_model.entity.MtbLisaData;
|
||||
import it.integry.ems_model.exception.DataConverterNotFoundException;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.types.TypeDbObject;
|
||||
@@ -97,105 +98,7 @@ public class ImportListiniAcquistoApuliaCarrefourService {
|
||||
* la logica del prezzo netto netto.
|
||||
*/
|
||||
|
||||
BigDecimal percOneri = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:DIR", "0"));
|
||||
BigDecimal percOneriRif = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:RIF", "0"));
|
||||
|
||||
boolean setDataOdierna = UtilityHashMap.getValueIfExists(setup, "DATA_VAR_ODIERNA", "N").equalsIgnoreCase("S");
|
||||
|
||||
String calcDataIniz;
|
||||
if ( setDataOdierna ) {
|
||||
calcDataIniz = UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD);
|
||||
} else {
|
||||
calcDataIniz =
|
||||
"CASE "
|
||||
+ "WHEN lisa.tipo_variazione = 'I' AND "
|
||||
+ "lisa.tipo_variazione IS not null AND "
|
||||
+ "lisa.data_iniz > apulia.data_prz_acq THEN lisa.data_iniz "
|
||||
+ "WHEN lisa.cod_art_for IS NULL AND mtb_lisa.cod_art_for IS NOT NULL THEN " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + " "
|
||||
+ "WHEN apulia.data_prz_acq < '2020/01/01' THEN '2020/01/01' "
|
||||
+ "ELSE IsNull(apulia.data_prz_acq, " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + ") END ";
|
||||
}
|
||||
|
||||
sql =
|
||||
"SELECT IsNull(apulia.cod_alis, lisa.cod_alis) as cod_alis, "
|
||||
+ calcDataIniz + " AS data_iniz, "
|
||||
+ " IsNull(apulia.cod_art_for, lisa.cod_art_for) as cod_art_for,"
|
||||
+ " CASE WHEN apulia.cod_alis is not null THEN apulia.prz_acq else null end as prz_acq,"
|
||||
+ " apulia.descrizione AS descrizione, "
|
||||
+ " apulia.barcode AS barcode,"
|
||||
+ " apulia.unt_mis_acq AS unt_mis_acq,"
|
||||
+ " apulia.qta_cnf AS qta_cnf,"
|
||||
+ " apulia.colli_x_pedane AS colli_x_pedane,"
|
||||
+ " CASE WHEN lisa.cod_art_for IS NULL THEN apulia.prz_base_prop ELSE NULL END AS prz_ven_sug,"
|
||||
+ " CASE WHEN lisa.cod_art_for IS NULL AND apulia.cod_art_for is not null THEN 'I' "
|
||||
+ "WHEN lisa.cod_art_for IS NOT NULL AND apulia.cod_art_for is null THEN 'D' "
|
||||
+ "ELSE 'U' END AS tipo_variazione, "
|
||||
+ " lisa.data_iniz as data_iniz_lisa, "
|
||||
+ " IsNull(oneri.perc_oneri, CASE WHEN apulia.tipo_listino = 'RIF' THEN " + UtilityDB.valueToString(percOneriRif) + " ELSE " + UtilityDB.valueToString(percOneri) + " END ) as perc_oneri, "
|
||||
+ " count(*) over (partition by IsNull(apulia.cod_alis, lisa.cod_alis), "
|
||||
+ calcDataIniz + ", "
|
||||
+ " IsNull(apulia.cod_art_for, lisa.cod_art_for)) as count_art_for, "
|
||||
+ " apulia.cod_aliq, "
|
||||
+ " apulia.prz_base_prop, "
|
||||
+ " apulia.perc_premio as prec_promo,"
|
||||
+ " ISNULL(apulia.val_premio, 0) as val_promo "
|
||||
+ "FROM (SELECT DISTINCT mtb_lisa_apulia_succ.cod_alis, "
|
||||
+ " mtb_lisa_apulia_succ.data_prz_acq,"
|
||||
+ " mtb_lisa_apulia_succ.cod_art_for AS cod_art_for,"
|
||||
+ " mtb_lisa_apulia_succ.prz_acq AS prz_acq, "
|
||||
+ " mtb_lisa_apulia_succ.descrizione,"
|
||||
+ " mtb_lisa_apulia_succ.barcode,"
|
||||
+ " mtb_lisa_apulia_succ.descrizione_divisione_forn,"
|
||||
+ " mtb_lisa_apulia_succ.partita_iva_forn,"
|
||||
+ " mtb_lisa_apulia_succ.unt_mis_acq,"
|
||||
+ " mtb_lisa_apulia_succ.qta_cnf,"
|
||||
+ " mtb_lisa_apulia_succ.colli_x_pedane,"
|
||||
+ " mtb_lisa_apulia_succ.linea,"
|
||||
+ " CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%[0-9]%' THEN 'RIF' ELSE 'DIR' END tipo_listino ,"
|
||||
+ " mtb_lisa_apulia_succ.anno_contratto,"
|
||||
+ " mtb_lisa_apulia_succ.perc_contratto,"
|
||||
+ " mtb_lisa_apulia_succ.rag_soc_forn,"
|
||||
+ " mtb_lisa_apulia_succ.prz_ven_sugg,"
|
||||
+ " mtb_lisa_apulia_succ.cod_forn,"
|
||||
+ " mtb_lisa_apulia_succ.cod_aliq, "
|
||||
+ " mtb_lisa_apulia_succ.prz_base_prop, "
|
||||
+ " mtb_lisa_apulia_succ.perc_premio, "
|
||||
+ " mtb_lisa_apulia_succ.val_premio "
|
||||
+ " FROM mtb_lisa_apulia_succ "
|
||||
+ " WHERE mtb_lisa_apulia_succ.data_prz_acq <= " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + " AND "
|
||||
+ " mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis "
|
||||
+ " FROM dbo.ParseStringIntoArray((SELECT dbo.getGestSetup('IMPORT_" + type + "', " + UtilityDB.valueToString(format) + ", 'LISTINI_DA_ESCLUDERE')), '|'))) apulia "
|
||||
+ "FULL OUTER JOIN (SELECT lisa.cod_alis,"
|
||||
+ " cod_art_for, "
|
||||
+ " prz_acq, "
|
||||
+ " val_promo, "
|
||||
+ " perc_oneri, "
|
||||
+ " prz_ven_sug, "
|
||||
+ " CASE WHEN data_iniz < '2020/01/01' THEN '2020/01/01' ELSE data_iniz END as data_iniz, "
|
||||
+ " tipo_variazione "
|
||||
+ " FROM dbo.getListinoAcquisto(" + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + ", NULL, NULL, NULL, 'N', NULL) lisa LEFT OUTER JOIN "
|
||||
+ " (SELECT value_string AS cod_alis FROM dbo.ParseStringIntoArray((SELECT dbo.getGestSetup('IMPORT_" + type + "', " + UtilityDB.valueToString(format) + ", 'LISTINI_DA_ESCLUDERE')), '|')) listini_esclusi "
|
||||
+ " ON lisa.cod_alis = listini_esclusi.cod_alis "
|
||||
+ "WHERE lisa.cod_alis LIKE 'AP%' AND "
|
||||
+ " lisa.tipo_variazione <> 'D' AND lisa.tipo_variazione is not null and "
|
||||
+ " listini_esclusi.cod_alis IS NULL ) lisa ON apulia.cod_alis = lisa.cod_alis AND apulia.cod_art_for = lisa.cod_art_for "
|
||||
+ "LEFT OUTER JOIN mtb_lisa ON apulia.cod_alis = mtb_lisa.cod_alis AND "
|
||||
+ "apulia.cod_art_for = mtb_lisa.cod_art_for "
|
||||
+ "LEFT OUTER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart "
|
||||
+ "LEFT OUTER JOIN (SELECT mtb_grup.cod_mgrp,"
|
||||
+ " REPLACE(key_section, 'PERC_ONERI:', '') AS tipo_listino, "
|
||||
+ " IsNull(Convert(numeric(20,5), stb_gest_setup_det.value ), 0) AS perc_oneri "
|
||||
+ " FROM mtb_grup LEFT OUTER JOIN stb_gest_setup_det ON gest_name = 'IMPORT_" + type + "' AND "
|
||||
+ " section = " + UtilityDB.valueToString(format) + " AND KEY_SECTION LIKE 'PERC_ONERI%' and"
|
||||
+ " mtb_grup.cod_mgrp = stb_gest_setup_det.val_col_rif ) oneri on apulia.tipo_listino= oneri.tipo_listino And mtb_aart.cod_mgrp = oneri.cod_mgrp "
|
||||
+ " WHERE ((apulia.data_prz_acq >= " + UtilityDB.valueDateToString(dataInizVarizioni, CommonConstants.DATE_FORMAT_YMD) + " AND "
|
||||
+ "(ISNULL(lisa.prz_acq, 0) <> ISNULL(apulia.prz_acq, 0) OR "
|
||||
+ "ISNULL(lisa.perc_oneri, 0) <> IsNull(oneri.perc_oneri, CASE WHEN apulia.tipo_listino = 'RIF' THEN " + UtilityDB.valueToString(percOneriRif) + " ELSE " + UtilityDB.valueToString(percOneri) + " END ) OR "
|
||||
+ "ISNULL(lisa.prz_ven_sug, 0) <> ISNULL(apulia.prz_base_prop, 0)) OR "
|
||||
+ "ISNULL(lisa.val_promo, 0) <> ISNULL(apulia.val_premio, 0)) OR "
|
||||
+ "IsNull(lisa.cod_art_for, '') <> IsNull(apulia.cod_art_for, '')) ";
|
||||
|
||||
List<ListinoApuliaCarrefourDTO> variazioniListini = UtilityDB.executeSimpleQueryDTO(conn, sql, ListinoApuliaCarrefourDTO.class);
|
||||
List<ListinoApuliaCarrefourDTO> variazioniListini = getVariazioni(type, format, setup, dataImport, dataInizVarizioni, conn);
|
||||
|
||||
Date dataOraImport = new Date();
|
||||
List<MtbLisaData> righeListino =
|
||||
@@ -359,6 +262,135 @@ public class ImportListiniAcquistoApuliaCarrefourService {
|
||||
return entityRet;
|
||||
}
|
||||
|
||||
private static List<ListinoApuliaCarrefourDTO> getVariazioni(String type, String format, Map<String, String> setup, Date dataImport, Date dataInizVarizioni, Connection conn) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
|
||||
String sql;
|
||||
BigDecimal percOneri = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:DIR", "0"));
|
||||
BigDecimal percOneriRif = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:RIF", "0"));
|
||||
|
||||
String columnPercOneri =
|
||||
"ISNULL(oneri.perc_oneri, CASE\n" +
|
||||
" WHEN apulia.tipo_listino = 'RIF' THEN " + UtilityDB.valueToString(percOneriRif) + "\n" +
|
||||
" ELSE "+UtilityDB.valueToString(percOneri) +" END) ";
|
||||
|
||||
boolean setDataOdierna = UtilityHashMap.getValueIfExists(setup, "DATA_VAR_ODIERNA", "N").equalsIgnoreCase("S");
|
||||
|
||||
String calcDataIniz;
|
||||
if ( setDataOdierna ) {
|
||||
calcDataIniz = UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD);
|
||||
} else {
|
||||
calcDataIniz =
|
||||
"CASE "
|
||||
+ "WHEN lisa.tipo_variazione = 'I' AND "
|
||||
+ "lisa.tipo_variazione IS not null AND "
|
||||
+ "lisa.data_iniz > apulia.data_prz_acq THEN lisa.data_iniz "
|
||||
+ "WHEN lisa.cod_art_for IS NULL AND mtb_lisa.cod_art_for IS NOT NULL THEN " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + " "
|
||||
+ "WHEN apulia.data_prz_acq < '2020/01/01' THEN '2020/01/01' "
|
||||
+ "ELSE IsNull(apulia.data_prz_acq, " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + ") END ";
|
||||
}
|
||||
|
||||
sql =
|
||||
("SELECT ISNULL(apulia.cod_alis, lisa.cod_alis) AS cod_alis,\n" +
|
||||
" [COLUMN_DATA_INIZ] AS data_iniz,\n" +
|
||||
" ISNULL(apulia.cod_art_for, lisa.cod_art_for) AS cod_art_for,\n" +
|
||||
" CASE WHEN apulia.cod_alis IS NOT NULL THEN apulia.prz_acq ELSE NULL END AS prz_acq,\n" +
|
||||
" apulia.descrizione AS descrizione,\n" +
|
||||
" apulia.barcode AS barcode,\n" +
|
||||
" apulia.unt_mis_acq AS unt_mis_acq,\n" +
|
||||
" apulia.qta_cnf AS qta_cnf,\n" +
|
||||
" apulia.colli_x_pedane AS colli_x_pedane,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN lisa.cod_art_for IS NULL THEN apulia.prz_base_prop\n" +
|
||||
" ELSE lisa.prz_ven_sug END AS prz_ven_sug,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN lisa.cod_art_for IS NULL AND apulia.cod_art_for IS NOT NULL THEN 'I'\n" +
|
||||
" WHEN lisa.cod_art_for IS NOT NULL AND apulia.cod_art_for IS NULL THEN 'D'\n" +
|
||||
" ELSE 'U' END AS tipo_variazione,\n" +
|
||||
" lisa.data_iniz AS data_iniz_lisa,\n" +
|
||||
" [COLUMN_PERC_ONERI] AS perc_oneri,\n" +
|
||||
" COUNT(*)\n" +
|
||||
" OVER (PARTITION BY ISNULL(apulia.cod_alis, lisa.cod_alis), [COLUMN_DATA_INIZ], ISNULL(apulia.cod_art_for, lisa.cod_art_for)) AS count_art_for,\n" +
|
||||
" apulia.cod_aliq,\n" +
|
||||
" apulia.prz_base_prop,\n" +
|
||||
" apulia.perc_premio AS prec_promo,\n" +
|
||||
" ISNULL(apulia.val_premio, 0) AS val_promo\n" +
|
||||
"FROM (SELECT DISTINCT mtb_lisa_apulia_succ.cod_alis,\n" +
|
||||
" mtb_lisa_apulia_succ.data_prz_acq,\n" +
|
||||
" mtb_lisa_apulia_succ.cod_art_for AS cod_art_for,\n" +
|
||||
" mtb_lisa_apulia_succ.prz_acq AS prz_acq,\n" +
|
||||
" mtb_lisa_apulia_succ.descrizione,\n" +
|
||||
" mtb_lisa_apulia_succ.barcode,\n" +
|
||||
" mtb_lisa_apulia_succ.descrizione_divisione_forn,\n" +
|
||||
" mtb_lisa_apulia_succ.partita_iva_forn,\n" +
|
||||
" mtb_lisa_apulia_succ.unt_mis_acq,\n" +
|
||||
" mtb_lisa_apulia_succ.qta_cnf,\n" +
|
||||
" mtb_lisa_apulia_succ.colli_x_pedane,\n" +
|
||||
" mtb_lisa_apulia_succ.linea,\n" +
|
||||
" CASE WHEN mtb_lisa_apulia_succ.cod_alis LIKE 'AP%[0-9]%' THEN 'RIF' ELSE 'DIR' END tipo_listino,\n" +
|
||||
" mtb_lisa_apulia_succ.anno_contratto,\n" +
|
||||
" mtb_lisa_apulia_succ.perc_contratto,\n" +
|
||||
" mtb_lisa_apulia_succ.rag_soc_forn,\n" +
|
||||
" mtb_lisa_apulia_succ.prz_ven_sugg,\n" +
|
||||
" mtb_lisa_apulia_succ.cod_forn,\n" +
|
||||
" mtb_lisa_apulia_succ.cod_aliq,\n" +
|
||||
" mtb_lisa_apulia_succ.prz_base_prop,\n" +
|
||||
" mtb_lisa_apulia_succ.perc_premio,\n" +
|
||||
" mtb_lisa_apulia_succ.val_premio\n" +
|
||||
" FROM mtb_lisa_apulia_succ\n" +
|
||||
" WHERE mtb_lisa_apulia_succ.data_prz_acq <= [DATA_IMPORT]\n" +
|
||||
" AND mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis\n" +
|
||||
" FROM dbo.parsestringintoarray(\n" +
|
||||
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
|
||||
" '[FORMAT]',\n" +
|
||||
" 'LISTINI_DA_ESCLUDERE')),\n" +
|
||||
" '|'))) apulia\n" +
|
||||
" FULL OUTER JOIN (SELECT lisa.cod_alis,\n" +
|
||||
" cod_art_for,\n" +
|
||||
" prz_acq,\n" +
|
||||
" val_promo,\n" +
|
||||
" perc_oneri,\n" +
|
||||
" prz_ven_sug,\n" +
|
||||
" CASE WHEN data_iniz < '2020/01/01' THEN '2020/01/01' ELSE data_iniz END AS data_iniz,\n" +
|
||||
" tipo_variazione\n" +
|
||||
" FROM dbo.getlistinoacquisto([DATA_IMPORT], NULL, NULL, NULL, 'N', NULL) lisa\n" +
|
||||
" LEFT OUTER JOIN (SELECT value_string AS cod_alis\n" +
|
||||
" FROM dbo.parsestringintoarray(\n" +
|
||||
" (SELECT dbo.getgestsetup('IMPORT_[TYPE]',\n" +
|
||||
" '[FORMAT]',\n" +
|
||||
" 'LISTINI_DA_ESCLUDERE')),\n" +
|
||||
" '|')) listini_esclusi\n" +
|
||||
" ON lisa.cod_alis = listini_esclusi.cod_alis\n" +
|
||||
" WHERE lisa.cod_alis LIKE 'AP%'\n" +
|
||||
" AND lisa.tipo_variazione <> 'D'\n" +
|
||||
" AND lisa.tipo_variazione IS NOT NULL\n" +
|
||||
" AND listini_esclusi.cod_alis IS NULL) lisa\n" +
|
||||
" ON apulia.cod_alis = lisa.cod_alis AND apulia.cod_art_for = lisa.cod_art_for\n" +
|
||||
" LEFT OUTER JOIN mtb_lisa ON apulia.cod_alis = mtb_lisa.cod_alis AND apulia.cod_art_for = mtb_lisa.cod_art_for\n" +
|
||||
" LEFT OUTER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN (SELECT mtb_grup.cod_mgrp,\n" +
|
||||
" REPLACE(key_section, 'PERC_ONERI:', '') AS tipo_listino,\n" +
|
||||
" ISNULL(CONVERT(NUMERIC(20, 5), stb_gest_setup_det.value), 0) AS perc_oneri\n" +
|
||||
" FROM mtb_grup\n" +
|
||||
" LEFT OUTER JOIN stb_gest_setup_det ON gest_name = 'IMPORT_[TYPE]' AND\n" +
|
||||
" section = '[FORMAT]' AND\n" +
|
||||
" key_section LIKE 'PERC_ONERI%' AND\n" +
|
||||
" mtb_grup.cod_mgrp =\n" +
|
||||
" stb_gest_setup_det.val_col_rif) oneri\n" +
|
||||
" ON apulia.tipo_listino = oneri.tipo_listino AND mtb_aart.cod_mgrp = oneri.cod_mgrp\n" +
|
||||
"WHERE (apulia.data_prz_acq >= [DATA_INIZ_VAR] AND (ISNULL(lisa.prz_acq, 0) <> ISNULL(apulia.prz_acq, 0) OR\n" +
|
||||
" ISNULL(lisa.perc_oneri, 0) <> [COLUMN_PERC_ONERI] OR\n" +
|
||||
" ISNULL(lisa.val_promo, 0) <> ISNULL(apulia.val_premio, 0) OR\n" +
|
||||
" ISNULL(lisa.cod_art_for, '') <> ISNULL(apulia.cod_art_for, '')))")
|
||||
.replace("[COLUMN_DATA_INIZ]", calcDataIniz)
|
||||
.replace("[TYPE]", type)
|
||||
.replace("[FORMAT]", format)
|
||||
.replace("[COLUMN_PERC_ONERI]", columnPercOneri)
|
||||
.replace("[DATA_INIZ_VAR]",UtilityDB.valueDateToString(dataInizVarizioni, CommonConstants.DATE_FORMAT_YMD) )
|
||||
.replace("[DATA_IMPORT]", UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD));
|
||||
|
||||
List<ListinoApuliaCarrefourDTO> variazioniListini = UtilityDB.executeSimpleQueryDTO(conn, sql, ListinoApuliaCarrefourDTO.class);
|
||||
return variazioniListini;
|
||||
}
|
||||
|
||||
private void importFileCsv(Connection conn, String pathFile, String type, String format, Map<String, String> setup) throws Exception {
|
||||
String sql = null, tableName = null;
|
||||
final String tableListRif = "apuliac_listino_rif_csv";
|
||||
|
||||
Reference in New Issue
Block a user