diff --git a/IntegryManagementSystem.ipr b/IntegryManagementSystem.ipr
index 605ec5ec90..08d2d2b32d 100644
--- a/IntegryManagementSystem.ipr
+++ b/IntegryManagementSystem.ipr
@@ -101,8 +101,7 @@
-
-
+
@@ -727,7 +726,7 @@
-
+
@@ -873,7 +872,7 @@
-
+
@@ -943,7 +942,7 @@
-
+
@@ -958,7 +957,7 @@
-
+
@@ -2407,16 +2406,16 @@
-
-
+
+
-
+
-
+
-
+
@@ -2431,18 +2430,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314141529.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314141529.java
index df3661a755..256f48f8df 100644
--- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314141529.java
+++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314141529.java
@@ -1,16 +1,25 @@
-package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
-import it.integry.ems.migration._base.MigrationModelInterface;
+package it.integry.ems.migration.model;
-public class Migration_20240314141529 extends BaseMigration implements MigrationModelInterface{
+import it.integry.ems.migration._base.BaseMigration;
+import it.integry.ems.migration._base.MigrationModelInterface;
+import it.integry.ems_model.utility.UtilityDB;
+
+public class Migration_20240314141529 extends BaseMigration implements MigrationModelInterface {
@Override
- public void up()throws Exception {
- if(isHistoryDB())
+ public void up() throws Exception {
+ if (isHistoryDB())
return;
+
+ if (existsTable("dbo.mtb_lisa_apulia_succ")) {
+ executeStatement("ALTER TABLE mtb_lisa_apulia_succ ADD perc_premio numeric(5,2)",
+ "ALTER TABLE mtb_lisa_apulia_succ ADD val_premio numeric(20,5)");
+ }
+
}
@Override
- public void down()throws Exception{
+ public void down() throws Exception {
}
diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314143129.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314143129.java
deleted file mode 100644
index 23e0d6b7d0..0000000000
--- a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240314143129.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
-import it.integry.ems.migration._base.MigrationModelInterface;
-
-public class Migration_20240314143129 extends BaseMigration implements MigrationModelInterface{
-
- @Override
- public void up()throws Exception {
- if(isHistoryDB())
- return;
- }
-
- @Override
- public void down()throws Exception{
-
- }
-
-}
diff --git a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java
index 91dde0fab0..697058191b 100644
--- a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java
+++ b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityDB.java
@@ -400,16 +400,20 @@ public class UtilityDB {
}
public static void dropTmpView(Connection conn, List tmpView) throws Exception {
- String query;
for (String view : tmpView) {
- query = "DROP VIEW " + view;
- Statement cmd = conn.createStatement();
- cmd.execute(query);
- cmd.close();
+ dropTmpView(conn, view);
}
conn.commit();
}
+ public static void dropTmpView(Connection conn, String view) throws Exception {
+ if (!UtilityDB.existDatabaseObject(conn, view, TypeDbObject.VIEW)) return;
+ String query = "DROP VIEW " + view;
+ Statement cmd = conn.createStatement();
+ cmd.execute(query);
+ cmd.close();
+ }
+
public static String query2XML(String query, Connection conn, String root, String row) throws Exception {
query = query + " FOR XML PATH('" + row + "'), ROOT ('" + root + "')"; // sono state rimosse le parentesi che racchiudono 'query'. ci sono problemi con eventuali order by
//query = "("+query+") FOR XML PATH('"+row+"'), ROOT ('"+root+"')";
diff --git a/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java b/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java
index d6a85dffa2..039f03af6b 100644
--- a/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java
+++ b/ems-engine/src/main/java/it/integry/ems/contabil/service/RossoGarganoSyncService.java
@@ -92,7 +92,7 @@ public class RossoGarganoSyncService {
saveCtbMovt(rgExchange.getConnection(), "(PNOTA.PN_SEZIONALE_IVA <> '' AND PN_CAUSALE_MOVIMENTO <> '998')", dataIniz, dataFine, dataUltUpd);
logger.info("Importazione fatture attive e passive: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
-
+/*
sql =
"SELECT CAST(FORMAT(DATEPART(YEAR, data_fine), '0000') +\n" +
" FORMAT(DATEPART(MONTH, data_fine), '00') +\n" +
@@ -101,7 +101,7 @@ public class RossoGarganoSyncService {
" CROSS APPLY dbo.getperiodoannofisc(azienda.anno_contab)";
dataFine = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
-
+*/
saveCtbMovt(rgExchange.getConnection(), "(PN_CAUSALE_MOVIMENTO <> '998')", dataIniz, dataFine, dataUltUpd);
logger.info("Importazione altri movimenti contabili: Timing " + ((new Date().getTime() - startDate.getTime()) / 1000) + " secs");
}
diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/ListiniAcquistoImporter.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/ListiniAcquistoImporter.java
index 5967f1ce34..20af582a35 100644
--- a/ems-engine/src/main/java/it/integry/ems/product/importaz/ListiniAcquistoImporter.java
+++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/ListiniAcquistoImporter.java
@@ -27,7 +27,7 @@ public class ListiniAcquistoImporter extends BaseEntityImporter
break;
case APULIA_CARREFOUR:
ImportListiniAcquistoApuliaCarrefourService apuliaCarrefourService = ContextLoader.getCurrentWebApplicationContext().getBean(ImportListiniAcquistoApuliaCarrefourService.class);
- result = apuliaCarrefourService.importListino(requestDto, type, format);
+ result = apuliaCarrefourService.importListino(requestDto, type, format, anomalie);
break;
case METALSISTEM:
ImportListiniAcquistoFornitoriSmetarService listiniSmetarService = ContextLoader.getCurrentWebApplicationContext().getBean(ImportListiniAcquistoFornitoriSmetarService.class);
diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/dto/ListinoApuliaCarrefourDTO.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/dto/ListinoApuliaCarrefourDTO.java
index fb60bcfc3d..68be125526 100644
--- a/ems-engine/src/main/java/it/integry/ems/product/importaz/dto/ListinoApuliaCarrefourDTO.java
+++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/dto/ListinoApuliaCarrefourDTO.java
@@ -1,2 +1,224 @@
-package it.integry.ems.product.importaz.dto;public class ListinoApuliaCarrefourDTO {
+package it.integry.ems.product.importaz.dto;
+
+import it.integry.ems_model.annotation.SqlField;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ListinoApuliaCarrefourDTO {
+ @SqlField(value = "barcode")
+ private String barcode;
+
+ @SqlField(value = "cod_aliq")
+ private String codAliq;
+
+ @SqlField(value = "cod_alis")
+ private String codAlis;
+
+ @SqlField(value = "cod_art_for")
+ private String codArtFor;
+
+ @SqlField(value = "colli_x_pedane")
+ private BigDecimal colliXPedane;
+
+ @SqlField(value = "count_art_for")
+ private Integer countArtFor;
+
+ @SqlField(value = "data_iniz")
+ private Date dataIniz;
+
+ @SqlField(value = "data_iniz_lisa")
+ private Date dataInizLisa;
+
+ @SqlField(value = "descrizione")
+ private String descrizione;
+
+ @SqlField(value = "perc_oneri")
+ private BigDecimal percOneri;
+
+ @SqlField(value = "prec_promo")
+ private BigDecimal precPromo;
+
+ @SqlField(value = "prz_acq")
+ private BigDecimal przAcq;
+
+ @SqlField(value = "prz_base_prop")
+ private BigDecimal przBaseProp;
+
+ @SqlField(value = "prz_ven_sug")
+ private BigDecimal przVenSug;
+
+ @SqlField(value = "qta_cnf")
+ private BigDecimal qtaCnf;
+
+ @SqlField(value = "tipo_variazione")
+ private String tipoVariazione;
+
+ @SqlField(value = "unt_mis_acq")
+ private String untMisAcq;
+
+ @SqlField(value = "val_promo")
+ private BigDecimal valPromo;
+
+ public String getBarcode() {
+ return barcode;
+ }
+
+ public ListinoApuliaCarrefourDTO setBarcode(String barcode) {
+ this.barcode = barcode;
+ return this;
+ }
+
+ public String getCodAliq() {
+ return codAliq;
+ }
+
+ public ListinoApuliaCarrefourDTO setCodAliq(String codAliq) {
+ this.codAliq = codAliq;
+ return this;
+ }
+
+ public String getCodAlis() {
+ return codAlis;
+ }
+
+ public ListinoApuliaCarrefourDTO setCodAlis(String codAlis) {
+ this.codAlis = codAlis;
+ return this;
+ }
+
+ public String getCodArtFor() {
+ return codArtFor;
+ }
+
+ public ListinoApuliaCarrefourDTO setCodArtFor(String codArtFor) {
+ this.codArtFor = codArtFor;
+ return this;
+ }
+
+ public BigDecimal getColliXPedane() {
+ return colliXPedane;
+ }
+
+ public ListinoApuliaCarrefourDTO setColliXPedane(BigDecimal colliXPedane) {
+ this.colliXPedane = colliXPedane;
+ return this;
+ }
+
+ public Integer getCountArtFor() {
+ return countArtFor;
+ }
+
+ public ListinoApuliaCarrefourDTO setCountArtFor(Integer countArtFor) {
+ this.countArtFor = countArtFor;
+ return this;
+ }
+
+ public Date getDataIniz() {
+ return dataIniz;
+ }
+
+ public ListinoApuliaCarrefourDTO setDataIniz(Date dataIniz) {
+ this.dataIniz = dataIniz;
+ return this;
+ }
+
+ public Date getDataInizLisa() {
+ return dataInizLisa;
+ }
+
+ public ListinoApuliaCarrefourDTO setDataInizLisa(Date dataInizLisa) {
+ this.dataInizLisa = dataInizLisa;
+ return this;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public ListinoApuliaCarrefourDTO setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ return this;
+ }
+
+ public BigDecimal getPercOneri() {
+ return percOneri;
+ }
+
+ public ListinoApuliaCarrefourDTO setPercOneri(BigDecimal percOneri) {
+ this.percOneri = percOneri;
+ return this;
+ }
+
+ public BigDecimal getPrecPromo() {
+ return precPromo;
+ }
+
+ public ListinoApuliaCarrefourDTO setPrecPromo(BigDecimal precPromo) {
+ this.precPromo = precPromo;
+ return this;
+ }
+
+ public BigDecimal getPrzAcq() {
+ return przAcq;
+ }
+
+ public ListinoApuliaCarrefourDTO setPrzAcq(BigDecimal przAcq) {
+ this.przAcq = przAcq;
+ return this;
+ }
+
+ public BigDecimal getPrzBaseProp() {
+ return przBaseProp;
+ }
+
+ public ListinoApuliaCarrefourDTO setPrzBaseProp(BigDecimal przBaseProp) {
+ this.przBaseProp = przBaseProp;
+ return this;
+ }
+
+ public BigDecimal getPrzVenSug() {
+ return przVenSug;
+ }
+
+ public ListinoApuliaCarrefourDTO setPrzVenSug(BigDecimal przVenSug) {
+ this.przVenSug = przVenSug;
+ return this;
+ }
+
+ public BigDecimal getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public ListinoApuliaCarrefourDTO setQtaCnf(BigDecimal qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ return this;
+ }
+
+ public String getTipoVariazione() {
+ return tipoVariazione;
+ }
+
+ public ListinoApuliaCarrefourDTO setTipoVariazione(String tipoVariazione) {
+ this.tipoVariazione = tipoVariazione;
+ return this;
+ }
+
+ public String getUntMisAcq() {
+ return untMisAcq;
+ }
+
+ public ListinoApuliaCarrefourDTO setUntMisAcq(String untMisAcq) {
+ this.untMisAcq = untMisAcq;
+ return this;
+ }
+
+ public BigDecimal getValPromo() {
+ return valPromo;
+ }
+
+ public ListinoApuliaCarrefourDTO setValPromo(BigDecimal valPromo) {
+ this.valPromo = valPromo;
+ return this;
+ }
}
diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java
index aa7d09bde7..918e6d43c0 100644
--- a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java
+++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportListiniAcquistoApuliaCarrefourService.java
@@ -1,10 +1,10 @@
package it.integry.ems.product.importaz.service;
import com.annimon.stream.Stream;
-import it.integry.WooCommerce.dto.product.TextTilesBatchUpdateRequest;
import it.integry.common.var.CommonConstants;
+import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
-import it.integry.ems.rules.completing.PurchasesRules;
+import it.integry.ems.product.importaz.dto.ListinoApuliaCarrefourDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
@@ -12,14 +12,13 @@ import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.UtilityFile;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
-import it.integry.ems_model.entity.*;
+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.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.types.TypeDbObject;
-import it.integry.ems_model.utility.UtilityBigDecimal;
-import it.integry.ems_model.utility.UtilityDB;
-import it.integry.ems_model.utility.UtilityHashMap;
-import it.integry.ems_model.utility.UtilityString;
+import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -33,7 +32,6 @@ import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
@Service
@Scope("request")
@@ -42,9 +40,6 @@ public class ImportListiniAcquistoApuliaCarrefourService {
@Autowired
private SetupGest setupGest;
- @Autowired
- private ImportAnagListiniService importAnagListiniService;
-
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@@ -52,7 +47,7 @@ public class ImportListiniAcquistoApuliaCarrefourService {
private EntityProcessor entityProcessor;
private final Logger logger = LogManager.getLogger();
- public List importListino(ImportRequestDTO param, String type, String format) throws Exception {
+ public List importListino(ImportRequestDTO param, String type, String format, List anomalie) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
List entityRet = new ArrayList<>();
Date dataImport;
@@ -105,8 +100,6 @@ public class ImportListiniAcquistoApuliaCarrefourService {
BigDecimal percOneri = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:DIR", "0"));
BigDecimal percOneriRif = new BigDecimal(UtilityHashMap.getValueIfExists(setup, "PERC_ONERI:RIF", "0"));
- String viewName = UtilityDB.defTmpTabName("v1_");
-
boolean setDataOdierna = UtilityHashMap.getValueIfExists(setup, "DATA_VAR_ODIERNA", "N").equalsIgnoreCase("S");
String calcDataIniz;
@@ -124,119 +117,121 @@ public class ImportListiniAcquistoApuliaCarrefourService {
}
sql =
- "CREATE VIEW " + viewName + " AS " +
- "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,"
- + " 0 as val_promo, "
- + " 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_ven_sugg 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 "
- + "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, "
- + " CONVERT(numeric(20,5), ISNULL(mtb_lisa_apulia_succ.prz_acq, 0) ) AS val_promo,"
- + " 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 "
- + " 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.cod_art_for, '') <> IsNull(apulia.cod_art_for, '')) ";
+ "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_ven_sugg 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,"
+ + " apulia.val_premio 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, "
+ + " CONVERT(numeric(20,5), ISNULL(mtb_lisa_apulia_succ.prz_acq, 0) ) AS val_promo,"
+ + " 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, '')) ";
- PreparedStatement ps = conn.prepareStatement(sql);
- ps.executeUpdate();
- ps.close();
- conn.commit();
+ List variazioniListini = UtilityDB.executeSimpleQueryDTO(conn, sql, ListinoApuliaCarrefourDTO.class);
Date dataOraImport = new Date();
- String whereCondLisa = "( data_iniz >= data_iniz_lisa or data_iniz_lisa is null ) AND count_art_for = 1 ";
- sql =
- "SELECT viewLisa.cod_alis, "
- + "viewLisa.data_iniz AS data_iniz, "
- + "viewLisa.cod_art_for, "
- + "viewLisa.prz_acq, "
- + "viewLisa.val_promo, "
- + "viewLisa.descrizione as descr_art_forn, "
- + "viewLisa.barcode as cod_barre, "
- + "viewLisa.unt_mis_acq, "
- + "viewLisa.qta_cnf, "
- + "viewLisa.colli_x_pedane, "
- + "viewLisa.tipo_variazione, "
- + "Convert(datetime, " + UtilityDB.valueDateToString(dataOraImport, CommonConstants.DATETIME_FORMAT_YMD) + ") as data_agg_prz, "
- + "viewLisa.perc_oneri, "
- + "'EMS' as inserito_da, "
- + "'EMS' as modificato_da, "
- + "viewLisa.cod_aliq, "
- + "viewLisa.prz_base_prop as prz_ven_sug "
- + "FROM " + viewName + " viewLisa LEFT OUTER JOIN mtb_lisa ON viewLisa.cod_alis = mtb_lisa.cod_alis AND "
- + "viewLisa.cod_art_for = mtb_lisa.cod_art_for "
- + " WHERE " + whereCondLisa
- + " ORDER BY viewLisa.cod_alis, viewLisa.data_iniz ";
-
-
- List righeListino = new ArrayList<>();
- List mtbLisaData = new ResultSetMapper()
- .mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT);
- if (mtbLisaData != null) {
- righeListino.addAll(mtbLisaData);
- }
+ List righeListino =
+ Stream.of(variazioniListini)
+ .filter(x->x.getCountArtFor().intValue() == 1 &&
+ ( x.getDataInizLisa() == null || UtilityDate.DaysAfter(x.getDataInizLisa(), x.getDataIniz()) >= 0))
+ .map(
+ x->{
+ MtbLisaData mtbLisaData = new MtbLisaData()
+ .setCodAlis(x.getCodAlis())
+ .setDataIniz(x.getDataIniz())
+ .setCodArtFor(x.getCodArtFor())
+ .setPrzAcq(x.getPrzAcq())
+ .setValPromo(UtilityBigDecimal.isNull(x.getValPromo(), BigDecimal.ZERO))
+ .setPercPromo(UtilityBigDecimal.isNull(x.getPrecPromo(), BigDecimal.ZERO))
+ .setDescrArtForn(x.getDescrizione())
+ .setUntMisAcq(x.getUntMisAcq())
+ .setQtaCnf(x.getQtaCnf())
+ .setColliPedana(x.getColliXPedane())
+ .setTipoVariazione(x.getTipoVariazione())
+ .setDataAggPrz(dataOraImport)
+ .setInseritoDa("EMS")
+ .setModificatoDa("EMS")
+ .setCodAliq(x.getCodAliq())
+ .setPrzVenSug(UtilityBigDecimal.isNull(x.getPrzVenSug(), BigDecimal.ZERO))
+ .setPerc1(BigDecimal.ZERO)
+ .setPerc2(BigDecimal.ZERO)
+ .setPerc3(BigDecimal.ZERO)
+ .setPerc4(BigDecimal.ZERO)
+ .setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO))
+ .setValOneri(BigDecimal.ZERO);
+ mtbLisaData.setOperation(OperationType.INSERT);
+ return mtbLisaData;
+ }
+ ).toList();
if (setup.get("IMPORT_VAR_FUTURE").equalsIgnoreCase("S")) {
sql = "SELECT mtb_lisa_apulia_succ.cod_alis,\n" +
@@ -252,7 +247,9 @@ public class ImportListiniAcquistoApuliaCarrefourService {
" mtb_lisa_apulia_succ.linea,\n" +
" mtb_lisa_apulia_succ.prz_ven_sugg,\n" +
" mtb_lisa_apulia_succ.cod_aliq,\n" +
- " mtb_lisa_apulia_succ.prz_base_prop\n" +
+ " mtb_lisa_apulia_succ.prz_base_prop as prz_vend_sug,\n" +
+ " mtb_lisa_apulia_succ.perc_premio as perc_promo,\n" +
+ " mtb_lisa_apulia_succ.val_premio as val_promo\n" +
"FROM mtb_lisa_apulia_succ\n" +
"WHERE mtb_lisa_apulia_succ.data_prz_acq > " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + "\n" +
" AND mtb_lisa_apulia_succ.cod_alis NOT IN (SELECT value_string AS cod_alis\n" +
@@ -262,85 +259,60 @@ public class ImportListiniAcquistoApuliaCarrefourService {
" 'LISTINI_DA_ESCLUDERE')),\n" +
" '|'))";
- mtbLisaData = new ResultSetMapper()
+ List mtbLisaData = new ResultSetMapper()
.mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT);
if (mtbLisaData != null) {
+ Stream.of(mtbLisaData)
+ .forEach(
+ x -> x
+ .setPrzVenSug(UtilityBigDecimal.isNull(x.getPrzVenSug(), BigDecimal.ZERO))
+ .setPerc1(BigDecimal.ZERO)
+ .setPerc2(BigDecimal.ZERO)
+ .setPerc3(BigDecimal.ZERO)
+ .setPerc4(BigDecimal.ZERO)
+ .setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO))
+ .setValOneri(UtilityBigDecimal.isNull(x.getValOneri(), BigDecimal.ZERO))
+ .setPercPromo(UtilityBigDecimal.isNull(x.getPercPromo(), BigDecimal.ZERO))
+ .setValPromo(UtilityBigDecimal.isNull(x.getValPromo(), BigDecimal.ZERO))
+ );
righeListino.addAll(mtbLisaData);
}
+ }
- List listCond =
- Stream.of(righeListino)
- .filter(x->x.getQtaCnf() != null )
- .map(lisa -> {
- String whereCond =
- "mtb_lisa.cod_art_for = " + UtilityDB.valueToString(((MtbLisaData) lisa).getCodArtFor()) + " AND " +
- "mtb_lisa.cod_alis = " + UtilityDB.valueToString(((MtbLisaData) lisa).getCodAlis());
- return whereCond;
- }).toList();
+ List listCond =
+ Stream.of(righeListino)
+ .filter(x->x.getQtaCnf() != null )
+ .map(lisa -> {
+ String whereCond =
+ "mtb_lisa.cod_art_for = " + UtilityDB.valueToString(lisa.getCodArtFor()) + " AND " +
+ "mtb_lisa.cod_alis = " + UtilityDB.valueToString(lisa.getCodAlis());
+ return whereCond;
+ }).toList();
- if (listCond != null && !listCond.isEmpty()) {
- sql =
- "SELECT mtb_lisa.cod_art_for, mtb_lisa.rap_conv\n" +
- "FROM mtb_lisa\n" +
- " INNER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart AND mtb_lisa.rap_conv <> 1 ";
- String whereCond = StringUtils.join(listCond, ") OR (");
+ if (listCond != null && !listCond.isEmpty()) {
+ sql =
+ "SELECT mtb_lisa.cod_art_for, mtb_lisa.rap_conv\n" +
+ "FROM mtb_lisa\n" +
+ " INNER JOIN mtb_aart ON mtb_lisa.cod_mart = mtb_aart.cod_mart AND mtb_lisa.rap_conv <> 1 ";
+ String whereCond = StringUtils.join(listCond, ") OR (");
- sql = UtilityDB.addwhereCond(sql, "("+whereCond+")", false);
- List> datiLisa = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
- for(HashMap l: datiLisa) {
- String codArtForDb = UtilityHashMap.getValueIfExists(l, "cod_art_for");
- BigDecimal rapConvDb = UtilityHashMap.getValueIfExists(l, "rap_conv");
- List list = Stream.of(righeListino)
- .filter(x -> x.getCodArtFor().equalsIgnoreCase(codArtForDb) &&
- x.getQtaCnf() != null
- ).toList();
- for (MtbLisaData e:list) {
- righeListino.remove(e);
- BigDecimal qtaCnf = e.getQtaCnf().multiply(rapConvDb);
- e.setQtaCnf(qtaCnf);
- righeListino.add(e);
- }
+ sql = UtilityDB.addwhereCond(sql, "("+whereCond+")", false);
+ List> datiLisa = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
+ for(HashMap l: datiLisa) {
+ String codArtForDb = UtilityHashMap.getValueIfExists(l, "cod_art_for");
+ BigDecimal rapConvDb = UtilityHashMap.getValueIfExists(l, "rap_conv");
+ List list = Stream.of(righeListino)
+ .filter(x -> x.getCodArtFor().equalsIgnoreCase(codArtForDb) &&
+ x.getQtaCnf() != null
+ ).toList();
+ for (MtbLisaData e:list) {
+ righeListino.remove(e);
+ BigDecimal qtaCnf = e.getQtaCnf().multiply(rapConvDb);
+ e.setQtaCnf(qtaCnf);
+ righeListino.add(e);
}
}
}
- //INSERIMENTO IN TABELLA DI APPOGGIO
- sql =
- "SELECT Convert(datetime, " + UtilityDB.valueDateToString(dataOraImport, CommonConstants.DATETIME_FORMAT_YMD) + ") as data_import, "
- + UtilityDB.valueToString(type) + " as tipo_import, "
- + UtilityDB.valueToString(format) + " as formato_import, "
- + "Convert(datetime, " + UtilityDB.valueDateToString(dataImport, CommonConstants.DATE_FORMAT_YMD) + ") as data_file, "
- + "Convert(int, row_number() over (order by cod_alis, data_iniz)) as id, "
- + "cod_alis, "
- + "data_iniz, "
- + "cod_art_for, "
- + "prz_acq, "
- + "val_promo, "
- + "descrizione as descr_art_forn, "
- + "barcode as cod_barre, "
- + "unt_mis_acq, "
- + "qta_cnf, "
- + "colli_x_pedane as colli_pedana, "
- + "prz_ven_sug, "
- + "tipo_variazione, "
- + "count_art_for, "
- + "data_iniz_lisa, "
- + "cod_aliq, "
- + "prz_base_prop as prz_vend_sug "
- + "FROM " + viewName + " viewLisa "
- + " WHERE NOT ( " + whereCondLisa + ") "
- + " ORDER BY cod_alis, data_iniz ";
-
- List atbListLogImport = new ResultSetMapper().mapQuerySetToList(conn, sql, AtbListLogImport.class, OperationType.INSERT_OR_UPDATE);
-
- //cancellazione tabella temporanea
- Boolean existView = UtilityDB.existDatabaseObject(conn, viewName, TypeDbObject.VIEW);
-
- if (existView) {
- sql = "DROP VIEW " + viewName;
- PreparedStatement psDelete = conn.prepareStatement(sql);
- psDelete.executeUpdate();
- psDelete.close();
- }
//salvataggio testate listini
if ( atbList != null )
@@ -348,21 +320,6 @@ public class ImportListiniAcquistoApuliaCarrefourService {
if (righeListino != null && righeListino.size() > 0) {
//Salvataggio righe
- Stream.of(righeListino)
- .forEach(
- x -> x
- .setPrzVenSug(UtilityBigDecimal.isNull(x.getPrzVenSug(), BigDecimal.ZERO))
- .setPerc1(BigDecimal.ZERO)
- .setPerc2(BigDecimal.ZERO)
- .setPerc3(BigDecimal.ZERO)
- .setPerc4(BigDecimal.ZERO)
- .setPercOneri(UtilityBigDecimal.isNull(x.getPercOneri(), BigDecimal.ZERO))
- .setValOneri(UtilityBigDecimal.isNull(x.getValOneri(), BigDecimal.ZERO))
- .setPercPromo(UtilityBigDecimal.isNull(x.getPercPromo(), BigDecimal.ZERO))
- .setValPromo(UtilityBigDecimal.isNull(x.getValPromo(), BigDecimal.ZERO))
- );
-
-
List>> listini =
Stream.of(righeListino)
.groupBy(
@@ -381,14 +338,20 @@ public class ImportListiniAcquistoApuliaCarrefourService {
for (Map.Entry> listino : listini) {
AtbListData atbListData = listino.getKey();
atbListData.setMtbLisaData(listino.getValue());
- UtilityEntity.throwEntityException(entityProcessor.processEntity(atbListData, multiDBTransactionManager));
+ entityProcessor.processEntity(atbListData, multiDBTransactionManager);
+ try{
+ UtilityEntity.throwEntityException(atbListData);
+ entityRet.add(atbListData);
+ } catch (Exception e ){
+ AnomalieDTO.error(e);
+ }
}
} else {
throw new Exception("Non ci sono listini da aggiornare");
}
- if (atbListLogImport != null)
- UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(atbListLogImport, multiDBTransactionManager, false));
+// if (atbListLogImport != null)
+// UtilityEntity.throwEntitiesException(entityProcessor.processEntityList(atbListLogImport, multiDBTransactionManager, false));
logger.info("Importazione " + type + " - " + format + " terminata");
@@ -400,8 +363,10 @@ public class ImportListiniAcquistoApuliaCarrefourService {
final String tableListRif = "apuliac_listino_rif_csv";
final String tableArtRif = "apuliac_art_rif_csv";
final String tableAggPrz = "apuliac_agg_prz_csv";
+ final String tableAggPrzNetto = "apuliac_agg_prz_netto_csv";
String existHeader = setup.get("EXIST_HEADER");
+ boolean importPrezzoNetto = UtilityHashMap.getValueIfExists(setup, "PREZZO_NETTO", "S").equalsIgnoreCase("S");
BigDecimal percMaggPrzBase = BigDecimal.ZERO;
if (!UtilityString.isNullOrEmpty(setup.get("PERC_MAGG_PRZ_BASE"))) {
percMaggPrzBase = new BigDecimal(setup.get("PERC_MAGG_PRZ_BASE"));
@@ -425,22 +390,31 @@ public class ImportListiniAcquistoApuliaCarrefourService {
for (int i = 0; i < elencoFile.length; i++) {
String fileName = elencoFile[i];
- if ("LIS".equals(UtilityString.left(elencoFile[i], 3).toUpperCase())) {
- tableName = tableListRif;
- } else if ("AGG".equals(UtilityString.left(elencoFile[i], 3).toUpperCase())) {
- tableName = tableAggPrz;
- } else if ("ARF".equals(UtilityString.left(elencoFile[i], 3).toUpperCase())) {
- tableName = tableArtRif;
+ String fileNamePart = UtilityString.left(elencoFile[i], 3).toUpperCase();
+
+ switch (fileNamePart) {
+ case "LIS":
+ tableName = tableListRif;
+ break;
+
+ case "ARF":
+ tableName = tableArtRif;
+ break;
+ case "AGG":
+ tableName = tableAggPrz;
+ if (!importPrezzoNetto && fileName.equalsIgnoreCase("AGGLN"))
+ tableName = tableAggPrzNetto;
+ break;
}
if (!UtilityDB.existDatabaseObject(conn, tableName, TypeDbObject.TABLE)) {
- if (tableName.compareTo(tableArtRif) == 0) {
+ if (tableName.equalsIgnoreCase(tableArtRif)) {
sql =
"CREATE TABLE " + tableName
+ "(cod_art_for varchar(80),"
+ " cod_art_prod varchar(80),"
+ " cod_forn varchar(80))";
- } else if (tableName.compareTo(tableAggPrz) == 0 || tableName.compareTo(tableListRif) == 0) {
+ } else {
sql =
"CREATE TABLE " + tableName
+ "(cod_art_for varchar(80),"
@@ -575,103 +549,133 @@ public class ImportListiniAcquistoApuliaCarrefourService {
ps.executeUpdate();
ps.close();
+ String queryPremi =
+ "LEFT OUTER JOIN (SELECT DISTINCT cod_art_for,\n" +
+ " cod_forn,\n" +
+ " data_prz_acq,\n" +
+ " CAST(REPLACE(prz_acq, ',', '.') AS NUMERIC(20, 5)) AS prz_acq_netto\n" +
+ " FROM apuliac_agg_prz_netto_csv) premi ON\n" +
+ " tabp.cod_art_for = premi.cod_art_for AND\n" +
+ " tabp.cod_forn = premi.cod_forn AND\n" +
+ " tabp.data_prz_acq = premi.data_prz_acq ";
+
+ String columnPrzAcq = "CAST(REPLACE(tabp.prz_acq, ',', '.') AS NUMERIC(20, 5)) ";
+ String columnValPremio = "CAST(0 AS NUMERIC)";
+ if (!importPrezzoNetto)
+ columnValPremio = "case when premi.cod_art_for IS not null then premi.prz_acq_netto - [COLUMN_PRZ_ACQ]";
+
sql =
- "INSERT INTO mtb_lisa_apulia_succ "
- + "SELECT "
- + "cod_art_for, "
- + "DESCRIZIONE, "
- + "barcode, "
- + "settore, "
- + "famiglia, "
- + "cod_forn, "
- + "null as cod_divisione_forn, "
- + "null as descrizione_divisione_forn, "
- + "rag_soc_forn, "
- + "partita_iva_forn, "
- + "(SELECT ISNULL(mtb_lisa_unt_mis.unt_mis_acq, unt_mis_acq) "
- + "FROM mtb_lisa_unt_mis "
- + "WHERE mtb_lisa_unt_mis.cod_alis = tmp.cod_alis AND "
- + " mtb_lisa_unt_mis.unt_mis_forn = tmp.unt_mis_acq) as unt_mis_acq, "
- + "(SELECT ISNULL(mtb_lisa_unt_mis.unt_mis_acq, unt_mis_acq2) "
- + " FROM mtb_lisa_unt_mis "
- + " WHERE mtb_lisa_unt_mis.cod_alis = tmp.cod_alis AND "
- + "mtb_lisa_unt_mis.unt_mis_forn = tmp.unt_mis_acq2) as unt_mis_acq2, "
- + "QTA_CNF, "
- + "COLLI_X_PEDANA, "
- + "linea,"
- + "null as QTA_DISP, "
- + "null as anno_contratto, "
- + "null as perc_contratto, "
- + "prz_acq, "
- + "IsNull(data_prz_acq, cast(getDAte() as date)) as data_prz_acq, "
- + "null, "
- + "null, "
- + "val_unt_listino_l6, "
- + "data_listino_l6, "
- + "val_unt_listino_r5, "
- + "data_listino_r5, "
- + "cod_alis, "
- + "cod_art_apulia, "
- + "flag_list_rif, "
- + "cod_aliq, "
- + "prz_base_prop "
- + "FROM (SELECT "
- + "CASE WHEN tabP.linea = 'RIF' THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod "
- + " ELSE tabP.COD_ART_FOR END AS cod_art_for, "
- + "LEFT(tabP.descrizione, 80) AS DESCRIZIONE, "
- + "CASE WHEN LEN(barcode) = 0 THEN NULL ELSE barcode END AS barcode, "
- + "tabP.settore, "
- + "tabP.famiglia, "
- + "tabP.cod_forn, "
- + "LEFT(tabP.rag_soc_forn, 40) AS rag_soc_forn, "
- + "tabP.partita_iva_forn, "
- + "tabP.unt_mis_acq, "
- + "tabP.unt_mis_acq2, "
- + "CONVERT(numeric(20,5), REPLACE(tabP.qta_cnf, ',', '.') ) AS QTA_CNF, "
- + "CONVERT(numeric(20,5), REPLACE(tabP.colli_x_pedane, ',', '.') ) AS COLLI_X_PEDANA, "
- + "TabP.linea, "
- + "CONVERT(numeric(20,5), REPLACE(tabP.prz_acq, ',', '.') ) AS prz_acq, "
- + "CASE "
- + " WHEN ISDATE(data_prz_acq) = 1 THEN CAST(LEFT(data_prz_acq, 4) + '-' + SUBSTRING(data_prz_acq, 5, 2) + '-' + RIGHT(data_prz_acq, 2) AS datetime) "
- + " ELSE NULL "
- + "END AS data_prz_acq, "
- + "CAST(REPLACE(tabP.val_unt_listino_l6, ',', '.') AS numeric) AS val_unt_listino_l6, "
- + "CASE "
- + " WHEN ISDATE(data_listino_l6) = 1 THEN CAST(LEFT(data_listino_l6, 4) + '-' + SUBSTRING(data_listino_l6, 5, 2) + '-' + RIGHT(data_listino_l6, 2) AS datetime) "
- + " ELSE NULL "
- + "END AS data_listino_l6, "
- + "CAST(REPLACE(tabP.val_unt_listino_r5, ',', '.') AS numeric) AS val_unt_listino_r5, "
- + "CASE "
- + " WHEN ISDATE(data_listino_r5) = 1 THEN CAST(LEFT(data_listino_r5, 4) + '-' + SUBSTRING(data_listino_r5, 5, 2) + '-' + RIGHT(data_listino_r5, 2) AS datetime) "
- + " ELSE NULL "
- + "END AS data_listino_r5, "
- + "atb_list_apulia.cod_alis AS cod_alis, "
- + "tabP.COD_ART_FOR AS cod_art_apulia, "
- + "atb_list_apulia.flag_list_rif AS flag_list_rif, "
- + "tabP.cod_iva AS cod_aliq, "
- + "ROW_NUMBER() OVER (PARTITION BY CASE " +
- " WHEN tabP.linea = 'RIF' THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod " +
- " ELSE tabP.COD_ART_FOR " +
- " END, atb_list_apulia.cod_alis, tabP.data_prz_acq " +
- " ORDER BY CASE " +
- " WHEN tabP.linea = 'RIF' THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod " +
- " ELSE tabP.COD_ART_FOR " +
- " END, atb_list_apulia.cod_alis, barcode, data_prz_acq ) as conta_art, "
- + " case when Cast(" + UtilityDB.valueToString(percMaggPrzBase) + " as numeric) = 0 THEN 0 ELSE Convert(numeric(20,5), REPLACE(tabP.prz_acq, ',', '.') )* ( 1 + Cast(" + UtilityDB.valueToString(percMaggPrzBase) + " as numeric)/100) END AS prz_base_prop "
- + "FROM " + tableAggPrz + " tabP INNER JOIN atb_list_apulia ON "
- + "atb_list_apulia.linea = tabP.linea AND "
- + "atb_list_apulia.part_iva_forn = tabP.partita_iva_forn AND "
- + "atb_list_apulia.settore = tabP.settore "
- + "LEFT OUTER JOIN mtb_lisa_apulia_codici_rifatt ON "
- + "tabP.cod_art_for = mtb_lisa_apulia_codici_rifatt.cod_art_for AND "
- + "tabP.cod_forn = mtb_lisa_apulia_codici_rifatt.cod_forn "
- + " OUTER APPLY (SELECT prz_acq " +
- " FROM apuliac_listino_rif_csv " +
- " WHERE apuliac_listino_rif_csv.flag_validita_prezzo = 0 AND " +
- " tabP.cod_art_for = apuliac_listino_rif_csv.cod_art_for AND " +
- " tabP.barcode = apuliac_listino_rif_csv.barcode AND " +
- " tabP.linea = apuliac_listino_rif_csv.linea ) przAcq2 ) TMP "
- + "WHERE cod_art_for IS NOT NULL AND conta_art = 1";
+ "INSERT INTO mtb_lisa_apulia_succ\n" +
+ "SELECT cod_art_for,\n" +
+ " descrizione,\n" +
+ " barcode,\n" +
+ " settore,\n" +
+ " famiglia,\n" +
+ " cod_forn,\n" +
+ " NULL AS cod_divisione_forn,\n" +
+ " NULL AS descrizione_divisione_forn,\n" +
+ " rag_soc_forn,\n" +
+ " partita_iva_forn,\n" +
+ " (SELECT ISNULL(mtb_lisa_unt_mis.unt_mis_acq, unt_mis_acq)\n" +
+ " FROM mtb_lisa_unt_mis\n" +
+ " WHERE mtb_lisa_unt_mis.cod_alis = tmp.cod_alis\n" +
+ " AND mtb_lisa_unt_mis.unt_mis_forn = tmp.unt_mis_acq) AS unt_mis_acq,\n" +
+ " (SELECT ISNULL(mtb_lisa_unt_mis.unt_mis_acq, unt_mis_acq2)\n" +
+ " FROM mtb_lisa_unt_mis\n" +
+ " WHERE mtb_lisa_unt_mis.cod_alis = tmp.cod_alis\n" +
+ " AND mtb_lisa_unt_mis.unt_mis_forn = tmp.unt_mis_acq2) AS unt_mis_acq2,\n" +
+ " qta_cnf,\n" +
+ " colli_x_pedana,\n" +
+ " linea,\n" +
+ " NULL AS qta_disp,\n" +
+ " NULL AS anno_contratto,\n" +
+ " NULL AS perc_contratto,\n" +
+ " prz_acq,\n" +
+ " ISNULL(data_prz_acq, CAST(GETDATE() AS DATE)) AS data_prz_acq,\n" +
+ " NULL,\n" +
+ " NULL,\n" +
+ " val_unt_listino_l6,\n" +
+ " data_listino_l6,\n" +
+ " val_unt_listino_r5,\n" +
+ " data_listino_r5,\n" +
+ " cod_alis,\n" +
+ " cod_art_apulia,\n" +
+ " flag_list_rif,\n" +
+ " cod_aliq,\n" +
+ " prz_base_prop,\n" +
+ " perc_premio,\n" +
+ " val_premio\n" +
+ "FROM (SELECT CASE\n" +
+ " WHEN tabp.linea = 'RIF' THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod\n" +
+ " ELSE tabp.cod_art_for END AS cod_art_for,\n" +
+ " LEFT(tabp.descrizione, 80) AS descrizione,\n" +
+ " CASE WHEN LEN(barcode) = 0 THEN NULL ELSE barcode END AS barcode,\n" +
+ " tabp.settore,\n" +
+ " tabp.famiglia,\n" +
+ " tabp.cod_forn,\n" +
+ " LEFT(tabp.rag_soc_forn, 40) AS rag_soc_forn,\n" +
+ " tabp.partita_iva_forn,\n" +
+ " tabp.unt_mis_acq,\n" +
+ " tabp.unt_mis_acq2,\n" +
+ " CONVERT(NUMERIC(20, 5), REPLACE(tabp.qta_cnf, ',', '.')) AS qta_cnf,\n" +
+ " CONVERT(NUMERIC(20, 5), REPLACE(tabp.colli_x_pedane, ',', '.')) AS colli_x_pedana,\n" +
+ " tabp.linea,\n" +
+ " [COLUMN_PRZ_ACQ] AS prz_acq,\n" +
+ " CASE\n" +
+ " WHEN ISDATE(data_prz_acq) = 1 THEN CAST(LEFT(data_prz_acq, 4) + '-' + SUBSTRING(data_prz_acq, 5, 2) +\n" +
+ " '-' + RIGHT(data_prz_acq, 2) AS DATETIME)\n" +
+ " ELSE NULL END AS data_prz_acq,\n" +
+ " CAST(REPLACE(tabp.val_unt_listino_l6, ',', '.') AS NUMERIC) AS val_unt_listino_l6,\n" +
+ " CASE\n" +
+ " WHEN ISDATE(data_listino_l6) = 1 THEN CAST(LEFT(data_listino_l6, 4) + '-' +\n" +
+ " SUBSTRING(data_listino_l6, 5, 2) + '-' +\n" +
+ " RIGHT(data_listino_l6, 2) AS DATETIME)\n" +
+ " ELSE NULL END AS data_listino_l6,\n" +
+ " CAST(REPLACE(tabp.val_unt_listino_r5, ',', '.') AS NUMERIC) AS val_unt_listino_r5,\n" +
+ " CASE\n" +
+ " WHEN ISDATE(data_listino_r5) = 1 THEN CAST(LEFT(data_listino_r5, 4) + '-' +\n" +
+ " SUBSTRING(data_listino_r5, 5, 2) + '-' +\n" +
+ " RIGHT(data_listino_r5, 2) AS DATETIME)\n" +
+ " ELSE NULL END AS data_listino_r5,\n" +
+ " atb_list_apulia.cod_alis AS cod_alis,\n" +
+ " tabp.cod_art_for AS cod_art_apulia,\n" +
+ " atb_list_apulia.flag_list_rif AS flag_list_rif,\n" +
+ " tabp.cod_iva AS cod_aliq,\n" +
+ " ROW_NUMBER() OVER (PARTITION BY CASE\n" +
+ " WHEN tabp.linea = 'RIF' THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod\n" +
+ " ELSE tabp.cod_art_for END, atb_list_apulia.cod_alis, tabp.data_prz_acq ORDER BY CASE\n" +
+ " WHEN tabp.linea = 'RIF'\n" +
+ " THEN mtb_lisa_apulia_codici_rifatt.cod_art_prod\n" +
+ " ELSE tabp.cod_art_for END, atb_list_apulia.cod_alis, barcode, data_prz_acq ) AS conta_art,\n" +
+ " CASE\n" +
+ " WHEN [MAGG_PRZ] = 0 THEN 0\n" +
+ " ELSE [COLUMN_PRZ_ACQ] * (1 + [MAGG_PRZ] / 100) END AS prz_base_prop,\n" +
+ " CAST(0 AS NUMERIC) AS perc_premio,\n" +
+ " [COLUMN_VAL_PREMIO] AS val_premio\n" +
+ " FROM [TABLE_NAME] tabp\n" +
+ " INNER JOIN atb_list_apulia ON atb_list_apulia.linea = tabp.linea AND\n" +
+ " atb_list_apulia.part_iva_forn = tabp.partita_iva_forn AND\n" +
+ " atb_list_apulia.settore = tabp.settore\n" +
+ " LEFT OUTER JOIN mtb_lisa_apulia_codici_rifatt\n" +
+ " ON tabp.cod_art_for = mtb_lisa_apulia_codici_rifatt.cod_art_for AND\n" +
+ " tabp.cod_forn = mtb_lisa_apulia_codici_rifatt.cod_forn\n" +
+ (importPrezzoNetto?"":queryPremi) +
+ " OUTER APPLY (SELECT prz_acq\n" +
+ " FROM apuliac_listino_rif_csv\n" +
+ " WHERE apuliac_listino_rif_csv.flag_validita_prezzo = 0\n" +
+ " AND tabp.cod_art_for = apuliac_listino_rif_csv.cod_art_for\n" +
+ " AND tabp.barcode = apuliac_listino_rif_csv.barcode\n" +
+ " AND tabp.linea = apuliac_listino_rif_csv.linea) przacq2) tmp\n" +
+ "WHERE cod_art_for IS NOT NULL\n" +
+ " AND conta_art = 1";
+
+ sql =
+ sql
+ .replace("[MAGG_PRZ]", UtilityString.bigDecimalToString(percMaggPrzBase, "##0.00####").replace(",","."))
+ .replace("[TABLE_NAME]", tableAggPrz)
+ .replace("[COLUMN_VAL_PREMIO]", columnValPremio)
+ .replace("[COLUMN_PRZ_ACQ]", columnPrzAcq);
+
ps = conn.prepareStatement(sql);
ps.executeUpdate();