Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
2024-03-15 12:43:09 +01:00
9 changed files with 585 additions and 372 deletions

View File

@@ -101,8 +101,7 @@
<element id="library" level="project" name="Maven: org.apache.ant:ant:1.7.1" />
<element id="library" level="project" name="Maven: org.apache.ant:ant-launcher:1.7.1" />
<element id="library" level="project" name="Maven: it.integry:utility-barcode:1.1" />
<element id="library" level="project" name="Maven: it.integry:utilityImage:1.0" />
<element id="library" level="project" name="Maven: it.integry:Utility:1.4" />
<element id="library" level="project" name="Maven: it.integry:Utility:1.5" />
<element id="library" level="project" name="Maven: org.apache.pdfbox:pdfbox:2.0.22" />
<element id="library" level="project" name="Maven: org.apache.pdfbox:fontbox:2.0.22" />
<element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.4" />
@@ -727,7 +726,7 @@
</component>
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat " type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat" ALTERNATIVE_JRE_ENABLED="true" ALTERNATIVE_JRE_PATH="1.8" show_console_on_std_err="true" show_console_on_std_out="true">
<option name="COMMON_VM_ARGUMENTS" value="-Xms512m -Xmx2048m" />
<option name="COMMON_VM_ARGUMENTS" value="-Xms256m -Xmx1024m -XX:PermSize=1024m" />
<deployment>
<artifact name="ems-engine:war exploded">
<settings>
@@ -873,7 +872,7 @@
<method v="2" />
</configuration>
<configuration default="false" name="Tomcat (FAST)" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat" ALTERNATIVE_JRE_ENABLED="false" ALTERNATIVE_JRE_PATH="1.8" show_console_on_std_err="true" show_console_on_std_out="true">
<option name="COMMON_VM_ARGUMENTS" value="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512m -Xmx2048m" />
<option name="COMMON_VM_ARGUMENTS" value="-DDISABLE_DROOLS_COMPILE=TRUE -Xms256m -Xmx1024m -XX:PermSize=1024m" />
<deployment>
<artifact name="ems-engine:war exploded">
<settings>
@@ -943,7 +942,7 @@
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="JProfiler">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
@@ -958,7 +957,7 @@
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile ">
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
@@ -2407,16 +2406,16 @@
<root url="jar://$MAVEN_REPOSITORY$/it/integry/font/Tahoma/1.1/Tahoma-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: it.integry:Utility:1.4" type="java-imported" external-system-id="Maven">
<properties groupId="it.integry" artifactId="Utility" version="1.4" />
<library name="Maven: it.integry:Utility:1.5" type="java-imported" external-system-id="Maven">
<properties groupId="it.integry" artifactId="Utility" version="1.5" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.4/Utility-1.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.5/Utility-1.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.4/Utility-1.4-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.5/Utility-1.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.4/Utility-1.4-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/it/integry/Utility/1.5/Utility-1.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: it.integry:utility-barcode:1.1" type="java-imported" external-system-id="Maven">
@@ -2431,18 +2430,6 @@
<root url="jar://$MAVEN_REPOSITORY$/it/integry/utility-barcode/1.1/utility-barcode-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: it.integry:utilityImage:1.0" type="java-imported" external-system-id="Maven">
<properties groupId="it.integry" artifactId="utilityImage" version="1.0" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/utilityImage/1.0/utilityImage-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/utilityImage/1.0/utilityImage-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/it/integry/utilityImage/1.0/utilityImage-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.activation:activation:1.1.1" type="java-imported" external-system-id="Maven">
<properties groupId="javax.activation" artifactId="activation" version="1.1.1" />
<CLASSES>

View File

@@ -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 {
}

View File

@@ -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{
}
}

View File

@@ -400,16 +400,20 @@ public class UtilityDB {
}
public static void dropTmpView(Connection conn, List<String> 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+"')";

View File

@@ -795,7 +795,8 @@ public class SteUPService {
if (UtilityString.isNullOrEmpty(activityTypeId)) {
//se non aggiornano l'app il tipo attività non viene inviato e quindi diamo per scontato che si tratti di verifica volantino
//come funzionava prima
activityTypeId = tipoAttivitaVerificaVolantino;
return new ArrayList<>();
//activityTypeId = tipoAttivitaVerificaVolantino;
}
if (!UtilityString.isNullOrEmpty(codCmac)) {
@@ -815,6 +816,7 @@ public class SteUPService {
"ORDER BY mtb_aart.descrizione";
sql = UtilityDB.addwhereCond(sql, whereCond, false);
} else {
/*
sql = "SELECT DISTINCT mtb_aart.cod_mart, " +
" mtb_aart.descrizione, " +
" mtb_aart.bar_code AS barcode," +
@@ -822,6 +824,8 @@ public class SteUPService {
"FROM dbo.steup_getAssortimento(" + UtilityDB.valueToString(codMdep) + ", " + UtilityDB.valueToString(codJfas) + " ) mtb_aart" +
" WHERE mtb_aart.plu IS NOT NULL " +
"ORDER BY mtb_aart.descrizione";
*/
return new ArrayList<>();
}
return UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);

View File

@@ -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");
}

View File

@@ -27,7 +27,7 @@ public class ListiniAcquistoImporter extends BaseEntityImporter<List<EntityBase>
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);

View File

@@ -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;
}
}

View File

@@ -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<EntityBase> importListino(ImportRequestDTO param, String type, String format) throws Exception {
public List<EntityBase> importListino(ImportRequestDTO param, String type, String format, List<AnomalieDTO> anomalie) throws Exception {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
List<EntityBase> 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<ListinoApuliaCarrefourDTO> 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<MtbLisaData> righeListino = new ArrayList<>();
List<MtbLisaData> mtbLisaData = new ResultSetMapper()
.mapQuerySetToList(conn, sql, MtbLisaData.class, OperationType.INSERT);
if (mtbLisaData != null) {
righeListino.addAll(mtbLisaData);
}
List<MtbLisaData> 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> 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<String> 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<String> 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<HashMap<String, Object>> datiLisa = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
for(HashMap<String, Object> l: datiLisa) {
String codArtForDb = UtilityHashMap.getValueIfExists(l, "cod_art_for");
BigDecimal rapConvDb = UtilityHashMap.getValueIfExists(l, "rap_conv");
List<MtbLisaData> 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<HashMap<String, Object>> datiLisa = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
for(HashMap<String, Object> l: datiLisa) {
String codArtForDb = UtilityHashMap.getValueIfExists(l, "cod_art_for");
BigDecimal rapConvDb = UtilityHashMap.getValueIfExists(l, "rap_conv");
List<MtbLisaData> 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> 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<Map.Entry<AtbListData, List<MtbLisaData>>> listini =
Stream.of(righeListino)
.groupBy(
@@ -381,14 +338,20 @@ public class ImportListiniAcquistoApuliaCarrefourService {
for (Map.Entry<AtbListData, List<MtbLisaData>> 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();