Merge branch 'develop' into feature/RefactoringGestioneColli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts: # ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java
This commit is contained in:
@@ -74,6 +74,7 @@ public class CsvMapper<T> {
|
||||
public List<T> deserialize(String csv, Class<T> dtoClass, String splitChar) throws Exception {
|
||||
List<T> outputList = null;
|
||||
String[] headers = null;
|
||||
Integer rows = 0;
|
||||
|
||||
String delimiter = UtilityString.identifyLineDelimiter(csv);
|
||||
ByteBuffer byteBuffer = ByteBuffer.wrap(csv.getBytes());
|
||||
@@ -83,6 +84,7 @@ public class CsvMapper<T> {
|
||||
for (int i = 0; i < byteBuffer.capacity(); i++) {
|
||||
line.append((char) byteBuffer.get());
|
||||
if (line.toString().endsWith(delimiter)) {
|
||||
rows++;
|
||||
if (firstLine) {
|
||||
firstLine = false;
|
||||
headers = line.toString().replace(delimiter, "").split(splitChar);
|
||||
@@ -105,37 +107,44 @@ public class CsvMapper<T> {
|
||||
line = new StringBuilder();
|
||||
continue;
|
||||
}
|
||||
String[] datas = line.toString().replace(delimiter, "").split(splitChar);
|
||||
T bean = (T) dtoClass.newInstance();
|
||||
for (int j = 0; j < datas.length; j++) {
|
||||
String header = headers[j].trim();
|
||||
if (header.compareTo("") != 0) {
|
||||
Field field = map.get(header.toLowerCase());
|
||||
|
||||
if (field != null) {
|
||||
try {
|
||||
String[] datas = line.toString().replace(delimiter, "").split(splitChar);
|
||||
T bean = (T) dtoClass.newInstance();
|
||||
for (int j = 0; j < datas.length; j++) {
|
||||
String header = headers[j].trim();
|
||||
if (header.compareTo("") != 0) {
|
||||
Field field = map.get(header.toLowerCase());
|
||||
|
||||
DtoField dtoField = field.getAnnotation(DtoField.class);
|
||||
if (field != null) {
|
||||
|
||||
field.setAccessible(true);
|
||||
DtoField dtoField = field.getAnnotation(DtoField.class);
|
||||
|
||||
field.setAccessible(true);
|
||||
|
||||
Object columnValue;
|
||||
if (field.getGenericType() != String.class && UtilityString.isNullOrEmpty(datas[j].trim())) {
|
||||
columnValue = null;
|
||||
} else {
|
||||
columnValue = datas[j].trim();
|
||||
}
|
||||
|
||||
Object o = SqlFieldHolder.applyConvert(columnValue, field.getGenericType());
|
||||
field.set(bean, o);
|
||||
|
||||
Object columnValue;
|
||||
if (field.getGenericType() != String.class && UtilityString.isNullOrEmpty(datas[j].trim())) {
|
||||
columnValue = null;
|
||||
} else {
|
||||
columnValue = datas[j].trim();
|
||||
}
|
||||
|
||||
Object o = SqlFieldHolder.applyConvert(columnValue, field.getGenericType());
|
||||
field.set(bean, o);
|
||||
|
||||
}
|
||||
}
|
||||
line = new StringBuilder();
|
||||
if (outputList == null) {
|
||||
outputList = new ArrayList<T>();
|
||||
}
|
||||
outputList.add(bean);
|
||||
|
||||
} catch(Exception e) {
|
||||
throw new Exception("ERRORE DI SINTASSI SU RIGA " + rows);
|
||||
}
|
||||
line = new StringBuilder();
|
||||
if (outputList == null) {
|
||||
outputList = new ArrayList<T>();
|
||||
}
|
||||
outputList.add(bean);
|
||||
|
||||
}
|
||||
}
|
||||
byteBuffer.clear();
|
||||
|
||||
@@ -18,7 +18,8 @@ public enum IntegryCustomer {
|
||||
IntegryCustomerDB.Auricchio_Ind05,
|
||||
IntegryCustomerDB.Auricchio_AuricchioSons),
|
||||
Biolevante(IntegryCustomerDB.Biolevante_Biolevante,
|
||||
IntegryCustomerDB.Biolevante_BiolevanteStorico),
|
||||
IntegryCustomerDB.Biolevante_BiolevanteStorico,
|
||||
IntegryCustomerDB.Biolevante_TenutaSanMartino),
|
||||
Carelli(IntegryCustomerDB.Carelli_Carelli,
|
||||
IntegryCustomerDB.Carelli_GestFood,
|
||||
IntegryCustomerDB.Carelli_Chiuso,
|
||||
@@ -68,7 +69,8 @@ public enum IntegryCustomer {
|
||||
Frudis(IntegryCustomerDB.Frudis_Frudis),
|
||||
Gramm(IntegryCustomerDB.Gramm_Gramm,
|
||||
IntegryCustomerDB.Gramm_PrimeOlive,
|
||||
IntegryCustomerDB.Gramm_ProveStage),
|
||||
IntegryCustomerDB.Gramm_ProveStage,
|
||||
IntegryCustomerDB.Gramm_2MHolding),
|
||||
Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica),
|
||||
Igood(IntegryCustomerDB.Igood_Aida,
|
||||
IntegryCustomerDB.Igood_Igood,
|
||||
|
||||
@@ -22,6 +22,7 @@ public enum IntegryCustomerDB {
|
||||
|
||||
Biolevante_Biolevante("biolevante_peppe"),
|
||||
Biolevante_BiolevanteStorico("biolevante_storico"),
|
||||
Biolevante_TenutaSanMartino("tenutasanmartino"),
|
||||
|
||||
|
||||
Carelli_Carelli("carelli"),
|
||||
@@ -90,6 +91,7 @@ public enum IntegryCustomerDB {
|
||||
Gramm_Gramm("gramm_peppe"),
|
||||
Gramm_PrimeOlive("primeolive"),
|
||||
Gramm_ProveStage("grammprovestage"),
|
||||
Gramm_2MHolding("2M_HOLDING"),
|
||||
|
||||
|
||||
Idrotecnica_Idrotecnica("idrotecnica"),
|
||||
|
||||
@@ -10,8 +10,6 @@ public class Migration_20250522150750 extends BaseMigration implements Migration
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (isDMS()) return;
|
||||
|
||||
if (!existsTable( "stb_multiplier")) {
|
||||
executeStatement( "CREATE TABLE stb_multiplier\n" +
|
||||
"(\n" +
|
||||
@@ -21,6 +19,8 @@ public class Migration_20250522150750 extends BaseMigration implements Migration
|
||||
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (-1)");
|
||||
}
|
||||
|
||||
if (isDMS()) return;
|
||||
|
||||
createOrUpdateView("mvw_mtb_colr_storico_mov", "create view mvw_mtb_colr_storico_mov as \n" +
|
||||
"SELECT IIF(moltiplicatore = -1, mtb_colr.barcode_ul_out,\n" +
|
||||
" mtb_colr.barcode_ul_in) AS barcode_ul,\n" +
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250609130610 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createSetup("w_mgiac_part_disp", "CB_AZZERAGIAC", "VISIBLE", "N",
|
||||
"Impostare S/N per visualizzare o meno il pulsante Azzera Giacenza", false, null, false, false,
|
||||
false, false, false, null, false, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomerDB;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
import it.integry.ems_model.utility.dto.IndexTableDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Migration_20250609144558 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
executeStatement("alter table mtb_shelf_life_tolerance add cod_mgrp varchar(5);\n",
|
||||
"alter table mtb_shelf_life_tolerance add constraint fk_mtb_shelf_life_tolerance_mtb_grup FOREIGN KEY (cod_mgrp) REFERENCES mtb_grup\n");
|
||||
|
||||
if (isCustomerDb(IntegryCustomerDB.Carelli_Format)){
|
||||
executeStatement("update mtb_shelf_life_tolerance set cod_mgrp = '02'\n",
|
||||
"insert into mtb_shelf_life_tolerance (shelf_life_min, shelf_life_max, rate_to_tolerance, cod_mgrp)\n" +
|
||||
"select mtb_shelf_life_tolerance.shelf_life_min, \n" +
|
||||
"mtb_shelf_life_tolerance.shelf_life_max, \n" +
|
||||
"mtb_shelf_life_tolerance.rate_to_tolerance, \n" +
|
||||
"mtb_grup.cod_mgrp\n" +
|
||||
"from mtb_grup cross apply mtb_shelf_life_tolerance\n" +
|
||||
"where tipo_mgrp is null\n" +
|
||||
"and exists (select * from mtb_aart where mtb_aart.cod_mgrp = mtb_grup.cod_mgrp and mtb_aart.gg_scad_partita >0)\n" +
|
||||
"and mtb_grup.cod_mgrp not in (select cod_mgrp from mtb_shelf_life_tolerance)");
|
||||
}
|
||||
|
||||
executeStatement("alter table mtb_shelf_life_tolerance alter column cod_mgrp varchar(5) not null;");
|
||||
|
||||
List<IndexTableDTO.ColumnIndex> columnsIndex = new ArrayList<>();
|
||||
columnsIndex.add(new IndexTableDTO.ColumnIndex("cod_mgrp"));
|
||||
columnsIndex.add(new IndexTableDTO.ColumnIndex("shelf_life_min"));
|
||||
IndexTableDTO indexTableDTO = new IndexTableDTO()
|
||||
.setTableName("mtb_shelf_life_tolerance")
|
||||
.setIndexName("idx_mtb_shelf_life_tolerance_unique")
|
||||
.setColumnsIndex(columnsIndex)
|
||||
.setUnique(true)
|
||||
.setOverride(true);
|
||||
createIndex(indexTableDTO);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
import it.integry.ems_model.utility.Query;
|
||||
|
||||
public class Migration_20250609185006 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
String descrizione = "Questa setup indica i giorni di scadenza da controllore, è configurabile per tipo documento. Può contenere un numero oppure un json con questa struttura [{\"codMgrp\":\"02\",\"gg\":5}] per differenziare la setup per gruppo merceologico.";
|
||||
executeStatement(Query.format("update stb_gest_setup SET description = %S where gest_name = %S AND section = %S AND KEY_SECTION = %S",
|
||||
descrizione, "PVM","DOC_INTERNI","DAYS_TO_EXP"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.IntegryCustomer;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250610105414 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
createSetup("WINACCESS", "SETUP", "FILTRA_REPARTI_LAV", "N",
|
||||
"filtra i reparti disponibili controllando il reparto assegnato all'utente", false, "SI_NO", false, false,
|
||||
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
|
||||
if (isCustomer(IntegryCustomer.Smetar)) {
|
||||
updateSetupValue("WINACCESS", "SETUP", "FILTRA_REPARTI_LAV", "S");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250610125552 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
enableSaveToRest("mdepo");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250610152544 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (isDMS()) return;
|
||||
|
||||
createOrUpdateView("[dbo].[vvw_sit_consegneXcommessa]", "CREATE VIEW [dbo].[vvw_sit_consegneXcommessa] as \n" +
|
||||
"SELECT \n" +
|
||||
" ordv.gestione AS gestione,\n" +
|
||||
" ordv.cod_jcom AS cod_jcom, \n" +
|
||||
" ordv.data_ord AS data_ord,\n" +
|
||||
" ordv.num_ord AS num_ord,\n" +
|
||||
" ordv.rif_ord AS rif_ord,\n" +
|
||||
" ordv.id_viaggio AS id_viaggio,\n" +
|
||||
" ordv.cod_mart AS cod_mart,\n" +
|
||||
" ordv.cod_alis AS cod_alis,\n" +
|
||||
" ISNULL(ordv.cod_art_for, ordv.cod_mart) AS cod_art_for,\n" +
|
||||
" ISNULL(ordv.descrizione_estesa, ordv.descrizione) AS descrizione,\n" +
|
||||
" SUM(ordv.qta_ord) AS qta_ord,\n" +
|
||||
" ISNULL(orda.qta_da_evadere, 0) AS qta_acq,\n" +
|
||||
" CASE WHEN ISNULL(orda.qta_da_evadere, 0) = 0 THEN NULL ELSE MAX(orda.data_cons) END AS data_cons_acq,\n" +
|
||||
" ISNULL(colv.qta_col, 0) AS qta_riservata,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(mtb_part.qta_esistente, 0) < 0 THEN SUM(ISNULL(cola.qta_col, 0))\n" +
|
||||
" ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END AS qta_disp,\n" +
|
||||
" SUM(ordv.qta_evasa) AS qta_consegnata,\n" +
|
||||
" SUM(ordv.importoinevaso) AS importoinevaso,\n" +
|
||||
" SUM(ordv.importoinevasoivato) AS importoinevasoivato,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= SUM(ISNULL(colv.qta_col, 0)) + (CASE\n" +
|
||||
" WHEN ISNULL(mtb_part.qta_esistente, 0) < 0\n" +
|
||||
" THEN SUM(ISNULL(cola.qta_col, 0))\n" +
|
||||
" ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END)\n" +
|
||||
" THEN SUM(ordv.importoinevaso)\n" +
|
||||
" ELSE (SUM(ISNULL(colv.qta_col, 0)) + (CASE\n" +
|
||||
" WHEN SUM(ISNULL(cola.qta_col, 0)) +\n" +
|
||||
" ISNULL(mtb_part.qta_esistente, 0) > 0\n" +
|
||||
" THEN SUM(ISNULL(cola.qta_col, 0)) + ISNULL(mtb_part.qta_esistente, 0)\n" +
|
||||
" ELSE 0 END)) * SUM(ordv.importoinevaso) /\n" +
|
||||
" (SUM(ordv.qta_ord) - SUM(ordv.qta_evasa)) END AS importoevadibile,\n" +
|
||||
" ordv.unt_ord AS unt_ord,\n" +
|
||||
" ordv.term_cons,\n" +
|
||||
" jtb_comt.descrizione AS commessa,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= 0 THEN 'CONSEGNATO'\n" +
|
||||
" WHEN SUM(ordv.qta_ord - ordv.qta_evasa) <= SUM(ISNULL(colv.qta_col, 0)) + CASE\n" +
|
||||
" WHEN ISNULL(mtb_part.qta_esistente, 0) < 0\n" +
|
||||
" THEN SUM(ISNULL(cola.qta_col, 0))\n" +
|
||||
" ELSE ISNULL(mtb_part.qta_esistente, 0) + SUM(ISNULL(cola.qta_col, 0)) END\n" +
|
||||
" THEN 'DISPONIBILE'\n" +
|
||||
" ELSE 'NON DISPONIBILE' END AS statoriga,\n" +
|
||||
" SUM(ordv.importorigaord) AS importoriga,\n" +
|
||||
" ordv.data_cons AS data_cons_vend,\n" +
|
||||
" gtb_anag.rag_soc AS cliente,\n" +
|
||||
" ISNULL(vtb_dest.indirizzo, gtb_anag.indirizzo) AS indirizzo,\n" +
|
||||
" CASE WHEN vtb_dest.indirizzo IS NULL THEN gtb_anag.citta ELSE vtb_dest.citta END AS citta,\n" +
|
||||
" CASE\n" +
|
||||
" WHEN ISNULL(vtb_dest.destinatario, '') <> gtb_anag.rag_soc AND vtb_dest.destinatario IS NOT NULL\n" +
|
||||
" THEN vtb_dest.destinatario\n" +
|
||||
" ELSE NULL END AS destinatario,\n" +
|
||||
" ordv.cod_vage,\n" +
|
||||
" vtb_agen.rag_soc AS agente,\n" +
|
||||
" ordv.partita_mag,\n" +
|
||||
" orda.gestione_rif,\n" +
|
||||
" gtb_anag.cod_anag AS cod_anag,\n" +
|
||||
" ordv.num_ord_provv AS num_ord_provv,\n" +
|
||||
" ordv.flag_sospeso AS flag_sospeso,\n" +
|
||||
" MIN(ordv.pos_riga) AS pos_riga,\n" +
|
||||
" ordv.controllato_da AS controllato_da,\n" +
|
||||
" gtb_anag.e_mail AS e_mail,\n" +
|
||||
" ordv.data_ins_ord,\n" +
|
||||
" ordv.flag_evaso,\n" +
|
||||
" ordv.cod_paga,\n" +
|
||||
" ordv.descrizione_paga,\n" +
|
||||
" ordv.cod_vdes \n" +
|
||||
" \n" +
|
||||
"FROM gtb_anag,\n" +
|
||||
" (SELECT dtb_ordt.gestione,\n" +
|
||||
" cod_vage,\n" +
|
||||
" cod_anag,\n" +
|
||||
" cod_vdes,\n" +
|
||||
" term_cons,\n" +
|
||||
" dtb_ordr.unt_ord,\n" +
|
||||
" dtb_ordr.cod_jcom,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_alis,\n" +
|
||||
" dtb_ordr.cod_art_for,\n" +
|
||||
" dtb_ordt.data_ord,\n" +
|
||||
" dtb_ordt.num_ord,\n" +
|
||||
" dtb_ordt.rif_ord,\n" +
|
||||
" dtb_ordr.descrizione,\n" +
|
||||
" dtb_ordr.descrizione_estesa,\n" +
|
||||
" dtb_ordr.data_cons,\n" +
|
||||
" dtb_ordr.riga_ord,\n" +
|
||||
" dtb_ordr.qta_ord,\n" +
|
||||
" dtb_ordr.qta_evasa,\n" +
|
||||
" dtb_ordr.cod_mdep,\n" +
|
||||
" dtb_ordr.flag_evaso,\n" +
|
||||
" SUM(dtb_ordr.qta_ord * dtb_ordr.val_unt * (1 - sconto1 / 100) * (1 - sconto2 / 100) * (1 - sconto3 / 100) *\n" +
|
||||
" (1 - sconto4 / 100) * (1 - sconto5 / 100) * (1 - sconto6 / 100) * (1 - sconto7 / 100) *\n" +
|
||||
" (1 - sconto8 / 100)) AS importorigaord,\n" +
|
||||
" SUM(CASE\n" +
|
||||
" WHEN (dtb_ordr.qta_ord > dtb_ordr.qta_evasa) AND dtb_ordr.flag_evaso = 'I' THEN\n" +
|
||||
" (dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.val_unt * (1 - sconto1 / 100) *\n" +
|
||||
" (1 - sconto2 / 100) * (1 - sconto3 / 100) * (1 - sconto4 / 100) * (1 - sconto5 / 100) *\n" +
|
||||
" (1 - sconto6 / 100) * (1 - sconto7 / 100) * (1 - sconto8 / 100)\n" +
|
||||
" ELSE 0 END) AS importoinevaso,\n" +
|
||||
" SUM(CASE\n" +
|
||||
" WHEN (dtb_ordr.qta_ord > dtb_ordr.qta_evasa) AND dtb_ordr.flag_evaso = 'I' THEN\n" +
|
||||
" (dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.val_unt *\n" +
|
||||
" (1 + gtb_aliq.perc_aliq / 100) * (1 - sconto1 / 100) * (1 - sconto2 / 100) *\n" +
|
||||
" (1 - sconto3 / 100) * (1 - sconto4 / 100) * (1 - sconto5 / 100) * (1 - sconto6 / 100) *\n" +
|
||||
" (1 - sconto7 / 100) * (1 - sconto8 / 100)\n" +
|
||||
" ELSE 0 END) AS importoinevasoivato,\n" +
|
||||
" dtb_ordr.partita_mag,\n" +
|
||||
" dtb_ordt.num_ord_provv,\n" +
|
||||
" dtb_ordt.flag_sospeso,\n" +
|
||||
" dtb_ordr.pos_riga,\n" +
|
||||
" dtb_ordt.controllato_da,\n" +
|
||||
" dtb_ordt.data_ins_ord,\n" +
|
||||
" dtb_ordr.id_viaggio,\n" +
|
||||
" dtb_ordt.cod_paga,\n" +
|
||||
" dtb_ordt.descrizione_paga\n" +
|
||||
" FROM dtb_ordt,\n" +
|
||||
" dtb_ordr\n" +
|
||||
" LEFT OUTER JOIN gtb_aliq ON dtb_ordr.cod_aliq = gtb_aliq.cod_aliq\n" +
|
||||
" WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" +
|
||||
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
|
||||
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" AND dtb_ordt.gestione = 'V'\n" +
|
||||
" AND dtb_ordr.cod_mart IS NOT NULL\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ordr.flag_evaso <> 'A'\n" +
|
||||
" GROUP BY dtb_ordt.gestione, cod_vage, cod_anag, cod_vdes, term_cons, dtb_ordr.unt_ord, dtb_ordr.cod_jcom,\n" +
|
||||
" dtb_ordr.cod_mart, dtb_ordr.cod_alis, dtb_ordr.cod_art_for, dtb_ordt.data_ord, dtb_ordt.num_ord,\n" +
|
||||
" dtb_ordt.rif_ord, dtb_ordr.descrizione, dtb_ordr.descrizione_estesa, dtb_ordr.data_cons,\n" +
|
||||
" dtb_ordr.riga_ord, dtb_ordr.qta_ord, dtb_ordr.qta_evasa, dtb_ordr.cod_mdep, dtb_ordr.flag_evaso,\n" +
|
||||
" dtb_ordr.partita_mag, dtb_ordt.num_ord_provv, dtb_ordt.flag_sospeso, dtb_ordr.pos_riga,\n" +
|
||||
" dtb_ordt.controllato_da, dtb_ordt.data_ins_ord, dtb_ordr.id_viaggio, dtb_ordt.cod_paga,\n" +
|
||||
" dtb_ordt.descrizione_paga) ordv\n" +
|
||||
" LEFT OUTER JOIN vtb_dest ON ordv.cod_anag = vtb_dest.cod_anag AND ordv.cod_vdes = vtb_dest.cod_vdes\n" +
|
||||
" LEFT OUTER JOIN vtb_agen ON ordv.cod_vage = vtb_agen.cod_vage\n" +
|
||||
" LEFT OUTER JOIN jtb_comt ON ordv.cod_jcom = jtb_comt.cod_jcom\n" +
|
||||
" LEFT OUTER JOIN ( /*Ordini di acquisto a fornitori*/ SELECT dtb_ordr.gestione,\n" +
|
||||
" dtb_ordr.flag_evaso,\n" +
|
||||
" MAX(dtb_ordr.data_cons) AS data_cons,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.cod_col,\n" +
|
||||
" dtb_ordr.cod_tagl,\n" +
|
||||
" dtb_ordr.cod_jcom,\n" +
|
||||
" SUM(qta_ord - qta_evasa) AS qta_da_evadere,\n" +
|
||||
" dtb_ordt.gestione_rif\n" +
|
||||
" FROM dtb_ordt,\n" +
|
||||
" dtb_ordr\n" +
|
||||
" WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" +
|
||||
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
|
||||
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" AND dtb_ordt.gestione = 'A'\n" +
|
||||
" AND dtb_ordt.flag_sospeso = 'N'\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ordr.flag_evaso = 'I'\n" +
|
||||
" AND dtb_ordr.qta_ord > dtb_ordr.qta_evasa\n" +
|
||||
" GROUP BY dtb_ordr.gestione,\n" +
|
||||
" dtb_ordr.flag_evaso, /*dtb_ordr.data_cons,*/\n" +
|
||||
" dtb_ordr.cod_mart, dtb_ordr.cod_col,\n" +
|
||||
" dtb_ordr.cod_tagl, dtb_ordr.cod_jcom,\n" +
|
||||
" dtb_ordt.gestione_rif) orda\n" +
|
||||
" ON ordv.cod_jcom = orda.cod_jcom AND ordv.cod_mart = orda.cod_mart AND orda.gestione = 'A' AND\n" +
|
||||
" orda.flag_evaso = 'I'\n" +
|
||||
" LEFT OUTER JOIN ( /*Colli di vendita già preparati e accantonati per commessa*/ SELECT cod_mart,\n" +
|
||||
" isnull(mtb_colr.cod_jcom, dtb_ordt.cod_jcom) as cod_jcom,\n" +
|
||||
" mtb_colr.data_ord,\n" +
|
||||
" mtb_colr.num_ord,\n" +
|
||||
" riga_ord,\n" +
|
||||
" mtb_colt.gestione,\n" +
|
||||
" SUM(qta_col) AS qta_col\n" +
|
||||
" FROM mtb_colr inner join mtb_colt on mtb_colr.gestione = mtb_colt.gestione and\n" +
|
||||
" mtb_colr.data_collo = mtb_colt.data_collo and\n" +
|
||||
" mtb_colr.ser_collo = mtb_colt.ser_collo and\n" +
|
||||
" mtb_colr.num_collo = mtb_colt.num_collo\n" +
|
||||
" inner join dtb_ordt on dtb_ordt.data_ord=mtb_colr.data_ord and\n" +
|
||||
" dtb_ordt.num_ord=mtb_colr.num_ord and\n" +
|
||||
" dtb_ordt.gestione=mtb_colr.gestione\n" +
|
||||
" \n" +
|
||||
" WHERE mtb_colt.gestione = 'V'\n" +
|
||||
" AND mtb_colt.cod_dtip IS NULL\n" +
|
||||
" \n" +
|
||||
" \n" +
|
||||
" GROUP BY cod_mart, mtb_colr.cod_jcom, dtb_ordt.cod_jcom,\n" +
|
||||
" mtb_colr.data_ord,\n" +
|
||||
" mtb_colr.num_ord,\n" +
|
||||
" riga_ord,\n" +
|
||||
" mtb_colt.gestione) colv\n" +
|
||||
" ON ordv.gestione = colv.gestione AND ordv.data_ord = colv.data_ord AND\n" +
|
||||
" ordv.num_ord = colv.num_ord AND ordv.riga_ord = colv.riga_ord AND\n" +
|
||||
" ordv.cod_mart = colv.cod_mart AND ordv.cod_jcom = colv.cod_jcom\n" +
|
||||
" LEFT OUTER JOIN ( /*Colli di acquisto o produzione in giacenza con commessa esclusi quelli di reso a fornitore o posizionati in aree escluse dal picking*/ SELECT cod_mart, cod_mdep, cod_jcom AS cod_jcom, SUM(qta_col) AS qta_col\n" +
|
||||
" FROM mvw_sitart_udc_det_inventario\n" +
|
||||
" WHERE (gestione = 'A' OR gestione = 'L')\n" +
|
||||
" AND ISNULL(cod_jcom, 'MAG') <> 'MAG'\n" +
|
||||
" AND ISNULL(priorita, 0) >= 0\n" +
|
||||
" AND segno = 1\n" +
|
||||
" GROUP BY cod_mart, cod_mdep, cod_jcom) cola\n" +
|
||||
" ON ordv.cod_mdep = cola.cod_mdep AND ordv.cod_mart = cola.cod_mart AND\n" +
|
||||
" ordv.cod_jcom = cola.cod_jcom\n" +
|
||||
" LEFT OUTER JOIN ( /*Colli di acquisto o produzione in giacenza senza commessa, esclusi quelli di reso a fornitore o posizionati in aree escluse dal picking*/ SELECT cod_mart, cod_mdep, SUM(qta_col) AS qta_esistente\n" +
|
||||
" FROM mvw_sitart_udc_det_inventario\n" +
|
||||
" WHERE (gestione = 'A' OR gestione = 'L')\n" +
|
||||
" AND (cod_jcom IS NULL OR cod_jcom = 'MAG')\n" +
|
||||
" AND ISNULL(priorita, 0) >= 0\n" +
|
||||
" AND segno = 1\n" +
|
||||
" GROUP BY cod_mart, cod_mdep) mtb_part\n" +
|
||||
" ON ordv.cod_mdep = mtb_part.cod_mdep AND ordv.cod_mart = mtb_part.cod_mart\n" +
|
||||
"WHERE gtb_anag.cod_anag = ordv.cod_anag\n" +
|
||||
"GROUP BY ordv.gestione ,\n" +
|
||||
" ordv.cod_jcom ,\n" +
|
||||
" ordv.data_ord ,\n" +
|
||||
" ordv.num_ord ,\n" +
|
||||
" ordv.rif_ord ,\n" +
|
||||
" ordv.id_viaggio ,\n" +
|
||||
" ordv.cod_mart ,\n" +
|
||||
" ordv.cod_alis ,\n" +
|
||||
" ISNULL(ordv.cod_art_for, ordv.cod_mart) ,\n" +
|
||||
" ISNULL(ordv.descrizione_estesa, ordv.descrizione),\n" +
|
||||
" ISNULL(orda.qta_da_evadere, 0) ,\n" +
|
||||
" ISNULL(colv.qta_col, 0) ,\n" +
|
||||
" mtb_part.qta_esistente ,\n" +
|
||||
" ordv.unt_ord ,\n" +
|
||||
" ordv.term_cons,\n" +
|
||||
" jtb_comt.descrizione ,\n" +
|
||||
" ordv.data_cons,\n" +
|
||||
" gtb_anag.rag_soc,\n" +
|
||||
" ISNULL(vtb_dest.indirizzo, gtb_anag.indirizzo),\n" +
|
||||
" vtb_dest.indirizzo,\n" +
|
||||
" vtb_dest.destinatario,\n" +
|
||||
" gtb_anag.citta,\n" +
|
||||
" vtb_dest.citta,\n" +
|
||||
" ordv.cod_vage,\n" +
|
||||
" vtb_agen.rag_soc ,\n" +
|
||||
" ordv.partita_mag,\n" +
|
||||
" orda.gestione_rif,\n" +
|
||||
" gtb_anag.cod_anag ,\n" +
|
||||
" ordv.num_ord_provv ,\n" +
|
||||
" ordv.flag_sospeso ,\n" +
|
||||
" ordv.controllato_da ,\n" +
|
||||
" gtb_anag.e_mail ,\n" +
|
||||
" ordv.data_ins_ord,\n" +
|
||||
" ordv.flag_evaso,\n" +
|
||||
" ordv.cod_paga,\n" +
|
||||
" ordv.descrizione_paga,\n" +
|
||||
" ordv.cod_vdes");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250610153451 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
if (isDMS()) return;
|
||||
|
||||
createOrUpdateView("mvw_mtb_colr_storico_mov", "CREATE view [dbo].[mvw_mtb_colr_storico_mov] as \n" +
|
||||
"SELECT IIF(moltiplicatore = -1, mtb_colr.barcode_ul_out,\n" +
|
||||
" mtb_colr.barcode_ul_in) AS barcode_ul,\n" +
|
||||
" IIF(moltiplicatore = -1, mtb_colr.cod_mdep_out,\n" +
|
||||
" mtb_colr.cod_mdep_in) AS cod_mdep,\n" +
|
||||
" IIF(moltiplicatore = -1, mtb_colr.posizione_out,\n" +
|
||||
" mtb_colr.posizione_in) AS posizione,\n" +
|
||||
" (mtb_colr.qta_col * moltiplicatore) AS qta_col,\n" +
|
||||
" (IIF(mtb_aart.flag_qta_cnf_fissa = 'S', mtb_colr.qta_col / mtb_aart.qta_cnf, mtb_colr.num_cnf) *\n" +
|
||||
" moltiplicatore) AS num_cnf,\n" +
|
||||
" mtb_colr.cod_mart,\n" +
|
||||
" mtb_colr.cod_col,\n" +
|
||||
" mtb_colr.cod_tagl,\n" +
|
||||
" mtb_colr.partita_mag,\n" +
|
||||
" (mtb_colr.peso_netto_kg * moltiplicatore) AS peso_netto_kg,\n" +
|
||||
" (mtb_colr.peso_lordo_kg * moltiplicatore) AS peso_lordo_kg,\n" +
|
||||
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom) AS cod_jcom,\n" +
|
||||
" mtb_aart.flag_qta_cnf_fissa,\n" +
|
||||
" mtb_aart.unt_mis,\n" +
|
||||
" mtb_aart.diacod,\n" +
|
||||
" mtb_aart.descrizione_estesa,\n" +
|
||||
" mtb_aart.cod_mgrp,\n" +
|
||||
" mtb_aart.cod_msgr,\n" +
|
||||
" mtb_aart.cod_mtip,\n" +
|
||||
" mtb_aart.cod_mstp,\n" +
|
||||
" mtb_aart.cod_msfa,\n" +
|
||||
" mtb_aart.qta_cnf AS qta_cnf_anag,\n" +
|
||||
" mtb_colt.data_vers,\n" +
|
||||
" mtb_colr.datetime_row,\n" +
|
||||
" mtb_colt.cod_anag,\n" +
|
||||
" mtb_colt.cod_dtip,\n" +
|
||||
" mtb_colt.data_doc,\n" +
|
||||
" mtb_colt.ser_doc,\n" +
|
||||
" mtb_colt.num_doc,\n" +
|
||||
" mtb_colt.gestione,\n" +
|
||||
" mtb_colt.data_collo,\n" +
|
||||
" mtb_colt.num_collo,\n" +
|
||||
" mtb_colt.ser_collo\n" +
|
||||
"FROM dbo.mtb_colr\n" +
|
||||
" INNER JOIN dbo.stb_multiplier ON (moltiplicatore = 1 AND mtb_colr.barcode_ul_in IS NOT NULL) OR\n" +
|
||||
" (moltiplicatore = -1 AND mtb_colr.barcode_ul_out IS NOT NULL)\n" +
|
||||
" INNER JOIN dbo.mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" INNER JOIN dbo.mtb_colt ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
|
||||
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
|
||||
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
|
||||
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
||||
"WHERE (segno = 1 or (segno = -1 and (moltiplicatore = -1 or (moltiplicatore = 1 AND isnull(mtb_colt.barcode_ul,'') <> IsNull(mtb_colr.barcode_ul_in,'')) )))");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20250610161207 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
executeStatement("create table vtb_offr_storico \n" +
|
||||
"(id_offerta bigint not null, \n" +
|
||||
"cod_mart varchar(15) not null, \n" +
|
||||
"qta_ord numeric(20,5) default 0 not null,\n" +
|
||||
"qta_doc numeric(20,5) default 0 not null )\n",
|
||||
"alter table vtb_offr_storico add constraint pk_vtb_offr_storico primary key (id_offerta, cod_mart)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -522,7 +522,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
|
||||
}
|
||||
boolean flagIvaInclusa = testata.getFlagPrzIva().equalsIgnoreCase("S");
|
||||
|
||||
if (flagPrezziScontati) {
|
||||
if (!flagPrezziScontati) {
|
||||
if (sconto1.compareTo(BigDecimal.ZERO) > 0) {
|
||||
sconti.add(sconto1);
|
||||
}
|
||||
|
||||
@@ -44,6 +44,9 @@ public class MtbShelfLifeTolerance extends EntityBase {
|
||||
@SqlField(value = "rate_to_tolerance", nullable = false)
|
||||
private BigDecimal rateToTolerance;
|
||||
|
||||
@SqlField(value = "cod_mgrp", nullable = false)
|
||||
private String codMgrp;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -79,4 +82,13 @@ public class MtbShelfLifeTolerance extends EntityBase {
|
||||
this.rateToTolerance = rateToTolerance;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMgrp() {
|
||||
return codMgrp;
|
||||
}
|
||||
|
||||
public MtbShelfLifeTolerance setCodMgrp(String codMgrp) {
|
||||
this.codMgrp = codMgrp;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
package it.integry.ems_model.entity;
|
||||
|
||||
import it.integry.ems_model.base.EquatableEntityInterface;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.annotation.Master;
|
||||
import org.kie.api.definition.type.PropertyReactive;
|
||||
import it.integry.ems_model.annotation.Table;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import it.integry.ems_model.annotation.PK;
|
||||
import it.integry.ems_model.annotation.SqlField;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Objects;
|
||||
|
||||
@Master()
|
||||
@PropertyReactive()
|
||||
@Table(value = VtbOffrStorico.ENTITY)
|
||||
@JsonTypeName(value = VtbOffrStorico.ENTITY)
|
||||
public class VtbOffrStorico extends EntityBase implements EquatableEntityInterface<VtbOffrStorico> {
|
||||
public final static String ENTITY = "vtb_offr_storico";
|
||||
|
||||
private final static Long serialVersionUID = 1L;
|
||||
|
||||
private final static Logger logger = LogManager.getLogger();
|
||||
|
||||
public VtbOffrStorico() {
|
||||
super(logger);
|
||||
}
|
||||
|
||||
@PK()
|
||||
@SqlField(value = "id_offerta", nullable = false)
|
||||
private Long idOfferta;
|
||||
|
||||
@PK()
|
||||
@SqlField(value = "cod_mart", maxLength = 15, nullable = false)
|
||||
private String codMart;
|
||||
|
||||
@SqlField(value = "qta_ord", nullable = false)
|
||||
private BigDecimal qtaOrd;
|
||||
|
||||
@SqlField(value = "qta_doc", nullable = false)
|
||||
private BigDecimal qtaDoc;
|
||||
|
||||
public Long getIdOfferta() {
|
||||
return idOfferta;
|
||||
}
|
||||
|
||||
public VtbOffrStorico setIdOfferta(Long idOfferta) {
|
||||
this.idOfferta = idOfferta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public VtbOffrStorico setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public VtbOffrStorico setQtaOrd(BigDecimal qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaDoc() {
|
||||
return qtaDoc;
|
||||
}
|
||||
|
||||
public VtbOffrStorico setQtaDoc(BigDecimal qtaDoc) {
|
||||
this.qtaDoc = qtaDoc;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCodeKey() {
|
||||
return Objects.hash(getIdOfferta(), getCodMart());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equalsKey(VtbOffrStorico that) {
|
||||
return Objects.equals(getIdOfferta(), that.getIdOfferta()) && Objects.equals(getCodMart(), that.getCodMart());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof VtbOffrStorico)) return false;
|
||||
VtbOffrStorico that = (VtbOffrStorico) o;
|
||||
return Objects.equals(getIdOfferta(), that.getIdOfferta()) && Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getQtaOrd(), that.getQtaOrd()) && Objects.equals(getQtaDoc(), that.getQtaDoc());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getIdOfferta(), getCodMart(), getQtaOrd(), getQtaDoc());
|
||||
}
|
||||
}
|
||||
@@ -78,6 +78,9 @@ public class VtbOfft extends EntityBase implements EquatableEntityInterface<VtbO
|
||||
@EntityChild
|
||||
private List<VtbOffr> vtbOffr = new ArrayList<>();
|
||||
|
||||
@EntityChild
|
||||
private List<VtbOffrStorico> vtbOffrStorico = new ArrayList<>();
|
||||
|
||||
@Priority(1)
|
||||
private StbActivity stbActivity;
|
||||
|
||||
@@ -228,6 +231,15 @@ public class VtbOfft extends EntityBase implements EquatableEntityInterface<VtbO
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<VtbOffrStorico> getVtbOffrStorico() {
|
||||
return vtbOffrStorico;
|
||||
}
|
||||
|
||||
public VtbOfft setVtbOffrStorico(List<VtbOffrStorico> vtbOffrStorico) {
|
||||
this.vtbOffrStorico = vtbOffrStorico;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCodeKey() {
|
||||
return Objects.hash(getIdOfferta());
|
||||
|
||||
@@ -107,7 +107,8 @@ public class Slim2kService {
|
||||
" IIF(mtb_part.scorta_min IS NULL, 0, mtb_part.scorta_min) AS scorta_min " +
|
||||
"FROM format.dbo.mtb_aart" +
|
||||
" LEFT OUTER JOIN format.dbo.mtb_part ON mtb_aart.cod_mart = mtb_part.cod_mart AND mtb_part.cod_mdep = " + UtilityDB.valueToString(codMdep) +
|
||||
" LEFT OUTER JOIN format.dbo.mtb_shelf_life_tolerance ON mtb_aart.gg_scad_partita between mtb_shelf_life_tolerance.shelf_life_min and mtb_shelf_life_tolerance.shelf_life_max " +
|
||||
" LEFT OUTER JOIN format.dbo.mtb_shelf_life_tolerance ON mtb_aart.cod_mgrp = mtb_shelf_life_tolerance.cod_mgrp AND \n" +
|
||||
" mtb_aart.gg_scad_partita between mtb_shelf_life_tolerance.shelf_life_min and mtb_shelf_life_tolerance.shelf_life_max " +
|
||||
" WHERE mtb_aart.flag_stato = 'A'" +
|
||||
" AND mtb_aart.cod_mart NOT IN" +
|
||||
" ('130100014', '040200962', '011000513', '011000475', '011000298', '011000252', '011000254', '011000819')";
|
||||
|
||||
@@ -30,32 +30,38 @@ public class GriglieVenditaExcelDTO {
|
||||
}
|
||||
|
||||
public GriglieVenditaExcelDTO addRiga(Integer ggSettimana, String codMart) {
|
||||
LocalDate nextMonday = LocalDate.now().with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.MONDAY));;
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate dataGriglia;
|
||||
switch (ggSettimana) {
|
||||
case 1: // Lunedì
|
||||
dataGriglia = nextMonday;
|
||||
break;
|
||||
case 2: // Martedì
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.TUESDAY));
|
||||
break;
|
||||
case 3: // Mercoledì
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
|
||||
break;
|
||||
case 4: // Giovedì
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.THURSDAY));
|
||||
break;
|
||||
case 5: // Venerdì
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.FRIDAY));
|
||||
break;
|
||||
case 6: // Sabato
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SATURDAY));
|
||||
break;
|
||||
case 7: // Domenica
|
||||
dataGriglia = nextMonday.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SUNDAY));
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Giorno della settimana non valido: " + ggSettimana);
|
||||
|
||||
|
||||
if (today.getDayOfWeek().getValue() == ggSettimana.intValue()) {
|
||||
dataGriglia = today;
|
||||
} else {
|
||||
switch (ggSettimana) {
|
||||
case 1: // Lunedì
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.MONDAY));
|
||||
break;
|
||||
case 2: // Martedì
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.TUESDAY));
|
||||
break;
|
||||
case 3: // Mercoledì
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
|
||||
break;
|
||||
case 4: // Giovedì
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.THURSDAY));
|
||||
break;
|
||||
case 5: // Venerdì
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.FRIDAY));
|
||||
break;
|
||||
case 6: // Sabato
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SATURDAY));
|
||||
break;
|
||||
case 7: // Domenica
|
||||
dataGriglia = today.with(java.time.temporal.TemporalAdjusters.next(DayOfWeek.SUNDAY));
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Giorno della settimana non valido: " + ggSettimana);
|
||||
}
|
||||
}
|
||||
DatiGriglia riga = new DatiGriglia()
|
||||
.setCodMart(codMart)
|
||||
|
||||
@@ -95,57 +95,66 @@ public class ContrattiDiVenditaHandlerService {
|
||||
public List<EntityBase> updateProgressivi(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
|
||||
String sql =
|
||||
"WITH art as (\n" +
|
||||
" select mtb_aart.cod_mart, IsNull(mtb_aart.id_art_equi, mtb_aart.cod_mart) as id_art_equi\n" +
|
||||
" from mtb_aart left outer join mtb_aart_equi on mtb_aart.id_art_equi = mtb_aart_equi.id_art_equi and flag_equi_prezzo in ('T', 'V', 'P')\n" +
|
||||
" ),\n" +
|
||||
" ord AS\n" +
|
||||
" (SELECT dtb_ordr.id_contratto,\n" +
|
||||
" art.id_art_equi,\n" +
|
||||
" SUM((dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.rap_conv) AS qta_ord\n" +
|
||||
" FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" +
|
||||
" dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" inner join art on dtb_ordr.cod_mart = art.cod_mart\n" +
|
||||
" WHERE dtb_ordt.gestione = 'V'\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ordt.flag_sospeso = 'N'\n" +
|
||||
" AND dtb_ordr.flag_evaso = 'I'\n" +
|
||||
" AND dtb_ordr.id_contratto IS NOT NULL\n" +
|
||||
" GROUP BY dtb_ordr.id_contratto,\n" +
|
||||
" art.id_art_equi\n" +
|
||||
" )\n" +
|
||||
" , doc AS (SELECT dtb_docr.id_contratto,\n" +
|
||||
" art.id_art_equi,\n" +
|
||||
" SUM(dtb_tipi.segno_qta_scar * dtb_docr.qta_doc * dtb_docr.rap_conv) AS qta_doc,\n" +
|
||||
" SUM(IIF(dtb_doct.num_cmov is not null,1, 0) * dtb_docr.qta_doc * dtb_docr.rap_conv) AS qta_fatt\n" +
|
||||
" FROM dtb_doct\n" +
|
||||
" INNER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
|
||||
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
|
||||
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
|
||||
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
|
||||
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
|
||||
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
|
||||
" inner join art on dtb_docr.cod_mart = art.cod_mart\n" +
|
||||
" WHERE dtb_doct.gestione = 'V'\n" +
|
||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||
" AND dtb_docr.id_contratto IS NOT NULL\n" +
|
||||
" GROUP BY dtb_docr.id_contratto,\n" +
|
||||
" art.id_art_equi )\n" +
|
||||
"SELECT DISTINCT vtb_offr.id_offerta,\n" +
|
||||
" vtb_offr.cod_mart,\n" +
|
||||
" ISNULL(ord.qta_ord / vtb_offr.rap_conv_vend, 0) AS qta_ord,\n" +
|
||||
" ISNULL(doc.qta_doc / vtb_offr.rap_conv_vend, 0) AS qta_doc,\n" +
|
||||
" ISNULL(doc.qta_fatt / vtb_offr.rap_conv_vend, 0) AS qta_fatt\n" +
|
||||
"FROM vtb_offr\n" +
|
||||
" INNER JOIN vtb_offt ON vtb_offr.id_offerta = vtb_offt.id_offerta\n" +
|
||||
" inner join art on vtb_offr.cod_mart = art.cod_mart\n" +
|
||||
" LEFT OUTER JOIN ord ON vtb_offr.id_offerta = ord.id_contratto AND art.id_art_equi = ord.id_art_equi\n" +
|
||||
" LEFT OUTER JOIN doc ON vtb_offr.id_offerta = doc.id_contratto AND art.id_art_equi = doc.id_art_equi\n" +
|
||||
"WHERE (vtb_offr.qta_ord <> ISNULL(ord.qta_ord / vtb_offr.rap_conv_vend, 0) OR\n" +
|
||||
" vtb_offr.qta_doc <> ISNULL(doc.qta_doc / vtb_offr.rap_conv_vend, 0) OR\n" +
|
||||
" vtb_offr.qta_fatt <> ISNULL(doc.qta_fatt / vtb_offr.rap_conv_vend, 0)) AND\n" +
|
||||
" vtb_offt.stato_offerta = 3";
|
||||
" select mtb_aart.cod_mart, IsNull(mtb_aart.id_art_equi, mtb_aart.cod_mart) as id_art_equi\n" +
|
||||
" from mtb_aart left outer join mtb_aart_equi on mtb_aart.id_art_equi = mtb_aart_equi.id_art_equi and flag_equi_prezzo in ('T', 'V', 'P')\n" +
|
||||
" ),\n" +
|
||||
" ord AS\n" +
|
||||
" (SELECT dtb_ordr.id_contratto,\n" +
|
||||
" art.id_art_equi,\n" +
|
||||
" SUM((dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.rap_conv) AS qta_ord\n" +
|
||||
" FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" +
|
||||
" dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
|
||||
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" inner join art on dtb_ordr.cod_mart = art.cod_mart\n" +
|
||||
" WHERE dtb_ordt.gestione = 'V'\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ordt.flag_sospeso = 'N'\n" +
|
||||
" AND dtb_ordr.flag_evaso = 'I'\n" +
|
||||
" AND dtb_ordr.id_contratto IS NOT NULL\n" +
|
||||
" GROUP BY dtb_ordr.id_contratto,\n" +
|
||||
" art.id_art_equi\n" +
|
||||
" )\n" +
|
||||
" , doc AS (SELECT dtb_docr.id_contratto,\n" +
|
||||
" art.id_art_equi,\n" +
|
||||
" SUM(dtb_tipi.segno_qta_scar * dtb_docr.qta_doc * dtb_docr.rap_conv) AS qta_doc,\n" +
|
||||
" SUM(IIF(dtb_doct.num_cmov is not null,1, 0) * dtb_docr.qta_doc * dtb_docr.rap_conv) AS qta_fatt\n" +
|
||||
" FROM dtb_doct\n" +
|
||||
" INNER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
|
||||
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
|
||||
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
|
||||
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
|
||||
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
|
||||
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
|
||||
" inner join art on dtb_docr.cod_mart = art.cod_mart\n" +
|
||||
" WHERE dtb_doct.gestione = 'V'\n" +
|
||||
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
|
||||
" AND dtb_docr.id_contratto IS NOT NULL\n" +
|
||||
" GROUP BY dtb_docr.id_contratto,\n" +
|
||||
" art.id_art_equi )\n" +
|
||||
", storico AS (SELECT vtb_offr_storico.id_offerta,\n" +
|
||||
" art.id_art_equi,\n" +
|
||||
" sum(vtb_offr_storico.qta_ord) as qta_ord,\n" +
|
||||
" sum(vtb_offr_storico.qta_doc) as qta_doc\n" +
|
||||
" FROM vtb_offr_storico\n" +
|
||||
" inner join art on vtb_offr_storico.cod_mart = art.cod_mart\n" +
|
||||
" GROUP BY vtb_offr_storico.id_offerta,\n" +
|
||||
" art.id_art_equi ) \n" +
|
||||
"SELECT DISTINCT vtb_offr.id_offerta,\n" +
|
||||
" vtb_offr.cod_mart,\n" +
|
||||
" ISNULL(ord.qta_ord / vtb_offr.rap_conv_vend, 0) + IsNull(storico.qta_ord, 0) AS qta_ord,\n" +
|
||||
" ISNULL(doc.qta_doc / vtb_offr.rap_conv_vend, 0) + IsNull(storico.qta_doc, 0) AS qta_doc,\n" +
|
||||
" ISNULL(doc.qta_fatt / vtb_offr.rap_conv_vend, 0) AS qta_fatt\n" +
|
||||
"FROM vtb_offr\n" +
|
||||
" INNER JOIN vtb_offt ON vtb_offr.id_offerta = vtb_offt.id_offerta\n" +
|
||||
" inner join art on vtb_offr.cod_mart = art.cod_mart\n" +
|
||||
" LEFT OUTER JOIN ord ON vtb_offr.id_offerta = ord.id_contratto AND art.id_art_equi = ord.id_art_equi\n" +
|
||||
" LEFT OUTER JOIN doc ON vtb_offr.id_offerta = doc.id_contratto AND art.id_art_equi = doc.id_art_equi\n" +
|
||||
" LEFT OUTER JOIN storico ON vtb_offr.id_offerta = storico.id_offerta AND art.id_art_equi = storico.id_art_equi\n" +
|
||||
"WHERE (vtb_offr.qta_ord <> ISNULL(ord.qta_ord / vtb_offr.rap_conv_vend, 0) OR\n" +
|
||||
" vtb_offr.qta_doc <> ISNULL(doc.qta_doc / vtb_offr.rap_conv_vend, 0) OR\n" +
|
||||
" vtb_offr.qta_fatt <> ISNULL(doc.qta_fatt / vtb_offr.rap_conv_vend, 0)) AND\n" +
|
||||
" vtb_offt.stato_offerta = 3";
|
||||
|
||||
List<VtbOffr> vtbOffrs = new ResultSetMapper().mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, VtbOffr.class, OperationType.UPDATE);
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -394,7 +396,7 @@ public class PvmController {
|
||||
}
|
||||
|
||||
try {
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocumentiInterni(docFromPickingDTO);
|
||||
if (anomalieResiDTOS == null || anomalieResiDTOS.isEmpty())
|
||||
return ServiceRestResponse.createEntityPositiveResponse(pvmServiceSave.saveDocFromPicking(docFromPickingDTO));
|
||||
else {
|
||||
@@ -418,7 +420,7 @@ public class PvmController {
|
||||
}
|
||||
|
||||
try {
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocumentiInterni(docFromPickingDTO);
|
||||
if (anomalieResiDTOS == null || anomalieResiDTOS.isEmpty())
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
else {
|
||||
@@ -809,4 +811,17 @@ public class PvmController {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "pvm/updateDataCons", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse updateDataCons(
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestParam String gestione,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataOrd ,
|
||||
@RequestParam Integer numOrd,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataCons) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(pvmService.updateDataCons(gestione, dataOrd, numOrd, dataCons));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package it.integry.ems.retail.pvmRetail.dto;
|
||||
|
||||
public class CheckDocInterniShelfLifeDTO {
|
||||
private String codMgrp;
|
||||
private Integer gg;
|
||||
|
||||
public String getCodMgrp() {
|
||||
return codMgrp;
|
||||
}
|
||||
|
||||
public CheckDocInterniShelfLifeDTO setCodMgrp(String codMgrp) {
|
||||
this.codMgrp = codMgrp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getGg() {
|
||||
return gg;
|
||||
}
|
||||
|
||||
public CheckDocInterniShelfLifeDTO setGg(Integer gg) {
|
||||
this.gg = gg;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,6 @@ import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.service.SystemService;
|
||||
import it.integry.ems.user.UserSession;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.coollection.Coollection;
|
||||
@@ -171,7 +170,7 @@ public class PvmService {
|
||||
" WHERE STB_GEST_SETUP_DEPO.citta_cons like '%" + citta + "%' " +
|
||||
" GROUP BY num_range, dstart, dEnd, num_cons_max, CITTA_CONS ";
|
||||
|
||||
List<OrdChkConsDTO> ordChkConsDTO = UtilityDB.executeSimpleQueryDTO(conn,sql, OrdChkConsDTO.class);
|
||||
List<OrdChkConsDTO> ordChkConsDTO = UtilityDB.executeSimpleQueryDTO(conn, sql, OrdChkConsDTO.class);
|
||||
|
||||
return ordChkConsDTO;
|
||||
|
||||
@@ -1818,7 +1817,7 @@ public class PvmService {
|
||||
return mtbColtsToReturn;
|
||||
}
|
||||
|
||||
public List<AnomalieResiDTO> checkDocReso(DocFromPickingDTO docFromPickingDTO) throws Exception {
|
||||
public List<AnomalieResiDTO> checkDocumentiInterni(DocFromPickingDTO docFromPickingDTO) throws Exception {
|
||||
List<AnomalieResiDTO> anomalieResiDTO = new ArrayList<>();
|
||||
|
||||
String codMdep = getCodMdep(requestDataDTO.getUsername());
|
||||
@@ -1866,12 +1865,21 @@ public class PvmService {
|
||||
if (chkTracciabilita) {
|
||||
List<HashMap<String, Object>> setupSectionDet = setupGest.getSetupSectionDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "DOC_INTERNI", "DAYS_TO_EXP", "dtb_tipi");
|
||||
|
||||
String gg ="";
|
||||
List<CheckDocInterniShelfLifeDTO> checkDocInterniShelfLifeDTOS = new ArrayList<>();
|
||||
Integer gg = null;
|
||||
if (setupSectionDet != null && !setupSectionDet.isEmpty()) {
|
||||
gg = setupSectionDet
|
||||
String ret = setupSectionDet
|
||||
.stream()
|
||||
.filter(x -> x.get("val_col_rif") != null && ((String) x.get("val_col_rif")).equalsIgnoreCase(codDtip))
|
||||
.findFirst().map(x -> (String) x.get("value")).orElse(null);
|
||||
.findFirst().map(x -> (String) x.get("value")).orElse(null);
|
||||
if (!UtilityString.isNullOrEmpty(ret) ) {
|
||||
try {
|
||||
gg = Integer.parseInt(ret);
|
||||
} catch (NumberFormatException ex) {
|
||||
checkDocInterniShelfLifeDTOS = Arrays.asList(jsonObjectMapper.readValue(ret, CheckDocInterniShelfLifeDTO[].class));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
sql =
|
||||
Query.format(
|
||||
@@ -1975,7 +1983,8 @@ public class PvmService {
|
||||
" movi.data_scad AS data_scad_acq,\n" +
|
||||
" movi.suddivisione,\n" +
|
||||
" mtb_aart.gg_scad_partita,\n" +
|
||||
" movi.data_doc\n" +
|
||||
" movi.data_doc,\n" +
|
||||
" mtb_aart.cod_mgrp\n " +
|
||||
"FROM colli\n" +
|
||||
" INNER JOIN mtb_aart ON colli.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN setup ON mtb_aart.cod_mgrp = setup.cod_mgrp\n" +
|
||||
@@ -1989,6 +1998,14 @@ public class PvmService {
|
||||
for (HashMap<String, Object> lotto : partiteErrate) {
|
||||
String codMart = UtilityHashMap.getValueIfExists(lotto, "cod_mart");
|
||||
Date dataScad = UtilityHashMap.getValueIfExists(lotto, "data_scad");
|
||||
String codMgrp = UtilityHashMap.getValueIfExists(lotto, "cod_mgrp");
|
||||
|
||||
if (checkDocInterniShelfLifeDTOS != null && !checkDocInterniShelfLifeDTOS.isEmpty()) {
|
||||
gg = checkDocInterniShelfLifeDTOS
|
||||
.stream()
|
||||
.filter(x -> x.getCodMgrp().equalsIgnoreCase(codMgrp))
|
||||
.map(x -> x.getGg()).findFirst().orElse(null);
|
||||
}
|
||||
if (dataScad == null) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Inserire la data scadenza."));
|
||||
continue;
|
||||
@@ -2005,7 +2022,7 @@ public class PvmService {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(gg) && UtilityDate.DaysAfter(dataScad, UtilityDate.dateAdd(Calendar.DATE, Integer.parseInt(gg), UtilityDate.getTodayWithoutTime())) > 0) {
|
||||
if (gg != null && UtilityDate.DaysAfter(dataScad, UtilityDate.dateAdd(Calendar.DATE, gg, UtilityDate.getTodayWithoutTime())) > 0) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Impossibile effetture un reso di un articolo sotto scadenza."));
|
||||
continue;
|
||||
}
|
||||
@@ -2028,8 +2045,8 @@ public class PvmService {
|
||||
if (qtaAcq != null && UtilityBigDecimal.greaterThan(UtilityHashMap.getValueIfExists(lotto, "qta_col"), qtaAcq)) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, String.format("Quantità resa maggiore di quantità acquistata %s", qtaAcq)));
|
||||
}
|
||||
} else if (!UtilityString.isNullOrEmpty(gg)) {
|
||||
if (UtilityDate.DaysAfter(UtilityDate.getTodayWithoutTime(), dataScad) > Integer.parseInt(gg)) {
|
||||
} else if (gg != null && !gestioneDoc.equalsIgnoreCase("A")) {
|
||||
if (UtilityDate.DaysAfter(UtilityDate.getTodayWithoutTime(), dataScad) > gg) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, String.format("Impossibile effetture un %S di un articolo con scadenza %s.", codDtip, UtilityDate.formatDate(dataScad, CommonConstants.DATE_FORMAT_DMY))));
|
||||
continue;
|
||||
}
|
||||
@@ -2225,7 +2242,7 @@ public class PvmService {
|
||||
Integer numOrd = inputValue.get("numOrd").asInt() != 0 ? inputValue.get("numOrd").asInt() : null;
|
||||
|
||||
if (numOrd == null) {
|
||||
dataOrd = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(new Date());
|
||||
dataOrd = new SimpleDateFormat(DATE_FORMAT_YMD).format(new Date());
|
||||
}
|
||||
|
||||
String query = "SELECT mtb_depo.cod_anag, mtb_depo.cod_vdes " +
|
||||
@@ -2247,7 +2264,7 @@ public class PvmService {
|
||||
info.close();
|
||||
|
||||
wdtbOrdt.setGestione(gestione);
|
||||
wdtbOrdt.setDataOrd(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdt.setDataOrd(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdt.setNumOrd(numOrd);
|
||||
wdtbOrdt.setSerie(serie);
|
||||
wdtbOrdt.setCodAnag(codAnag);
|
||||
@@ -2271,7 +2288,7 @@ public class PvmService {
|
||||
//Letta la riga ord direttamente dal db.
|
||||
query = "SELECT riga_ord "
|
||||
+ "FROM wdtb_ordr "
|
||||
+ "WHERE data_ord = " + UtilityDB.valueDateToString(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd), CommonConstants.DATE_FORMAT_YMD) + " AND "
|
||||
+ "WHERE data_ord = " + UtilityDB.valueDateToString(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd), DATE_FORMAT_YMD) + " AND "
|
||||
+ " num_ord = " + numOrd + " AND "
|
||||
+ " cod_mart = " + UtilityDB.valueToString(codStyle) + " AND "
|
||||
+ " cod_col = " + UtilityDB.valueToString(codCol) + " AND "
|
||||
@@ -2292,7 +2309,7 @@ public class PvmService {
|
||||
if (rigaOrd != null) {
|
||||
wdtbOrdr.setOperation(OperationType.DELETE);
|
||||
|
||||
wdtbOrdr.setDataOrd(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdr.setDataOrd(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdr.setNumOrd(numOrd);
|
||||
wdtbOrdr.setGestione(gestione);
|
||||
wdtbOrdr.setSerie(serie);
|
||||
@@ -2643,4 +2660,32 @@ public class PvmService {
|
||||
return null;
|
||||
return permessi.stream().collect(Collectors.groupingBy(PvmAuthorizationDTO::getUsername));
|
||||
}
|
||||
|
||||
public DtbOrdt updateDataCons(String gestione, Date dataOrd, Integer numOrd, Date dataCons) throws Exception {
|
||||
if (dataCons == null) {
|
||||
throw new Exception("Data di consegna non valida");
|
||||
}
|
||||
|
||||
String sql = Query.format("SELECT * FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s",
|
||||
gestione, dataOrd, numOrd);
|
||||
|
||||
List<DtbOrdr> dtbOrdrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
|
||||
dtbOrdrList.stream().forEach(x -> {
|
||||
x.setDataCons(dataCons);
|
||||
x.setOperation(OperationType.UPDATE);
|
||||
}
|
||||
);
|
||||
|
||||
DtbOrdt dtbOrdt = new DtbOrdt()
|
||||
.setGestione(gestione)
|
||||
.setDataOrd(dataOrd)
|
||||
.setNumOrd(numOrd)
|
||||
.setDtbOrdr(dtbOrdrList);
|
||||
dtbOrdt.setOperation(OperationType.NO_OP);
|
||||
|
||||
entityProcessor.processEntity(dtbOrdt, multiDBTransactionManager);
|
||||
return dtbOrdt;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import it.integry.ems.system.exchange.service.structure.ExchangeImportDataManage
|
||||
import it.integry.ems.system.exchange.service.structure.ExchangeImportSchemaManagerService;
|
||||
import it.integry.ems_model.base.EquatableEntityInterface;
|
||||
import it.integry.ems_model.entity.VtbOffr;
|
||||
import it.integry.ems_model.entity.VtbOffrStorico;
|
||||
import it.integry.ems_model.entity.VtbOfft;
|
||||
import it.integry.ems_model.exception.EntityException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -63,10 +64,12 @@ public class ExchangeContrattiImportService {
|
||||
|
||||
String testataTableName = null;
|
||||
String righeTableName = null;
|
||||
String storicoTableName = null;
|
||||
|
||||
if (schemaType == ExchangeImportSchemaManagerService.SchemaType.ContrattiVendita) {
|
||||
testataTableName = "vtb_offt_vend";
|
||||
righeTableName = "vtb_offr_vend";
|
||||
storicoTableName = "vtb_offr_storico_vend";
|
||||
}
|
||||
|
||||
exchangeImportDataManagerService.prepareData(exchangeMultiDb.getPrimaryConnection(), useTempTable,
|
||||
@@ -76,11 +79,11 @@ public class ExchangeContrattiImportService {
|
||||
|
||||
final List<VtbOfft> exchangeImportedData = retrieveContratti(
|
||||
exchangeMultiDb.getPrimaryConnection(),
|
||||
true, false, testataTableName, righeTableName);
|
||||
true, false, testataTableName, righeTableName, storicoTableName);
|
||||
|
||||
final List<VtbOfft> exchangeUpdatedData = retrieveContratti(
|
||||
exchangeMultiDb.getPrimaryConnection(),
|
||||
false, useTempTable, testataTableName, righeTableName);
|
||||
false, useTempTable, testataTableName, righeTableName, storicoTableName);
|
||||
|
||||
List<EquatableEntityInterface> allData = exchangeImportDataManagerService
|
||||
.runSync(VtbOfft.class, exchangeImportedData, exchangeUpdatedData);
|
||||
@@ -97,6 +100,7 @@ public class ExchangeContrattiImportService {
|
||||
|
||||
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), (VtbOfft) dataToSave, useTempTable, testataTableName);
|
||||
singleUpdateImported(exchangeMultiDb.getPrimaryConnection(), ((VtbOfft) dataToSave).getVtbOffr(), useTempTable, righeTableName);
|
||||
singleUpdateStoricoImported(exchangeMultiDb.getPrimaryConnection(), ((VtbOfft) dataToSave).getVtbOffrStorico(), useTempTable, storicoTableName);
|
||||
|
||||
internalMultiDb.commitAll();
|
||||
exchangeMultiDb.commitAll();
|
||||
@@ -122,10 +126,11 @@ public class ExchangeContrattiImportService {
|
||||
|
||||
|
||||
private List<VtbOfft> retrieveContratti(Connection connection, boolean retrieveAlreadyImported, boolean useTempTable,
|
||||
String testataOriginalName, String righeOriginalName) throws Exception {
|
||||
String testataOriginalName, String righeOriginalName, String storicoOriginalName) throws Exception {
|
||||
|
||||
String testataTableName = testataOriginalName + (useTempTable ? "_tmp" : "");
|
||||
String righeTableName = righeOriginalName + (useTempTable ? "_tmp" : "");
|
||||
String storicoTableName = storicoOriginalName + (useTempTable ? "_tmp" : "");
|
||||
|
||||
|
||||
final List<VtbOfft> testate = exchangeImportDataManagerService.retrieveDataFromExchange(connection, VtbOfft.class,
|
||||
@@ -134,6 +139,9 @@ public class ExchangeContrattiImportService {
|
||||
final List<VtbOffr> righe = exchangeImportDataManagerService.retrieveDataFromExchange(connection, VtbOffr.class,
|
||||
righeTableName, null, retrieveAlreadyImported);
|
||||
|
||||
final List<VtbOffrStorico> storico = exchangeImportDataManagerService.retrieveDataFromExchange(connection, VtbOffrStorico.class,
|
||||
storicoTableName, null, retrieveAlreadyImported);
|
||||
|
||||
|
||||
testate
|
||||
.parallelStream()
|
||||
@@ -141,7 +149,11 @@ public class ExchangeContrattiImportService {
|
||||
x.setVtbOffr(righe.parallelStream()
|
||||
.filter(y -> Objects.hash(x.getIdOfferta()) == Objects.hash(y.getIdOfferta()) &&
|
||||
(Objects.equals(x.getIdOfferta(), y.getIdOfferta())))
|
||||
.collect(Collectors.toList()));
|
||||
.collect(Collectors.toList()))
|
||||
.setVtbOffrStorico(storico.parallelStream()
|
||||
.filter(y -> Objects.hash(x.getIdOfferta()) == Objects.hash(y.getIdOfferta()) &&
|
||||
(Objects.equals(x.getIdOfferta(), y.getIdOfferta())))
|
||||
.collect(Collectors.toList()));
|
||||
});
|
||||
|
||||
return testate;
|
||||
@@ -166,4 +178,15 @@ public class ExchangeContrattiImportService {
|
||||
|
||||
exchangeImportDataManagerService.updateImportedStatus(connection, tableName, importedRowKeys, useTempTable);
|
||||
}
|
||||
|
||||
private void singleUpdateStoricoImported(Connection connection, List<VtbOffrStorico> imported, boolean useTempTable, String tableName) throws Exception {
|
||||
final List<HashMap<String, Object>> importedRowKeys = imported.stream()
|
||||
.map(x -> new HashMap<String, Object>() {{
|
||||
put("id_offerta", x.getIdOfferta());
|
||||
put("cod_mart", x.getCodMart());
|
||||
}})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
exchangeImportDataManagerService.updateImportedStatus(connection, tableName, importedRowKeys, useTempTable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +147,7 @@ public class ExchangeImportSchemaManagerService {
|
||||
put(SchemaType.ContrattiVendita, new HashMap<String, Class<? extends EntityInterface>>() {{
|
||||
put("vtb_offt_vend", VtbOfft.class);
|
||||
put("vtb_offr_vend", VtbOffr.class);
|
||||
put("vtb_offr_storico_vend", VtbOffrStorico.class);
|
||||
}});
|
||||
put(SchemaType.DistinteBase, new HashMap<String, Class<? extends EntityInterface>>() {{
|
||||
put("jtb_cicl", JtbCicl.class);
|
||||
|
||||
Reference in New Issue
Block a user