Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2024-10-22 10:48:14 +02:00
33 changed files with 4943 additions and 799 deletions

View File

@@ -54,12 +54,24 @@ public class TxtMapper<T> {
if (dtoField.maxLength() > 0 && !UtilityString.isNullOrEmpty(dtoField.fillChar())) {
UtilityString.H_POSITION position;
String segno = "";
int maxLength = dtoField.maxLength();
if (declaredField.getType() == Integer.class || declaredField.getType() == BigDecimal.class) {
position = UtilityString.H_POSITION.LEFT;
if (dtoField.showSign()) {
segno = value.substring(0, 1);
if (segno.equalsIgnoreCase("-") || segno.equalsIgnoreCase("+"))
value = value.substring(1);
else
segno="+";
maxLength = maxLength - 1;
}
} else {
position = UtilityString.H_POSITION.RIGHT;
}
value = UtilityString.fillString(value, dtoField.fillChar().charAt(0), dtoField.maxLength(), position);
value = UtilityString.fillString(value, dtoField.fillChar().charAt(0), maxLength, position);
value = segno + value;
}
if (ignorePosition)
@@ -208,10 +220,13 @@ public class TxtMapper<T> {
if (!UtilityString.isNullOrEmpty(dtoField.moltiplicatore())) {
value = ((BigDecimal) value).multiply(new BigDecimal(dtoField.moltiplicatore()));
}
value = value.toString();
if (!dtoField.showFloatPoint()) value = ((String) value).replaceAll("\\.", "").replaceAll(",", "");
if (!dtoField.showFloatPoint())
value = ((String) value).replaceAll("\\.", "").replaceAll(",", "");
else if (!UtilityString.isNullOrEmpty(dtoField.separator()))
value = ((String) value).replaceAll("\\.", dtoField.separator()).replaceAll(",", dtoField.separator());
} else if (value instanceof Integer) {
value = value.toString();
} else if (value instanceof Boolean) {

View File

@@ -26,8 +26,9 @@ public class MenuConfigurationController {
@RequestMapping(value = "refresh", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse refresh(@RequestParam(CommonConstants.PROFILE_DB) String profileDB) throws Exception {
menuConfigurationService.refresh(multiDBTransactionManager.getPrimaryConnection());
ServiceRestResponse refresh(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@RequestParam(required = false, defaultValue = "false") boolean forceRefresh) throws Exception {
menuConfigurationService.refresh(multiDBTransactionManager.getPrimaryConnection(), forceRefresh);
return ServiceRestResponse.createPositiveResponse();
}

View File

@@ -74,9 +74,9 @@ public class MenuConfigurationService {
return historyProfileDB.equalsIgnoreCase(advancedDataSource.getProfileName());
}
public void refresh(Connection connection) throws Exception {
public void refresh(Connection connection, boolean forceRefresh) throws Exception {
final MenuConfigDTO menuConfig = loadMenuData();
internalRefresh(connection, menuConfig);
internalRefresh(connection, menuConfig, forceRefresh);
}
private MenuConfigDTO loadMenuData() throws IOException {
@@ -91,11 +91,16 @@ public class MenuConfigurationService {
}
private void internalRefresh(Connection connection, MenuConfigDTO menuConfig) throws Exception {
internalRefresh(connection, menuConfig, false);
}
private void internalRefresh(Connection connection, MenuConfigDTO menuConfig, boolean forceRefresh) throws Exception {
final Azienda azienda = Azienda.getDefaultAzienda(connection);
int lastMenuUpd = Integer.parseInt(azienda.getLastUpgDbMenu().replace("QM", ""));
if (lastMenuUpd >= menuConfig.getVersion())
return;
if (!forceRefresh && lastMenuUpd > 0)
if (lastMenuUpd >= menuConfig.getVersion())
return;
executeStatement(connection, "DELETE FROM stb_menu",
"EXECUTE dbo.DropForeignKey 'azienda', 'stb_tipo_azienda'",

View File

@@ -0,0 +1,151 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241016163028 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("CountAllegatiCommessa", "CREATE FUNCTION [dbo].[CountAllegatiCommessa](@codJcom VARCHAR(10), @userName VARCHAR(40))\n" +
" RETURNS INTEGER\n" +
"AS\n" +
"BEGIN\n" +
" DECLARE @countAllegati INTEGER\n" +
"\n" +
" SELECT @countAllegati = SUM(cnt)\n" +
" FROM (SELECT COUNT(file_name) AS cnt\n" +
" FROM stb_activity_file\n" +
" WHERE id IN (SELECT stb_activity.activity_id\n" +
" FROM jtb_comt\n" +
" INNER JOIN stb_activity ON jtb_comt.cod_jcom = stb_activity.cod_jcom AND\n" +
" stb_activity.parent_activity_id IS NULL\n" +
" INNER JOIN stb_activity_type\n" +
" ON stb_activity.activity_type_id =\n" +
" stb_activity_type.activity_type_id AND\n" +
" stb_activity_type.flag_tipologia = 'P'\n" +
" WHERE jtb_comt.cod_jcom = @codJcom)\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(stb_activity_file.file_name) AS cnt\n" +
" FROM stb_activity\n" +
" INNER JOIN stb_activity_file ON stb_activity.activity_id = stb_activity_file.id\n" +
" WHERE stb_activity.cod_jcom = @codJcom\n" +
" AND activity_type_id IN (SELECT activity_type_id\n" +
" FROM srl_activity_type_user\n" +
" INNER JOIN jrl_flav_users\n" +
" ON srl_activity_type_user.user_name = jrl_flav_users.user_name\n" +
" INNER JOIN wtb_users\n" +
" ON wtb_users.User_name =\n" +
" jrl_flav_users.user_name AND\n" +
" wtb_users.user_name = @userName)\n" +
" AND @userName IN (stb_activity.user_creator, stb_activity.user_name)\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(filename) AS cnt\n" +
" FROM dtb_doc_pdf\n" +
" INNER JOIN\n" +
" (SELECT dtb_doct.num_doc,\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.cod_jcom,\n" +
" dtb_doct.gestione,\n" +
" MAX(versione) AS versione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.num_ord_provv\n" +
" FROM dtb_doc_pdf\n" +
" INNER JOIN dtb_doct\n" +
" ON dtb_doct.data_doc = dtb_doc_pdf.data_doc AND\n" +
" dtb_doct.num_doc = dtb_doc_pdf.num_doc AND\n" +
" dtb_doct.cod_dtip = dtb_doc_pdf.cod_dtip AND\n" +
" dtb_doct.cod_anag = dtb_doc_pdf.cod_anag AND\n" +
" dtb_doct.ser_doc = dtb_doc_pdf.ser_doc\n" +
" INNER JOIN dtb_docr ON dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag\n" +
" LEFT OUTER JOIN dtb_ordt\n" +
" ON dtb_doct.gestione = dtb_ordt.gestione AND\n" +
" dtb_doct.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_doct.num_ord = dtb_ordt.num_ord\n" +
" WHERE (filecontent IS NOT NULL OR ref_uuid IS NOT NULL)\n" +
" GROUP BY dtb_doct.num_doc, dtb_doct.data_doc, dtb_doct.cod_dtip,\n" +
" dtb_doct.cod_anag, dtb_doct.ser_doc,\n" +
" dtb_doct.cod_jcom, dtb_doct.gestione, dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord, dtb_ordt.num_ord_provv) t\n" +
" ON dtb_doc_pdf.num_doc = t.num_doc AND\n" +
" dtb_doc_pdf.data_doc = t.data_doc AND\n" +
" dtb_doc_pdf.cod_dtip = t.cod_dtip AND\n" +
" dtb_doc_pdf.cod_anag = t.cod_anag AND\n" +
" dtb_doc_pdf.ser_doc = t.ser_doc AND\n" +
" dtb_doc_pdf.versione = t.versione\n" +
" WHERE cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(stb_files_attached.file_name) AS cnt\n" +
" FROM stb_files_attached,\n" +
" drl_ord_attached,\n" +
" dtb_ordt\n" +
" WHERE stb_files_attached.id_attach = drl_ord_attached.id_attach\n" +
" AND drl_ord_attached.gestione = dtb_ordt.gestione\n" +
" AND drl_ord_attached.data_ord = dtb_ordt.data_ord\n" +
" AND drl_ord_attached.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ordt.cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(DISTINCT stb_files_attached.file_name) AS cnt\n" +
" FROM stb_files_attached,\n" +
" drl_doc_attached,\n" +
" dtb_docr\n" +
" WHERE stb_files_attached.id_attach = drl_doc_attached.id_attach\n" +
" AND drl_doc_attached.cod_anag = dtb_docr.cod_anag\n" +
" AND drl_doc_attached.cod_dtip = dtb_docr.cod_dtip\n" +
" AND drl_doc_attached.data_doc = dtb_docr.data_doc\n" +
" AND drl_doc_attached.ser_doc = dtb_docr.ser_doc\n" +
" AND drl_doc_attached.num_doc = dtb_docr.num_doc\n" +
" AND dtb_docr.cod_jcom = @codJcom\n" +
"\n" +
" UNION ALL\n" +
"\n" +
" SELECT COUNT(mtb_aart_link.id_riga) AS cnt\n" +
" FROM mtb_aart_link\n" +
" WHERE cod_mart IN (SELECT DISTINCT cod_mart\n" +
" FROM (SELECT Wot.cod_jcom, Wor.cod_mart\n" +
" FROM Wdtb_ordr Wor\n" +
" INNER JOIN Wdtb_ordt Wot\n" +
" ON Wor.gestione = Wot.gestione AND\n" +
" Wor.data_ord = Wot.data_ord AND Wor.num_ord = Wot.num_ord\n" +
" AND Wot.serie = Wor.serie\n" +
" UNION ALL\n" +
" SELECT wot.cod_jcom, dtb_ordr.cod_mart\n" +
" FROM wdtb_ordt wot\n" +
" INNER JOIN dtb_ordt ON wot.gestione = dtb_ordt.gestione AND\n" +
" wot.data_ord = dtb_ordt.data_ord AND\n" +
" wot.num_ord = dtb_ordt.num_ord_provv AND\n" +
" wot.serie = dtb_ordt.serie\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) t\n" +
" WHERE cod_jcom = @codJcom)) t\n" +
"\n" +
" RETURN @countAllegati\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,529 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241018130924 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement(
"exec TrimColumnsOfTable 'mtb_part', 'cod_mart'",
"exec TrimColumnsOfTable 'mtb_part_dt', 'cod_mart'");
createOrUpdateTrigger("t_UpdProgArti", "CREATE TRIGGER [dbo].[t_UpdProgArti] ON [dbo].[mtb_movi] AFTER INSERT,UPDATE ,DELETE\n" +
" AS\n" +
" BEGIN\n" +
" SET NOCOUNT ON; \n" +
" if (Update(qta_car) OR Update(qta_scar) OR UPDATE(num_car) OR Update(num_scar) OR Update(cod_mart) OR\n" +
" Update(cod_mdep) OR Update(cod_anag) OR Update(data_doc) OR Update(partita_mag) OR Update(cod_col) OR Update(cod_tagl) OR Update(val_car) or Update(val_scar)) or \n" +
" ( EXISTS(SELECT * FROM deleted) AND NOT EXISTS (SELECT * FROM inserted))\n" +
" begin\n" +
" /* ACQUISIZIONE DATI AZIENDA */\n" +
" DECLARE @annoMag int, @annoAtt int, @annoMov int, @codMdep varchar(5), @message varchar(max)/*, @existOneriInExpr varchar(1), @partitaMag varchar(20)*/, @isDocSoloVal varchar(1), \n" +
" @countGiacenzaNeg int, @checkGiacNegativa bit, @progressiviMagNew varchar(1)/*, @gestione varchar(1)*/, @valOneri decimal(20,5), @queryEscludiArticoli varchar(8000);\n" +
" \n" +
" SELECT @annoMag = anno_magaz, @annoAtt = anno_attuale FROM azienda\n" +
"\n" +
" SELECT @annoMov = IsNull(inserted.anno,deleted.anno) ,\n" +
" @codMdep = IsNull(inserted.cod_mdep,deleted.cod_mdep)\n" +
" FROM inserted FULL OUTER JOIN deleted ON inserted.cod_anag = deleted.cod_anag and\n" +
" inserted.cod_dtip = deleted.cod_dtip and\n" +
" inserted.data_doc = deleted.data_doc and\n" +
" inserted.ser_doc = deleted.ser_doc and\n" +
" inserted.num_doc = deleted.num_doc and\n" +
" inserted.id_riga = deleted.id_riga\n" +
"\n" +
" IF @annoMov >= @annoMag \n" +
" \n" +
" BEGIN\n" +
" \n" +
" /* ACQUISITIONE DATI LISTINO PER GESTIONE COSTO ACQUISTO */\n" +
" SELECT /*@gestione = dtb_doct.gestione, \n" +
" @existOneriInExpr = CASE WHEN CHARINDEX('ONERI', atb_list.expression_costo, 0) <> 0 THEN 'S' ELSE 'N' END, \n" +
" @partitaMag = inserted.partita_mag,*/\n" +
" @isDocSoloVal = CASE WHEN dtb_tipi.segno_qta_car = 0 AND dtb_tipi.segno_qta_scar = 0 THEN 'S' ELSE 'N' END\n" +
" FROM inserted INNER JOIN dtb_doct ON inserted.cod_dtip = dtb_doct.cod_dtip AND\n" +
" inserted.cod_anag = dtb_doct.cod_anag AND\n" +
" inserted.data_doc = dtb_doct.data_doc AND\n" +
" inserted.ser_doc = dtb_doct.ser_doc AND\n" +
" inserted.num_doc = dtb_doct.num_doc\n" +
" LEFT OUTER JOIN atb_list ON dtb_doct.listino = atb_list.cod_alis\n" +
" LEFT OUTER JOIN dtb_tipi ON inserted.cod_dtip = dtb_tipi.cod_dtip;\n" +
"\n" +
" /* ACQUISIZIONE DATI MOVIMENTO MODIFICATO */ \n" +
" SELECT tmp.cod_dtip,\n" +
" tmp.cod_anag,\n" +
" tmp.data_doc,\n" +
" tmp.ser_doc,\n" +
" tmp.num_doc,\n" +
" tmp.cod_mart,\n" +
" tmp.cod_col,\n" +
" tmp.cod_tagl,\n" +
" tmp.cod_mdep,\n" +
" tmp.qta_car,\n" +
" tmp.qta_scar,\n" +
" tmp.val_car, \n" +
" tmp.val_scar,\n" +
" tmp.num_car,\n" +
" tmp.num_scar,\n" +
" tmp.posizione, \n" +
" tmp.partita_mag, \n" +
" tmp.costo_unt,\n" +
" tmp.data_reg,\n" +
" dtb_tipi.flag_costo, \n" +
" gtb_anni_divi.cod_divi_cont_prima, \n" +
" gtb_divi.cambio,\n" +
" gtb_divi.cifre_dec,\n" +
" CASE WHEN /*dtb_tipi.flag_costo = 'S' AND */tmp.qta_car_costo > 0 THEN case when isDeleted = 'S' then -1 else 1 end * tmp.qta_car_costo ELSE 0 END as qta_car_costo,\n" +
" CASE WHEN /*dtb_tipi.flag_costo = 'S' AND */tmp.qta_car_costo > 0 THEN case when isDeleted = 'S' then -1 else 1 end * tmp.qta_car_costo * tmp.costo_unt ELSE 0 END as val_car_costo,\n" +
" dbo.f_getConcatena(tmp.cod_col, tmp.cod_tagl, tmp.partita_mag) as concatena, \n" +
" isDeleted,\n" +
" dtb_tipi.segno_qta_car\n" +
" into #TMP_MOVI\n" +
" FROM (SELECT IsNull(inserted.cod_dtip,deleted.cod_dtip) as cod_dtip,\n" +
" IsNull(inserted.cod_anag,deleted.cod_anag) as cod_anag,\n" +
" IsNull(inserted.data_doc,deleted.data_doc) as data_doc,\n" +
" IsNull(inserted.ser_doc,deleted.ser_doc) as ser_doc,\n" +
" ISNULL(inserted.num_doc, deleted.num_doc) as num_doc,\n" +
" rtrim(IsNUll(inserted.cod_mart, deleted.cod_mart)) as cod_mart,\n" +
" rtrim(IsNUll(inserted.cod_col, deleted.cod_col)) as cod_col,\n" +
" rtrim(IsNull(inserted.cod_tagl, deleted.cod_tagl )) as cod_tagl, \n" +
" IsNull(inserted.cod_mdep, deleted.cod_mdep) as cod_mdep,\n" +
" IsNull(inserted.qta_car,0) - IsNull(deleted.qta_car, 0) as qta_car,\n" +
" IsNull(inserted.qta_scar, 0) - IsNull(deleted.qta_scar,0) as qta_scar,\n" +
" IsNull(inserted.val_car,0) - IsNull(deleted.val_car, 0) as val_car, \n" +
" IsNull(inserted.val_scar, 0) - IsNull(deleted.val_scar,0) as val_scar,\n" +
" IsNull(inserted.num_car,0) - IsNull(deleted.num_car, 0) as num_car,\n" +
" IsNull(inserted.num_scar, 0) - IsNull(deleted.num_scar,0) as num_scar,\n" +
" IsNull(inserted.posizione, deleted.posizione) as posizione,\n" +
" rtrim(IsNull(inserted.partita_mag, deleted.partita_mag)) as partita_mag,\n" +
" IsNull(inserted.costo_unt,deleted.costo_unt) as costo_unt,\n" +
" IsNull(inserted.data_reg,deleted.data_reg) as data_reg,\n" +
" CASE WHEN ISNULL(inserted.qta_car, deleted.qta_car) > 0 OR ISNULL(inserted.qta_scar, deleted.qta_scar) < 0 \n" +
" THEN IsNull(inserted.qta_car,deleted.qta_car) + Abs(IsNull(inserted.qta_scar, deleted.qta_scar)) \n" +
" ELSE 0 END as qta_car_costo,\n" +
" CASE WHEN deleted.cod_mart IS NOT NULL AND inserted.cod_mart IS NULL THEN 'S' ELSE 'N' END as isDeleted \n" +
" FROM inserted FULL OUTER JOIN deleted ON inserted.cod_anag = deleted.cod_anag and\n" +
" inserted.cod_dtip = deleted.cod_dtip and\n" +
" inserted.data_doc = deleted.data_doc and\n" +
" inserted.ser_doc = deleted.ser_doc and\n" +
" inserted.num_doc = deleted.num_doc and\n" +
" inserted.cod_mart = deleted.cod_mart and\n" +
" inserted.cod_mdep = deleted.cod_mdep and\n" +
" dbo.f_getConcatena(inserted.cod_col, inserted.cod_tagl, inserted.partita_mag) = dbo.f_getConcatena(deleted.cod_col, deleted.cod_tagl, deleted.partita_mag) ) tmp\n" +
" INNER JOIN dtb_tipi on tmp.cod_dtip = dtb_tipi.cod_dtip\n" +
" INNER JOIN gtb_anni_divi ON DatePart(YEAR, tmp.data_reg) = gtb_anni_divi.anno\n" +
" INNER JOIN gtb_divi ON gtb_anni_divi.cod_divi_cont_prima = gtb_divi.cod_divi \n" +
" \n" +
" BEGIN\n" +
"\n" +
" update mtb_part set cod_mart = RTRIM(cod_mart) where LEN(cod_mart) <> DATALENGTH(cod_mart) and exists(select * from #TMP_MOVI m where m.cod_mart = mtb_part.cod_mart)\n" +
" update mtb_part_dt\n" +
" set cod_mart = RTRIM(cod_mart),\n" +
" partita_mag = RTRIM(partita_mag)\n" +
" where (LEN(cod_mart) <> DATALENGTH(cod_mart) or LEN(partita_mag) <> DATALENGTH(partita_mag)) and exists(select * from #TMP_MOVI m where m.cod_mart = mtb_part_dt.cod_mart)\n" +
"\n" +
"\n" +
" --INSERIMENTO NUOVI ARTICOLI NELLA MTB_PART\n" +
" INSERT INTO mtb_part\n" +
" ( cod_mart,\n" +
" cod_mdep,\n" +
" scorta_min,\n" +
" qta_esistente,\n" +
" qta_imp_cli,\n" +
" qta_imp_lav,\n" +
" qta_ord_for,\n" +
" qta_accant,\n" +
" num_esistente,\n" +
" num_imp_cli,\n" +
" num_imp_lav,\n" +
" num_ord_for,\n" +
" num_accant )\n" +
" SELECT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0\n" +
" FROM #TMP_MOVI LEFT OUTER JOIN mtb_part ON #TMP_MOVI.cod_mdep = mtb_part.cod_mdep and\n" +
" #TMP_MOVI.cod_mart = mtb_part.cod_mart\n" +
" WHERE mtb_part.cod_mart is null\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep\n" +
" \n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" /* AGGIORNAMENTO PROGRESSIVI MTB_PART */\n" +
" UPDATE mtb_part SET qta_esistente=qta_esistente+movi.qta,\n" +
" num_esistente=num_esistente+movi.num,\n" +
" mtb_part.cod_mart = movi.cod_mart\n" +
" FROM (SELECT #TMP_MOVI.cod_mdep, \n" +
" #TMP_MOVI.cod_mart, \n" +
" sum(#TMP_MOVI.qta_car - #TMP_MOVI.qta_scar) as qta,\n" +
" sum(#TMP_MOVI.num_car - #TMP_MOVI.num_scar) as num\n" +
" FROM #TMP_MOVI\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep) movi INNER JOIN mtb_part ON movi.cod_mdep = mtb_part.cod_mdep and\n" +
" movi.cod_mart = mtb_part.cod_mart\n" +
"\n" +
" IF @@ERROR <> 0 RETURN \n" +
" \n" +
" /*AGGIORNAMENTO VAL CAR COSTO */ \n" +
" UPDATE mtb_part\n" +
" SET mtb_part.cod_ult_forn = movi.cod_anag,\n" +
" mtb_part.data_ult_car = movi.data_doc,\n" +
" mtb_part.val_ult_car = movi.val_car_calc\n" +
" FROM (SELECT #TMP_MOVI.cod_mdep, \n" +
" #TMP_MOVI.cod_mart, \n" +
" Round(sum(#TMP_MOVI.val_car)/sum(#TMP_MOVI.qta_car), 5) as val_car_calc,\n" +
" #TMP_MOVI.cod_anag,\n" +
" #TMP_MOVI.data_doc\n" +
" FROM #TMP_MOVI \n" +
" WHERE #TMP_MOVI.flag_costo = 'S' and \n" +
" #TMP_MOVI.qta_car > 0\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.cod_anag,\n" +
" #TMP_MOVI.data_doc) movi INNER JOIN mtb_part ON movi.cod_mdep = mtb_part.cod_mdep and\n" +
" movi.cod_mart = mtb_part.cod_mart\n" +
" WHERE mtb_part.data_ult_car <= movi.data_doc OR mtb_part.data_ult_car IS NULL;\n" +
" \n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" INSERT INTO mtb_part_dt\n" +
" (cod_mart,\n" +
" cod_mdep,\n" +
" concatena,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" partita_mag,\n" +
" qta_esistente,\n" +
" qta_imp_cli,\n" +
" qta_imp_lav,\n" +
" qta_ord_for,\n" +
" qta_accant,\n" +
" num_esistente,\n" +
" num_imp_cli,\n" +
" num_imp_lav,\n" +
" num_ord_for,\n" +
" num_accant)\n" +
" SELECT DISTINCT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.concatena,\n" +
" #TMP_MOVI.cod_col,\n" +
" #TMP_MOVI.cod_tagl,\n" +
" #TMP_MOVI.partita_mag,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0\n" +
" FROM #TMP_MOVI LEFT OUTER JOIN mtb_part_dt ON #TMP_MOVI.cod_mdep = mtb_part_dt.cod_mdep and\n" +
" #TMP_MOVI.cod_mart = mtb_part_dt.cod_mart AND\n" +
" #TMP_MOVI.concatena = mtb_part_dt.concatena\n" +
" WHERE mtb_part_dt.cod_mart is null\n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" UPDATE mtb_part_dt SET qta_esistente=qta_esistente+movi.qta,\n" +
" num_esistente=num_esistente+ movi.num\n" +
" FROM ( SELECT #TMP_MOVI.cod_mdep, \n" +
" #TMP_MOVI.cod_mart, \n" +
" #TMP_MOVI.concatena,\n" +
" sum(#TMP_MOVI.qta_car - #TMP_MOVI.qta_scar) as qta,\n" +
" sum(#TMP_MOVI.num_car - #TMP_MOVI.num_scar) as num\n" +
" FROM #TMP_MOVI\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep, \n" +
" #TMP_MOVI.concatena) movi INNER JOIN mtb_part_dt ON movi.cod_mdep = mtb_part_dt.cod_mdep and\n" +
" movi.cod_mart = mtb_part_dt.cod_mart AND\n" +
" movi.concatena = mtb_part_dt.concatena\n" +
"\n" +
" IF @@ERROR <> 0 RETURN\n" +
" \n" +
" /* VERIFICA ESISTENZA NUOVA STORED PROCEDURE, SE NON PRESENTE NON DEVE EFFETTUARE IL CONTROLLO SUI NEGATIVI */\n" +
" SELECT @progressiviMagNew = dbo.getGestSetup('DATI_AZIENDA', 'PROGRESSIVI_MAG', 'NUOVA_PROCEDURA')\n" +
"\n" +
" \n" +
" \n" +
" SELECT @checkGiacNegativa = \n" +
" (SELECT TOP 1 mtb_depo.chk_giacenza_neg from mtb_depo inner join #TMP_MOVI on mtb_depo.cod_mdep = #TMP_MOVI.cod_mdep \n" +
" ORDER BY mtb_depo.chk_giacenza_neg desc)\n" +
" \n" +
" IF @checkGiacNegativa = 1 AND @progressiviMagNew = 'S'\n" +
" BEGIN \n" +
" /*Creazione tabella di appoggio degli articoli da escludere dal controllo*/\n" +
" DECLARE @tableArt LocationTableTypeUpdProgArti;\n" +
" SELECT @queryEscludiArticoli = dbo.getGestSetup('DATI_AZIENDA', 'CHECK_GIACENZA_NEGATIVA', 'QUERY_ESCLUDI_ARTICOLI')\n" +
" IF @queryEscludiArticoli IS NOT NULL\n" +
" BEGIN\n" +
" CREATE TABLE #temp (cod_mart varchar(15))\n" +
" EXEC ('INSERT #temp ' + @queryEscludiArticoli)\n" +
"\n" +
" INSERT INTO @tableArt \n" +
" SELECT * FROM #temp\n" +
" END\n" +
" \n" +
" /*Controllo articoli con giacenza negativa*/ \n" +
" SELECT @codMdep = cod_mdep, @message=message, @countGiacenzaNeg = conta\n" +
" from ( \n" +
" select TOP 1 depo.cod_mdep, giacenza.message, count(*) OVER (partition by (select 1)) as conta\n" +
" from (\n" +
" SELECT distinct cod_mdep \n" +
" FROM #TMP_MOVI \n" +
" WHERE qta_scar > 0 OR qta_car < 0 ) depo CROSS APPLY \n" +
" (select REPLACE (\n" +
" STUFF(( SELECT ',' + #TMP_MOVI.cod_mart + \n" +
" ISNULL( Case WHEN #TMP_MOVI.partita_mag IS not null THEN ' - Partita Mag.: ' + #TMP_MOVI.partita_mag ELSE '' END, '') +\n" +
" ISNULL( CASE WHEN #TMP_MOVI.cod_col IS not null and #TMP_MOVI.cod_tagl IS not null THEN ' - Colore ' + #TMP_MOVI.cod_col + ' - Taglia ' + #TMP_MOVI.cod_tagl ELSE '' END, '' )\n" +
" FROM #TMP_MOVI INNER JOIN mtb_part_dt ON #TMP_MOVI.cod_mdep = mtb_part_dt.cod_mdep and\n" +
" #TMP_MOVI.cod_mart = mtb_part_dt.cod_mart AND\n" +
" #TMP_MOVI.concatena = mtb_part_dt.concatena\n" +
" WHERE dbo.chk_GiacenzaNegativa(@tableArt,depo.cod_mdep, #TMP_MOVI.cod_dtip, #TMP_MOVI.cod_mart, #TMP_MOVI.partita_mag, #TMP_MOVI.cod_col, #TMP_MOVI.cod_tagl) < 0\n" +
" FOR XML PATH('')), 1, 1, '' ), ',', CHAR(13) + CHAR(10)) as message ) AS giacenza\n" +
" WHERE giacenza.message is not null\n" +
" ) t \n" +
"\n" +
" IF @countGiacenzaNeg > 0 AND @message is not null \n" +
" \n" +
" RAISERROR (N'Giancenza negativa sul deposito %s - articoli: %s ', -- Message text. \n" +
" 16, -- Severity, \n" +
" 1, -- State, \n" +
" @codMdep, \n" +
" @message\n" +
" ) WITH NOWAIT; \n" +
" END\n" +
" \n" +
" /* AGGIORNAMENTO PROGRESSIVI MTB_SART */\n" +
" INSERT INTO mtb_sart\n" +
" ( cod_mart,\n" +
" cod_mdep,\n" +
" anno,\n" +
" qta_iniz,\n" +
" val_iniz,\n" +
" qta_car,\n" +
" val_car,\n" +
" qta_scar,\n" +
" val_scar,\n" +
" cod_divi_cont,\n" +
" cambio_divi_cont,\n" +
" qta_car_costo,\n" +
" val_car_costo, \n" +
" num_iniz, \n" +
" num_car, \n" +
" num_scar ) \n" +
" SELECT DISTINCT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" @annoMov,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" #TMP_MOVI.cod_divi_cont_prima,\n" +
" #TMP_MOVI.cambio,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0\n" +
" FROM #TMP_MOVI LEFT OUTER JOIN mtb_sart ON #TMP_MOVI.cod_mdep = mtb_sart.cod_mdep AND\n" +
" #TMP_MOVI.cod_mart = mtb_sart.cod_mart AND\n" +
" mtb_sart.anno = @annoMov\n" +
" WHERE mtb_sart.anno is null AND #TMP_MOVI.isDeleted = 'N'\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.cod_divi_cont_prima,\n" +
" #TMP_MOVI.cambio;\n" +
"\n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" UPDATE mtb_sart \n" +
" SET mtb_sart.qta_car=mtb_sart.qta_car+movi.qta_car,\n" +
" mtb_sart.qta_scar=mtb_sart.qta_scar+movi.qta_scar,\n" +
" mtb_sart.val_car=mtb_sart.val_car+Round( movi.val_car, movi.cifre_dec),\n" +
" mtb_sart.val_scar=mtb_sart.val_scar+Round(movi.val_scar, movi.cifre_dec),\n" +
" mtb_sart.cod_divi_cont=movi.cod_divi_cont_prima,\n" +
" mtb_sart.cambio_divi_cont= movi.cambio,\n" +
" mtb_sart.qta_car_costo= mtb_sart.qta_car_costo + movi.qta_car_costo,\n" +
" mtb_sart.val_car_costo= mtb_sart.val_car_costo + movi.val_car_costo,\n" +
" mtb_sart.num_car = mtb_sart.num_car +movi.num_car,\n" +
" mtb_sart.num_scar = mtb_sart.num_scar + movi.num_scar,\n" +
" mtb_sart.data_ult_car=case when movi.flag_costo = 'S' AND ( mtb_sart.data_ult_car IS NULL OR mtb_sart.data_ult_car <= movi.data_doc ) AND movi.qta_car > 0 AND movi.val_car > 0 THEN movi.data_reg ELSE mtb_sart.data_ult_car END,\n" +
" mtb_sart.val_ult_car= case when movi.flag_costo = 'S' AND ( mtb_sart.data_ult_car IS NULL OR mtb_sart.data_ult_car <= movi.data_doc ) AND movi.qta_car > 0 AND movi.val_car > 0 THEN movi.val_car/movi.qta_car ELSE mtb_sart.val_ult_car END,\n" +
" mtb_sart.data_ult_scar= case when ( mtb_sart.data_ult_scar IS NULL OR mtb_sart.data_ult_scar <= movi.data_doc ) AND movi.qta_scar > 0 AND movi.val_scar > 0 THEN movi.data_reg ELSE mtb_sart.data_ult_scar END,\n" +
" mtb_sart.val_ult_scar= case when ( mtb_sart.data_ult_scar IS NULL OR mtb_sart.data_ult_scar <= movi.data_doc ) AND movi.qta_scar > 0 AND movi.val_scar > 0 THEN movi.val_scar/movi.qta_scar ELSE mtb_sart.val_ult_scar END \n" +
" FROM ( SELECT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" Sum(#TMP_MOVI.qta_car) as qta_car,\n" +
" SUM(#TMP_MOVI.val_car) as val_car,\n" +
" Sum(#TMP_MOVI.qta_scar) as qta_scar,\n" +
" SUM(#TMP_MOVI.val_scar) as val_scar,\n" +
" #TMP_MOVI.cod_divi_cont_prima,\n" +
" #TMP_MOVI.cambio,\n" +
" #TMP_MOVI.cifre_dec,\n" +
" sum(#TMP_MOVI.qta_car_costo) as qta_car_costo,\n" +
" sum(#TMP_MOVI.val_car_costo) as val_car_costo,\n" +
" sum(#TMP_MOVI.num_car) as num_car,\n" +
" sum(#TMP_MOVI.num_scar) as num_scar,\n" +
" #TMP_MOVI.flag_costo,\n" +
" #TMP_MOVI.data_doc,\n" +
" #TMP_MOVI.data_reg\n" +
" FROM #TMP_MOVI\n" +
" GROUP BY #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.cod_divi_cont_prima,\n" +
" #TMP_MOVI.cambio,\n" +
" #TMP_MOVI.cifre_dec,\n" +
" #TMP_MOVI.flag_costo,\n" +
" #TMP_MOVI.data_doc,\n" +
" #TMP_MOVI.data_reg) movi INNER JOIN mtb_sart ON movi.cod_mdep = mtb_sart.cod_mdep AND\n" +
" movi.cod_mart = mtb_sart.cod_mart\n" +
" WHERE mtb_sart.anno = @annoMov\n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" /* AGGIORNAMENTO PROGRESSIVI MTB_SART */\n" +
" INSERT INTO mtb_sart_dt\n" +
" ( cod_mart,\n" +
" cod_mdep,\n" +
" anno,\n" +
" concatena,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" partita_mag,\n" +
" qta_iniz,\n" +
" qta_car,\n" +
" qta_scar, \n" +
" num_iniz, \n" +
" num_car, \n" +
" num_scar)\n" +
" SELECT DISTINCT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.cod_mdep,\n" +
" @annoMov,\n" +
" #TMP_MOVI.concatena,\n" +
" #TMP_MOVI.cod_col,\n" +
" #TMP_MOVI.cod_tagl,\n" +
" #TMP_MOVI.partita_mag,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0,\n" +
" 0\n" +
" FROM #TMP_MOVI LEFT OUTER JOIN mtb_sart_dt ON #TMP_MOVI.cod_mdep = mtb_sart_dt.cod_mdep AND\n" +
" #TMP_MOVI.cod_mart = mtb_sart_dt.cod_mart AND\n" +
" #TMP_MOVI.concatena = mtb_sart_dt.concatena AND\n" +
" mtb_sart_dt.anno = @annoMov\n" +
" WHERE mtb_sart_dt.anno is null\n" +
" IF @@ERROR <> 0 RETURN\n" +
"\n" +
" /* AGGIORNAMENTO PROGRESSIVI MTB_SART_DT */\n" +
" UPDATE mtb_sart_dt\n" +
" SET mtb_sart_dt.qta_car=mtb_sart_dt.qta_car+movi.qta_car,\n" +
" mtb_sart_dt.qta_scar=mtb_sart_dt.qta_scar+movi.qta_scar,\n" +
" mtb_sart_dt.num_car = mtb_sart_dt.num_car +movi.num_car,\n" +
" mtb_sart_dt.num_scar = mtb_sart_dt.num_scar +movi.num_scar\n" +
" FROM (SELECT #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.concatena,\n" +
" Sum(#TMP_MOVI.qta_car) as qta_car,\n" +
" Sum(#TMP_MOVI.qta_scar) as qta_scar,\n" +
" SUM(#TMP_MOVI.num_car) AS num_car,\n" +
" SUM(#TMP_MOVI.num_scar) as num_scar\n" +
" FROM #TMP_MOVI \n" +
" GROUP BY #TMP_MOVI.cod_mdep,\n" +
" #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.concatena) movi INNER JOIN mtb_sart_dt ON movi.cod_mdep = mtb_sart_dt.cod_mdep AND\n" +
" movi.cod_mart = mtb_sart_dt.cod_mart AND\n" +
" movi.concatena = mtb_sart_dt.concatena \n" +
" WHERE mtb_sart_dt.anno = @annoMov;\n" +
" IF @@ERROR <> 0 RETURN\n" +
"/*\n" +
" /*FABIO (11-05-22): questa logica non dovrebbe essere più utilizzata; anche perchè su aziende con molti \n" +
" documenti rallentava tantissimo ed inoltre la vecchia logica contenere un errore nella query che qui è stato risolto, ma è comunque lento*/\n" +
"\n" +
" /*17-06-2019 (FABIO): SE SI TRATTA DI UNA RIGA DI DOCUMENTO DI ACQUISTO CON PARTITA E CHE NON PREVEDE NELLA FORMULA DEL \n" +
" COSTO DEL LISTINO GLI ONERI, OPPURE NON HA LISTINO DI ACQUISTO ASSOCIATO OPPURE SI TRATTA DI UN DOCUMENTI DI LAVORAZIONE\\VENDITA\n" +
" E' NECESSARIO NEL CALCOLARE IL COSTO DI PARTITA DI VALORIZZARE ANCHE IL COSTO DI EVENTUALI RIPARTIZIONI ONERI*/\n" +
" IF @existOneriInExpr = 'N' AND @partitaMag IS NOT NULL AND @isDocSoloVal = 'N'\n" +
" /* Acquisizione val_oneri da documento solo valore (RIPARTIZIONE ONERI)*/\n" +
" SELECT @valOneri = max(dtb_docr.val_oneri * dtb_docr.rap_conv)\n" +
" FROM mtb_movi, mtb_aart, mtb_grup, mtb_depo, dtb_tipi, dtb_docr, inserted\n" +
" WHERE mtb_movi.cod_dtip = dtb_docr.cod_dtip and\n" +
" mtb_movi.cod_anag = dtb_docr.cod_anag and\n" +
" mtb_movi.data_doc = dtb_docr.data_doc and\n" +
" mtb_movi.ser_doc = dtb_docr.ser_doc and\n" +
" mtb_movi.num_doc = dtb_docr.num_doc and\n" +
" dtb_docr.cod_dtip_comp = inserted.cod_dtip and\n" +
" dtb_docr.cod_anag_comp = inserted.cod_anag and\n" +
" dtb_docr.data_doc_comp = inserted.data_doc and\n" +
" dtb_docr.ser_doc_comp = inserted.ser_doc and\n" +
" dtb_docr.num_doc_comp = inserted.num_doc and\n" +
" mtb_movi.partita_mag = dtb_docr.partita_mag and\n" +
" mtb_movi.cod_mart = dtb_docr.cod_mart and\n" +
" dtb_tipi.cod_dtip = mtb_movi.cod_dtip and \n" +
" mtb_movi.cod_mart = mtb_aart.cod_mart and \n" +
" mtb_movi.cod_mdep = mtb_depo.cod_mdep and \n" +
" mtb_aart.cod_mgrp = mtb_grup.cod_mgrp and \n" +
" mtb_depo.flag_val = 'S' and mtb_grup.flag_val_mag = 'S' and \n" +
" dtb_tipi.flag_costo = 'S' and dtb_tipi.gestione <> 'V' and \n" +
" mtb_movi.qta_car = 0 and mtb_movi.val_car > 0 and\n" +
" dtb_docr.cod_dtip_comp <> dtb_docr.cod_dtip and\n" +
" mtb_movi.data_doc >= DATEADD(day, -365, getDate()); */\n" +
" \n" +
" /*SE SI TRATTA DI UN DOCUMENTO CHE PREVEDE LA VALORIZZAZIONE DEL COSTO PRODOTTO \n" +
" (ESCLUSO IL DOCUMENTO A SOLO VALORE CHE VERRA' PRESO CON IL RICALCOLO DELLA PARTITA DI MAGAZZINO)\n" +
" ALLORA DEVE ESSERE AGGIORNATO ANCHE IL COSTO DELL'EVENTUALE PARTITA DI MAGAZZINO*/\n" +
" IF @isDocSoloVal = 'N' \n" +
" BEGIN\n" +
" UPDATE mtb_partita_mag \n" +
" SET costo_unt_um_mag=movi.costo_unt /*+ ISNULL(@valOneri, 0)*/\n" +
" FROM mtb_partita_mag INNER JOIN (SELECT #TMP_MOVI.cod_mart,\n" +
" #TMP_MOVI.partita_mag,\n" +
" #TMP_MOVI.costo_unt\n" +
" FROM #TMP_MOVI\n" +
" WHERE #TMP_MOVI.partita_mag IS NOT NULL AND\n" +
" #TMP_MOVI.flag_costo = 'S' ) movi ON mtb_partita_mag.cod_mart = movi.cod_mart AND\n" +
" mtb_partita_mag.partita_mag = movi.partita_mag\n" +
" IF @@ERROR <> 0 RETURN\n" +
" END \n" +
"\n" +
" /*AGGIORNAMENTO ULTIMO CARICO/SCARICO SU ANAGRAFICA ARTICOLI*/\n" +
" UPDATE mtb_aart \n" +
" SET mtb_aart.data_ult_car=case when #TMP_MOVI.flag_costo = 'S' AND #TMP_MOVI.segno_qta_car > 0 AND ( mtb_aart.data_ult_car IS NULL OR mtb_aart.data_ult_car <= #TMP_MOVI.data_reg ) AND #TMP_MOVI.qta_car > 0 AND #TMP_MOVI.val_car > 0 THEN #TMP_MOVI.data_reg ELSE mtb_aart.data_ult_car END,\n" +
" mtb_aart.val_ult_car= case when #TMP_MOVI.flag_costo = 'S' AND #TMP_MOVI.segno_qta_car > 0 AND ( mtb_aart.data_ult_car IS NULL OR mtb_aart.data_ult_car <= #TMP_MOVI.data_reg ) AND #TMP_MOVI.qta_car > 0 AND #TMP_MOVI.val_car > 0 THEN #TMP_MOVI.costo_unt ELSE mtb_aart.val_ult_car END,\n" +
" mtb_aart.cod_ult_forn= case when #TMP_MOVI.flag_costo = 'S' AND #TMP_MOVI.segno_qta_car > 0 AND ( mtb_aart.data_ult_car IS NULL OR mtb_aart.data_ult_car <= #TMP_MOVI.data_reg ) AND #TMP_MOVI.qta_car > 0 AND #TMP_MOVI.val_car > 0 THEN #TMP_MOVI.cod_anag ELSE mtb_aart.cod_ult_forn END,\n" +
" mtb_aart.data_ult_scar= case when ( mtb_aart.data_ult_scar IS NULL OR mtb_aart.data_ult_scar <= #TMP_MOVI.data_reg ) AND #TMP_MOVI.qta_scar > 0 AND #TMP_MOVI.val_scar > 0 THEN #TMP_MOVI.data_reg ELSE mtb_aart.data_ult_scar END,\n" +
" mtb_aart.val_ult_scar= case when ( mtb_aart.data_ult_scar IS NULL OR mtb_aart.data_ult_scar <= #TMP_MOVI.data_reg ) AND #TMP_MOVI.qta_scar > 0 AND #TMP_MOVI.val_scar > 0 THEN #TMP_MOVI.val_scar/#TMP_MOVI.qta_scar ELSE mtb_aart.val_ult_scar END \n" +
" FROM mtb_aart INNER JOIN #TMP_MOVI ON mtb_aart.cod_mart = #TMP_MOVI.cod_mart\n" +
" IF @@ERROR <> 0 RETURN\n" +
" END\n" +
" END\n" +
" end \n" +
" SET NOCOUNT OFF; \n" +
" END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,47 @@
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.entity.StbPublications;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import java.util.List;
public class Migration_20241021113736 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String sql = "ALTER TABLE dbo.stb_publications" +
" ADD last_group_id BIGINT DEFAULT 0 NOT NULL";
executeStatement(sql);
String maxTransactionIdSql = "SELECT MAX(group_id) AS max_id " +
"FROM stb_transaction_log";
Long maxTransactionId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), maxTransactionIdSql);
maxTransactionId = maxTransactionId == null ? 0 : ++maxTransactionId;
String retrievePublicationsSql = "SELECT * FROM stb_publications";
final List<StbPublications> stbPublications = UtilityDB.executeSimpleQueryDTO(advancedDataSource.getConnection(), retrievePublicationsSql, StbPublications.class);
if (stbPublications == null || stbPublications.isEmpty())
return;
for (StbPublications stbPublication : stbPublications) {
stbPublication.setLastGroupId(maxTransactionId);
stbPublication.setOperation(OperationType.UPDATE);
stbPublication.manageWithParentConnection(advancedDataSource.getConnection());
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
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_20241021121751 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isCustomer(IntegryCustomer.Carelli) || isCustomer(IntegryCustomer.SaporiVeri))
updateSetupValue("DATI_AZIENDA", "MENU_GENERALE", "LOAD_MENU_FROM_DB", "S");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,29 @@
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_20241021135903 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Biolevante))
executeStatement("update mtb_depo set cod_mdep_cv = '01' WHERE cod_mdep = 'D03'");
createOrUpdateView("mvw_depo_fisc", "CREATE VIEW mvw_depo_fisc\n" +
"AS\n" +
"SELECT cod_mdep, isNull(cod_mdep_cv, cod_mdep) as cod_mdep_fisc\n" +
"FROM dbo.mtb_depo");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,609 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241021153542 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("MES_GetWorkOrders",
"CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" +
" @codAnag VARCHAR(5))\n" +
" RETURNS @val TABLE\n" +
" (\n" +
" [sort] [int] NULL,\n" +
" [cod_jcom] [varchar](10) NULL,\n" +
" [data_ord_prod] [datetime] NULL,\n" +
" [num_ord_prod] [int] NULL,\n" +
" [riga_ord_prod] [int] NULL,\n" +
" [flag_avviabile] [varchar](1) NULL,\n" +
" [flag_tracciabilita] [varchar](1) NULL,\n" +
" [unt_ord] [varchar](3) NULL,\n" +
" [rap_conv] [numeric](20, 10) NULL,\n" +
" [unt_ord2] [varchar](3) NULL,\n" +
" [rap_conv2] [numeric](20, 5) NULL,\n" +
" [unt_ord3] [varchar](3) NULL,\n" +
" [rap_conv3] [numeric](20, 5) NULL,\n" +
" [descrizione_prod] [varchar](255) NULL,\n" +
" [num_pezzi] [numeric](38, 6) NULL,\n" +
" [num_cnf] [numeric](20, 5) NULL,\n" +
" [gg_scad_partita] [int] NULL,\n" +
" [qta_cnf] [numeric](15, 5) NULL,\n" +
" [colli_pedana] [numeric](20, 5) NULL,\n" +
" [num_pedane] [numeric](38, 18) NULL,\n" +
" [pos_riga] [int] NULL,\n" +
" [flag_evaso_prod] [varchar](1) NULL,\n" +
" [flag_evaso_forzato] [varchar](1) NOT NULL,\n" +
" [flag_ordine_evaso] [varchar](1) NULL,\n" +
" [gestione] [varchar](1) NOT NULL,\n" +
" [data_ord] [datetime] NOT NULL,\n" +
" [cod_tcol_UL] [varchar](5) NULL,\n" +
" [descrizione_tcol] [varchar](40) NULL,\n" +
" [cod_anag] [varchar](5) NOT NULL,\n" +
" [rag_soc_anag] [varchar](40) NULL,\n" +
" [part_iva] [varchar](20) NULL,\n" +
" [rif_ord] [varchar](40) NULL,\n" +
" [cod_vdes] [varchar](5) NULL,\n" +
" [cod_mdep] [varchar](5) NOT NULL,\n" +
" [cod_mdep_prod] [varchar](5) NOT NULL,\n" +
" [num_ord] [int] NOT NULL,\n" +
" [cod_jfas] [varchar](5) NOT NULL,\n" +
" [cod_jfas_lav] [varchar](5) NOT NULL,\n" +
" [partita_mag] [varchar](20) NULL,\n" +
" [note_lav] [varchar](255) NULL,\n" +
" [data_scad] [datetime] NULL,\n" +
" [cod_prod] [varchar](15) NULL,\n" +
" [descrizione_commessa] [varchar](40) NULL,\n" +
" [data_iniz_prod] [datetime] NULL,\n" +
" [max_step] [int] NULL,\n" +
" [unt_mis_prod] [varchar](5) NULL,\n" +
" [qta_batch_prod] [numeric](15, 5) NULL,\n" +
" [rap_conv_prod] [numeric](20, 10) NULL,\n" +
" [data_iniz] [datetime] NULL,\n" +
" [data_fine] [datetime] NULL,\n" +
" [qta_prod] [decimal](20, 5) NULL,\n" +
" [qta_lav] [decimal](20, 5) NULL,\n" +
" [max_fase] [int] NULL,\n" +
" [num_fase] [int] NULL,\n" +
" [hr_num] [int] NOT NULL,\n" +
" [descrizione_attivita] [varchar](1024) NULL,\n" +
" [prod_std] [numeric](38, 21) NULL,\n" +
" [elapsed_time] [int] NULL,\n" +
" [qta_trasferite] [numeric](38, 5) NULL,\n" +
" [udc_trasferiti] [int] NULL,\n" +
" [stato] [varchar](11) NOT NULL,\n" +
" [pz_trasferiti] [int] NULL,\n" +
" [run_time_sec] [numeric](38, 6) NULL,\n" +
" [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" +
" [run_time_hour] [int] NULL,\n" +
" [run_time_min] [numeric](38, 6) NULL,\n" +
" [run_time_end] [datetime] NULL,\n" +
" [id_lotto] [int] NULL,\n" +
" [data_lotto] [datetime] NULL,\n" +
" [peso_kg] [numeric](20, 5) NULL,\n" +
" [data_cons_prod_max] [datetime] NULL\n" +
" ) AS\n" +
"BEGIN\n" +
"\n" +
" -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" +
"-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" +
"-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" +
"-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" +
"-- DECLARE @codAnag VARCHAR(5) = null;\n" +
"\n" +
" SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" +
" SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" +
" SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" +
"\n" +
"--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" +
" WITH setup AS (SELECT @dateStart AS date_start,\n" +
" @dateEnd AS date_end,\n" +
" @flagEvaso AS flag_evaso,\n" +
" @codJfas AS cod_jfas,\n" +
" @codAnag AS cod_anag),\n" +
" setup_jfas AS (SELECT value_string AS cod_jfas\n" +
" FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" +
" setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" +
" FROM stb_gest_setup_depo\n" +
" WHERE gest_name = 'CARICO_SCARICO_PF'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" +
" setup_run_time\n" +
" AS (SELECT dbo.getGestSetup('PVM', 'MONITORAGGIO_LINEE_V2', 'RESTART_RUN_TIME_END') AS flag_restart),\n" +
" mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord,\n" +
" SUM(mtb_colr.qta_col) AS qta_col,\n" +
" SUM(mtb_colr.num_cnf) AS num_cnf\n" +
" FROM mtb_colr\n" +
" WHERE mtb_colr.gestione_rif IS NULL\n" +
" AND mtb_colr.data_collo_rif IS NULL\n" +
" AND mtb_colr.ser_collo_rif IS NULL\n" +
" AND mtb_colr.num_collo_rif IS NULL\n" +
" AND EXISTS(SELECT *\n" +
" FROM mtb_colt\n" +
" WHERE mtb_colr.gestione = mtb_colt.gestione\n" +
" AND mtb_colr.data_collo = mtb_colt.data_collo\n" +
" AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" +
" AND mtb_colr.num_collo = mtb_colt.num_collo\n" +
" AND mtb_colt.segno = 1)\n" +
" GROUP BY mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord),\n" +
" in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" +
" dtb_ord_macc.data_ord,\n" +
" dtb_ord_macc.num_ord,\n" +
" MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" +
" FROM dtb_ord_macc\n" +
" INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" +
" FROM dtb_ord_macc\n" +
" GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" +
" ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" +
" dtb_ord_macc.num_ord = last_event.num_ord AND\n" +
" dtb_ord_macc.gestione = last_event.gestione AND\n" +
" dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" +
" dtb_ord_macc.data_mov = last_event.data_mov\n" +
" INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" +
" FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" +
" ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" +
" WHERE value = 1\n" +
" GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" +
" dtb_ord_max_step AS (SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" MAX(id_step) AS max_step,\n" +
" num_fase,\n" +
" MAX(num_fase) OVER (PARTITION BY gestione,\n" +
" data_ord,\n" +
" num_ord) AS max_fase,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" SUM(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE()))) AS elapsed_time\n" +
" FROM dtb_ord_steps\n" +
" CROSS APPLY setup\n" +
" WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" +
" GROUP BY gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" num_fase,\n" +
" dtb_ord_steps.cod_jfas),\n" +
" dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" +
" dtb_ordr.num_ord AS num_ord_prod,\n" +
" dtb_ordr.riga_ord AS riga_ord_prod,\n" +
" dtb_ordr.gestione AS gestione_ord_prod,\n" +
" IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" +
" 'N') AS flag_avviabile,\n" +
" mtb_aart_prod.flag_tracciabilita,\n" +
" dtb_ordr.unt_ord,\n" +
" dtb_ordr.rap_conv,\n" +
" dtb_ordr.unt_ord2,\n" +
" CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" +
" dtb_ordr.unt_ord3,\n" +
" CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" +
" dtb_ordr.qta_ord,\n" +
" dtb_ordr.qta_ord2,\n" +
" dtb_ordr.qta_ord3,\n" +
" dtb_ordr.num_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" +
" ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" +
" mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" +
" IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" +
" IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" +
" dtb_ordr.colli_pedana)\n" +
" AS colli_pedana,\n" +
" dtb_ordr.pos_riga,\n" +
" dtb_ordt.cod_mdep,\n" +
"\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" +
" NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" +
" mtb_aart_prod.rap_conv2,\n" +
" 1)) AS calc_rap_conv,\n" +
" mtb_aart_prod.gg_scad_partita,\n" +
" mtb_aart_prod.qta_cnf\n" +
" FROM dtb_ordr\n" +
" INNER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND\n" +
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
" INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" +
" ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" +
" dtb_ordr_prod_with_art.data_ord_prod,\n" +
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
" dtb_ordr_prod_with_art.unt_ord,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv,\n" +
" dtb_ordr_prod_with_art.unt_ord2,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv2\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv2\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv2,\n" +
" dtb_ordr_prod_with_art.unt_ord3,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv3\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv3\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv3,\n" +
" ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" +
" dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" +
" dtb_ordr_prod_with_art.num_cnf,\n" +
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
" dtb_ordr_prod_with_art.qta_cnf,\n" +
" dtb_ordr_prod_with_art.colli_pedana,\n" +
" dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" +
" dtb_ordr_prod_with_art.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" CASE\n" +
" WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" THEN 'I'\n" +
" WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" +
" THEN flag_evaso_prod\n" +
" END AS flag_ordine_evaso,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" mtb_tcol.descrizione AS descrizione_tcol,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc AS rag_soc_anag,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" ISNULL(dtb_ordr_prod_with_art.cod_mdep,dtb_ordt.cod_mdep) AS cod_mdep_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas AS cod_jfas_lav,\n" +
" mtb_partita_mag.partita_mag,\n" +
" dtb_ordt.note AS note_lav,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" jtb_comt.descrizione AS descrizione_commessa,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" q.max_step,\n" +
" q.max_fase,\n" +
" q.num_fase,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1), 'Colli',\n" +
" jtb_cicl.unt_mis_prod)\n" +
" AS unt_mis_prod,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1),\n" +
" dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" +
" AS qta_batch_prod,\n" +
" IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" +
" jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ord_steps.qta_lav AS qta_lav,\n" +
" IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod) AS qta_prod,\n" +
" dtb_ord_steps.hr_num,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" +
" q.elapsed_time,\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" +
" COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" +
" CASE\n" +
" WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" +
" (q.max_step > 0 AND\n" +
" dtb_ord_steps.data_fine IS NOT NULL AND\n" +
" DATEDIFF(MINUTE,\n" +
" dtb_ord_steps.data_fine,\n" +
" in_production_machines.max_data_mov) >\n" +
" 5)))\n" +
" THEN 'IN AVVIO'\n" +
" WHEN q.max_step = 0\n" +
" THEN 'PROGRAMMATO'\n" +
" WHEN data_fine IS NULL\n" +
" THEN 'IN CORSO'\n" +
" ELSE 'IN PAUSA'\n" +
" END\n" +
" AS stato,\n" +
" CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" +
" CASE\n" +
" WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" +
" THEN\n" +
" (jtb_dist_clav_dir.duration /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0)))\n" +
" ELSE 0 END AS run_time_sec,\n" +
" jl.id_lotto,\n" +
" jlt.data_lotto,\n" +
" mtb_aart.peso_kg,\n" +
" dtb_ordt.data_cons_prod_max\n" +
" FROM dtb_ord_steps\n" +
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" +
" LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" +
" ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" +
" LEFT OUTER JOIN jtb_dist_clav_dir\n" +
" ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" +
" dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" +
" LEFT OUTER JOIN mtb_partita_mag\n" +
" ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" +
" dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" +
" mtb_partita_mag.flag_stato = 'A'\n" +
" LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" +
" dtb_ordt.gestione = mtb_colr.gestione AND\n" +
" dtb_ordt.num_ord = mtb_colr.num_ord AND\n" +
" dtb_ordt.cod_prod = mtb_colr.cod_mart\n" +
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" +
" INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" +
" dtb_ord_steps.data_ord = q.data_ord AND\n" +
" dtb_ord_steps.num_ord = q.num_ord AND\n" +
" dtb_ord_steps.id_step = q.max_step AND\n" +
" dtb_ord_steps.cod_jfas = q.cod_jfas\n" +
" LEFT OUTER JOIN dtb_ordr_prod_with_art\n" +
" ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" +
" dtb_ordt.gestione_rif AND\n" +
" dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" +
" dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" +
" dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" +
" LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" +
" LEFT OUTER JOIN in_production_machines\n" +
" ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" +
" AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" +
" AND dtb_ord_steps.gestione = in_production_machines.gestione\n" +
" LEFT OUTER JOIN jtb_lotr jl\n" +
" ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" +
" dtb_ordt.gestione = jl.gestione AND\n" +
" dtb_ordt.data_ord = jl.data_ord AND\n" +
" dtb_ordt.num_ord = jl.num_ord\n" +
" LEFT OUTER JOIN jtb_lott jlt\n" +
" ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" +
"\n" +
" CROSS APPLY setup\n" +
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
" AND (setup.flag_evaso IS NULL\n" +
" OR (\n" +
" (setup.flag_evaso = 'I'\n" +
" AND\n" +
" dtb_ord_steps.flag_step_attivo = 'S'\n" +
" AND (flag_evaso_prod = 'I'\n" +
" OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" +
" AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" )\n" +
" OR (setup.flag_evaso = 'E '\n" +
" AND (flag_evaso_prod = 'E' OR jlt.data_chiusura IS NOT NULL))\n" +
" )\n" +
" )\n" +
" AND (setup.cod_jfas IS NULL\n" +
" OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" +
" AND (setup.cod_anag IS NULL\n" +
" OR dtb_ordt.cod_anag = setup.cod_anag)\n" +
" GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" +
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
" dtb_ordr_prod_with_art.unt_ord,\n" +
" mtb_partita_mag.rap_conv2,\n" +
" mtb_partita_mag.rap_conv3,\n" +
" dtb_ordt.note,\n" +
" dtb_ordr_prod_with_art.rap_conv,\n" +
" dtb_ordt.descrizione_prod,\n" +
" dtb_ordt.descr_estesa_prod,\n" +
" dtb_ordr_prod_with_art.num_cnf,\n" +
" mtb_aart.qta_cnf,\n" +
" mtb_aart.gg_scad_partita,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" dtb_ordr_prod_with_art.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordt.cod_jcom,\n" +
" mtb_partita_mag.partita_mag,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" q.max_step,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" dtb_ordr_prod_with_art.cod_mdep,\n" +
" mtb_aart.colli_pedana,\n" +
" dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod,\n" +
" jtb_dist_clav_dir.duration,\n" +
" jtb_comt.descrizione,\n" +
" q.elapsed_time,\n" +
" dtb_ordr_prod_with_art.colli_pedana,\n" +
" dtb_ord_steps.hr_num,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.unt_mis2,\n" +
" mtb_aart.rap_conv2,\n" +
" mtb_aart.unt_mis3,\n" +
" mtb_aart.rap_conv3,\n" +
" dtb_ordr_prod_with_art.unt_ord2,\n" +
" dtb_ordr_prod_with_art.unt_ord3,\n" +
" dtb_ordr_prod_with_art.qta_ord,\n" +
" dtb_ordr_prod_with_art.qta_ord2,\n" +
" dtb_ordr_prod_with_art.qta_ord3,\n" +
" dtb_ordr_prod_with_art.rap_conv2,\n" +
" dtb_ordr_prod_with_art.rap_conv3,\n" +
" dtb_ordr_prod_with_art.qta_cnf,\n" +
" dtb_ordr_prod_with_art.cal_qta_cnf,\n" +
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
" jtb_cicl.qta_prod,\n" +
" jtb_cicl.rap_conv_prod,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" jtb_cicl.unt_mis_prod,\n" +
" mtb_tcol.descrizione,\n" +
" dtb_ordt.qta_prod,\n" +
" dtb_ordt.rap_conv_prod,\n" +
" setupCaricoImmediato.flag_carico_scarico_immediato,\n" +
" in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" +
" jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg, dtb_ordt.data_cons_prod_max)\n" +
" INSERT\n" +
" INTO @val\n" +
" SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" +
" cod_jcom,\n" +
" data_ord_prod,\n" +
" num_ord_prod,\n" +
" riga_ord_prod,\n" +
" flag_avviabile,\n" +
" flag_tracciabilita,\n" +
" unt_ord,\n" +
" rap_conv,\n" +
" unt_ord2,\n" +
" rap_conv2,\n" +
" unt_ord3,\n" +
" rap_conv3,\n" +
" descrizione_prod,\n" +
" num_pezzi,\n" +
" num_cnf,\n" +
" gg_scad_partita,\n" +
" qta_cnf,\n" +
" colli_pedana,\n" +
" num_pedane,\n" +
" pos_riga,\n" +
" flag_evaso_prod,\n" +
" flag_evaso_forzato,\n" +
" flag_ordine_evaso,\n" +
" gestione,\n" +
" data_ord,\n" +
" cod_tcol_UL,\n" +
" descrizione_tcol,\n" +
" cod_anag,\n" +
" rag_soc_anag,\n" +
" part_iva,\n" +
" rif_ord,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" cod_mdep_prod,\n" +
" num_ord,\n" +
" cod_jfas,\n" +
" cod_jfas_lav,\n" +
" partita_mag,\n" +
" note_lav,\n" +
" data_scad,\n" +
" cod_prod,\n" +
" descrizione_commessa,\n" +
" data_iniz_prod,\n" +
" max_step,\n" +
" unt_mis_prod,\n" +
" qta_batch_prod,\n" +
" rap_conv_prod,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" qta_prod,\n" +
" qta_lav,\n" +
" max_fase,\n" +
" num_fase,\n" +
" hr_num,\n" +
" descrizione_attivita,\n" +
" prod_std,\n" +
" elapsed_time,\n" +
" qta_trasferite,\n" +
" udc_trasferiti,\n" +
" stato,\n" +
" pz_trasferiti,\n" +
" run_time_sec,\n" +
" SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" +
" CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" +
" ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" +
" CASE\n" +
" WHEN setup_run_time.flag_restart = 'S' THEN\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" CASE\n" +
" WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" +
" ELSE GETDATE() END)\n" +
" ELSE\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas ORDER BY stato, cod_jfas, data_ord_prod, num_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" GETDATE())\n" +
" END AS run_time_end,\n" +
" id_lotto,\n" +
" data_lotto,\n" +
" peso_kg,\n" +
" data_cons_prod_max\n" +
" FROM ord_lav,\n" +
" setup_run_time\n" +
" ORDER BY ord_lav.data_ord,\n" +
" ord_lav.num_ord_prod,\n" +
" ord_lav.pos_riga,\n" +
" ord_lav.num_ord\n" +
" RETURN\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,30 @@
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;
public class Migration_20241021161628 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.DolceBonta_DolceBo))
return;
createSetup("EXPORT_ORDINI VENDITA", "EURITMO", "EAN_CLIENTE_ID_01390", "ZZ",
null, false, null, false, false,
false, false, false, null, false, null);
createSetup("EXPORT_ORDINI VENDITA", "EURITMO", "EAN_CLIENTE_ID_01600", "EN",
null, false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,609 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241022095142 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("MES_GetWorkOrders",
"CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" +
" @codAnag VARCHAR(5))\n" +
" RETURNS @val TABLE\n" +
" (\n" +
" [sort] [int] NULL,\n" +
" [cod_jcom] [varchar](10) NULL,\n" +
" [data_ord_prod] [datetime] NULL,\n" +
" [num_ord_prod] [int] NULL,\n" +
" [riga_ord_prod] [int] NULL,\n" +
" [flag_avviabile] [varchar](1) NULL,\n" +
" [flag_tracciabilita] [varchar](1) NULL,\n" +
" [unt_ord] [varchar](3) NULL,\n" +
" [rap_conv] [numeric](20, 10) NULL,\n" +
" [unt_ord2] [varchar](3) NULL,\n" +
" [rap_conv2] [numeric](20, 5) NULL,\n" +
" [unt_ord3] [varchar](3) NULL,\n" +
" [rap_conv3] [numeric](20, 5) NULL,\n" +
" [descrizione_prod] [varchar](255) NULL,\n" +
" [num_pezzi] [numeric](38, 6) NULL,\n" +
" [num_cnf] [numeric](20, 5) NULL,\n" +
" [gg_scad_partita] [int] NULL,\n" +
" [qta_cnf] [numeric](15, 5) NULL,\n" +
" [colli_pedana] [numeric](20, 5) NULL,\n" +
" [num_pedane] [numeric](38, 18) NULL,\n" +
" [pos_riga] [int] NULL,\n" +
" [flag_evaso_prod] [varchar](1) NULL,\n" +
" [flag_evaso_forzato] [varchar](1) NOT NULL,\n" +
" [flag_ordine_evaso] [varchar](1) NULL,\n" +
" [gestione] [varchar](1) NOT NULL,\n" +
" [data_ord] [datetime] NOT NULL,\n" +
" [cod_tcol_UL] [varchar](5) NULL,\n" +
" [descrizione_tcol] [varchar](40) NULL,\n" +
" [cod_anag] [varchar](5) NOT NULL,\n" +
" [rag_soc_anag] [varchar](40) NULL,\n" +
" [part_iva] [varchar](20) NULL,\n" +
" [rif_ord] [varchar](40) NULL,\n" +
" [cod_vdes] [varchar](5) NULL,\n" +
" [cod_mdep] [varchar](5) NOT NULL,\n" +
" [cod_mdep_prod] [varchar](5) NOT NULL,\n" +
" [num_ord] [int] NOT NULL,\n" +
" [cod_jfas] [varchar](5) NOT NULL,\n" +
" [cod_jfas_lav] [varchar](5) NOT NULL,\n" +
" [partita_mag] [varchar](20) NULL,\n" +
" [note_lav] [varchar](255) NULL,\n" +
" [data_scad] [datetime] NULL,\n" +
" [cod_prod] [varchar](15) NULL,\n" +
" [descrizione_commessa] [varchar](40) NULL,\n" +
" [data_iniz_prod] [datetime] NULL,\n" +
" [max_step] [int] NULL,\n" +
" [unt_mis_prod] [varchar](5) NULL,\n" +
" [qta_batch_prod] [numeric](15, 5) NULL,\n" +
" [rap_conv_prod] [numeric](20, 10) NULL,\n" +
" [data_iniz] [datetime] NULL,\n" +
" [data_fine] [datetime] NULL,\n" +
" [qta_prod] [decimal](20, 5) NULL,\n" +
" [qta_lav] [decimal](20, 5) NULL,\n" +
" [max_fase] [int] NULL,\n" +
" [num_fase] [int] NULL,\n" +
" [hr_num] [int] NOT NULL,\n" +
" [descrizione_attivita] [varchar](1024) NULL,\n" +
" [prod_std] [numeric](38, 21) NULL,\n" +
" [elapsed_time] [int] NULL,\n" +
" [qta_trasferite] [numeric](38, 5) NULL,\n" +
" [udc_trasferiti] [int] NULL,\n" +
" [stato] [varchar](11) NOT NULL,\n" +
" [pz_trasferiti] [int] NULL,\n" +
" [run_time_sec] [numeric](38, 6) NULL,\n" +
" [cumulative_run_time_sec] [numeric](38, 6) NULL,\n" +
" [run_time_hour] [int] NULL,\n" +
" [run_time_min] [numeric](38, 6) NULL,\n" +
" [run_time_end] [datetime] NULL,\n" +
" [id_lotto] [int] NULL,\n" +
" [data_lotto] [datetime] NULL,\n" +
" [peso_kg] [numeric](20, 5) NULL,\n" +
" [data_cons_prod_max] [datetime] NULL\n" +
" ) AS\n" +
"BEGIN\n" +
"\n" +
" -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" +
"-- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" +
"-- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" +
"-- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" +
"-- DECLARE @codAnag VARCHAR(5) = null;\n" +
"\n" +
" SET @dateStart = ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE()));\n" +
" SET @dateEND = ISNULL(@dateEnd, GETDATE());\n" +
" SET @flagEvaso = ISNULL(@flagEvaso, 'I');\n" +
"\n" +
"--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" +
" WITH setup AS (SELECT @dateStart AS date_start,\n" +
" @dateEnd AS date_end,\n" +
" @flagEvaso AS flag_evaso,\n" +
" @codJfas AS cod_jfas,\n" +
" @codAnag AS cod_anag),\n" +
" setup_jfas AS (SELECT value_string AS cod_jfas\n" +
" FROM dbo.ParseStringIntoArray(@codJfas, '|')),\n" +
" setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" +
" FROM stb_gest_setup_depo\n" +
" WHERE gest_name = 'CARICO_SCARICO_PF'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" +
" setup_run_time\n" +
" AS (SELECT dbo.getGestSetup('PVM', 'MONITORAGGIO_LINEE_V2', 'RESTART_RUN_TIME_END') AS flag_restart),\n" +
" mtb_colr_sum AS (SELECT mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord,\n" +
" SUM(mtb_colr.qta_col) AS qta_col,\n" +
" SUM(mtb_colr.num_cnf) AS num_cnf\n" +
" FROM mtb_colr\n" +
" WHERE mtb_colr.gestione_rif IS NULL\n" +
" AND mtb_colr.data_collo_rif IS NULL\n" +
" AND mtb_colr.ser_collo_rif IS NULL\n" +
" AND mtb_colr.num_collo_rif IS NULL\n" +
" AND EXISTS(SELECT *\n" +
" FROM mtb_colt\n" +
" WHERE mtb_colr.gestione = mtb_colt.gestione\n" +
" AND mtb_colr.data_collo = mtb_colt.data_collo\n" +
" AND mtb_colr.ser_collo = mtb_colt.ser_collo\n" +
" AND mtb_colr.num_collo = mtb_colt.num_collo\n" +
" AND mtb_colt.segno = 1)\n" +
" GROUP BY mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord),\n" +
" in_production_machines AS (SELECT DISTINCT dtb_ord_macc.gestione,\n" +
" dtb_ord_macc.data_ord,\n" +
" dtb_ord_macc.num_ord,\n" +
" MAX(dtb_ord_macc.data_mov) AS max_data_mov\n" +
" FROM dtb_ord_macc\n" +
" INNER JOIN (SELECT gestione, data_ord, num_ord, cod_cmac, MAX(data_mov) AS data_mov\n" +
" FROM dtb_ord_macc\n" +
" GROUP BY gestione, data_ord, num_ord, cod_cmac) last_event\n" +
" ON dtb_ord_macc.data_ord = last_event.data_ord AND\n" +
" dtb_ord_macc.num_ord = last_event.num_ord AND\n" +
" dtb_ord_macc.gestione = last_event.gestione AND\n" +
" dtb_ord_macc.cod_cmac = last_event.cod_cmac AND\n" +
" dtb_ord_macc.data_mov = last_event.data_mov\n" +
" INNER JOIN (SELECT evento, IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" +
" FROM dtb_ord_macc_eventi) dtb_ord_macc_eventi\n" +
" ON dtb_ord_macc.evento = dtb_ord_macc_eventi.evento\n" +
" WHERE value = 1\n" +
" GROUP BY dtb_ord_macc.num_ord, dtb_ord_macc.data_ord, dtb_ord_macc.gestione),\n" +
" dtb_ord_max_step AS (SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" MAX(id_step) AS max_step,\n" +
" num_fase,\n" +
" MAX(num_fase) OVER (PARTITION BY gestione,\n" +
" data_ord,\n" +
" num_ord) AS max_fase,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" SUM(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE()))) AS elapsed_time\n" +
" FROM dtb_ord_steps\n" +
" CROSS APPLY setup\n" +
" WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" +
" GROUP BY gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" num_fase,\n" +
" dtb_ord_steps.cod_jfas),\n" +
" dtb_ordr_prod_with_art AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" +
" dtb_ordr.num_ord AS num_ord_prod,\n" +
" dtb_ordr.riga_ord AS riga_ord_prod,\n" +
" dtb_ordr.gestione AS gestione_ord_prod,\n" +
" IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()), 'S',\n" +
" 'N') AS flag_avviabile,\n" +
" mtb_aart_prod.flag_tracciabilita,\n" +
" dtb_ordr.unt_ord,\n" +
" dtb_ordr.rap_conv,\n" +
" dtb_ordr.unt_ord2,\n" +
" CAST(ROUND(dtb_ordr.qta_ord2 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" +
" dtb_ordr.unt_ord3,\n" +
" CAST(ROUND(dtb_ordr.qta_ord3 / ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" +
" dtb_ordr.qta_ord,\n" +
" dtb_ordr.qta_ord2,\n" +
" dtb_ordr.qta_ord3,\n" +
" dtb_ordr.num_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf /\n" +
" ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" +
" mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" +
" IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" +
" IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" +
" dtb_ordr.colli_pedana)\n" +
" AS colli_pedana,\n" +
" dtb_ordr.pos_riga,\n" +
" dtb_ordt.cod_mdep,\n" +
"\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" +
" NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" +
" mtb_aart_prod.rap_conv2,\n" +
" 1)) AS calc_rap_conv,\n" +
" mtb_aart_prod.gg_scad_partita,\n" +
" mtb_aart_prod.qta_cnf\n" +
" FROM dtb_ordr\n" +
" INNER JOIN dtb_ordt ON dtb_ordr.gestione = dtb_ordt.gestione AND\n" +
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.num_ord = dtb_ordt.num_ord\n" +
" INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart),\n" +
" ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" +
" dtb_ordr_prod_with_art.data_ord_prod,\n" +
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
" dtb_ordr_prod_with_art.unt_ord,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv,\n" +
" dtb_ordr_prod_with_art.unt_ord2,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv2\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv2\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord2 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv2,\n" +
" dtb_ordr_prod_with_art.unt_ord3,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" dtb_ordr_prod_with_art.rap_conv3\n" +
" ELSE CASE\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis THEN\n" +
" dtb_ordr_prod_with_art.rap_conv3\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN dtb_ordr_prod_with_art.unt_ord3 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" dtb_ordr_prod_with_art.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv3,\n" +
" ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" +
" dtb_ordr_prod_with_art.num_cnf * dtb_ordr_prod_with_art.cal_qta_cnf AS num_pezzi,\n" +
" dtb_ordr_prod_with_art.num_cnf,\n" +
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
" dtb_ordr_prod_with_art.qta_cnf,\n" +
" dtb_ordr_prod_with_art.colli_pedana,\n" +
" dtb_ordr_prod_with_art.num_cnf / dtb_ordr_prod_with_art.colli_pedana AS num_pedane,\n" +
" dtb_ordr_prod_with_art.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" CASE\n" +
" WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" THEN 'I'\n" +
" WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" +
" THEN flag_evaso_prod\n" +
" END AS flag_ordine_evaso,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" mtb_tcol.descrizione AS descrizione_tcol,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc AS rag_soc_anag,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" ISNULL(dtb_ordr_prod_with_art.cod_mdep, dtb_ordt.cod_mdep) AS cod_mdep_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas AS cod_jfas_lav,\n" +
" mtb_partita_mag.partita_mag,\n" +
" dtb_ordt.note AS note_lav,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" jtb_comt.descrizione AS descrizione_commessa,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" q.max_step,\n" +
" q.max_fase,\n" +
" q.num_fase,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1), 'Colli',\n" +
" jtb_cicl.unt_mis_prod)\n" +
" AS unt_mis_prod,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1),\n" +
" dtb_ordr_prod_with_art.colli_pedana, jtb_cicl.qta_prod)\n" +
" AS qta_batch_prod,\n" +
" IIF(mtb_aart.qta_cnf > 1 OR dtb_ordr_prod_with_art.colli_pedana > 1, mtb_aart.qta_cnf,\n" +
" jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ord_steps.qta_lav AS qta_lav,\n" +
" IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod) AS qta_prod,\n" +
" dtb_ord_steps.hr_num,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" +
" q.elapsed_time,\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0)) AS qta_trasferite,\n" +
" COUNT(mtb_colr.num_collo) AS udc_trasferiti,\n" +
" CASE\n" +
" WHEN (in_production_machines.max_data_mov IS NOT NULL AND (q.max_step = 0 OR\n" +
" (q.max_step > 0 AND\n" +
" dtb_ord_steps.data_fine IS NOT NULL AND\n" +
" DATEDIFF(MINUTE,\n" +
" dtb_ord_steps.data_fine,\n" +
" in_production_machines.max_data_mov) >\n" +
" 5)))\n" +
" THEN 'IN AVVIO'\n" +
" WHEN q.max_step = 0\n" +
" THEN 'PROGRAMMATO'\n" +
" WHEN data_fine IS NULL\n" +
" THEN 'IN CORSO'\n" +
" ELSE 'IN PAUSA'\n" +
" END\n" +
" AS stato,\n" +
" CONVERT(INT, SUM(ISNULL(mtb_colr.qta_col / dtb_ordr_prod_with_art.calc_rap_conv, 0))) AS pz_trasferiti,\n" +
" CASE\n" +
" WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0))) > 0\n" +
" THEN\n" +
" (jtb_dist_clav_dir.duration /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr.qta_col, 0)))\n" +
" ELSE 0 END AS run_time_sec,\n" +
" jl.id_lotto,\n" +
" jlt.data_lotto,\n" +
" mtb_aart.peso_kg,\n" +
" dtb_ordt.data_cons_prod_max\n" +
" FROM dtb_ord_steps\n" +
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" +
" LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" +
" ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" +
" LEFT OUTER JOIN jtb_dist_clav_dir\n" +
" ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" +
" dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" +
" LEFT OUTER JOIN mtb_partita_mag\n" +
" ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" +
" dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" +
" mtb_partita_mag.flag_stato = 'A'\n" +
" LEFT OUTER JOIN mtb_colr_sum mtb_colr ON dtb_ordt.data_ord = mtb_colr.data_ord AND\n" +
" dtb_ordt.gestione = mtb_colr.gestione AND\n" +
" dtb_ordt.num_ord = mtb_colr.num_ord AND\n" +
" dtb_ordt.cod_prod = mtb_colr.cod_mart\n" +
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" +
" INNER JOIN dtb_ord_max_step q ON dtb_ord_steps.gestione = q.gestione AND\n" +
" dtb_ord_steps.data_ord = q.data_ord AND\n" +
" dtb_ord_steps.num_ord = q.num_ord AND\n" +
" dtb_ord_steps.id_step = q.max_step AND\n" +
" dtb_ord_steps.cod_jfas = q.cod_jfas\n" +
" LEFT OUTER JOIN dtb_ordr_prod_with_art\n" +
" ON dtb_ordr_prod_with_art.gestione_ord_prod =\n" +
" dtb_ordt.gestione_rif AND\n" +
" dtb_ordr_prod_with_art.data_ord_prod = dtb_ordt.data_ord_rif AND\n" +
" dtb_ordr_prod_with_art.num_ord_prod = dtb_ordt.num_ord_rif AND\n" +
" dtb_ordr_prod_with_art.riga_ord_prod = dtb_ordt.riga_ord_rif\n" +
" LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" +
" LEFT OUTER JOIN in_production_machines\n" +
" ON dtb_ord_steps.data_ord = in_production_machines.data_ord\n" +
" AND dtb_ord_steps.num_ord = in_production_machines.num_ord\n" +
" AND dtb_ord_steps.gestione = in_production_machines.gestione\n" +
" LEFT OUTER JOIN jtb_lotr jl\n" +
" ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" +
" dtb_ordt.gestione = jl.gestione AND\n" +
" dtb_ordt.data_ord = jl.data_ord AND\n" +
" dtb_ordt.num_ord = jl.num_ord\n" +
" LEFT OUTER JOIN jtb_lott jlt\n" +
" ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" +
"\n" +
" CROSS APPLY setup\n" +
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
" AND (setup.flag_evaso IS NULL\n" +
" OR (\n" +
" (setup.flag_evaso = 'I'\n" +
" AND\n" +
" dtb_ord_steps.flag_step_attivo = 'S'\n" +
" AND (flag_evaso_prod = 'I'\n" +
" OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" +
" AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" )\n" +
" OR (setup.flag_evaso = 'E '\n" +
" AND (flag_evaso_prod = 'E' OR jlt.data_chiusura IS NOT NULL))\n" +
" )\n" +
" )\n" +
" AND (setup.cod_jfas IS NULL\n" +
" OR dtb_ord_steps.cod_jfas IN (SELECT cod_jfas FROM setup_jfas))\n" +
" AND (setup.cod_anag IS NULL\n" +
" OR dtb_ordt.cod_anag = setup.cod_anag)\n" +
" GROUP BY dtb_ordr_prod_with_art.data_ord_prod,\n" +
" dtb_ordr_prod_with_art.num_ord_prod,\n" +
" dtb_ordr_prod_with_art.riga_ord_prod,\n" +
" dtb_ordr_prod_with_art.flag_avviabile,\n" +
" dtb_ordr_prod_with_art.flag_tracciabilita,\n" +
" dtb_ordr_prod_with_art.unt_ord,\n" +
" mtb_partita_mag.rap_conv2,\n" +
" mtb_partita_mag.rap_conv3,\n" +
" dtb_ordt.note,\n" +
" dtb_ordr_prod_with_art.rap_conv,\n" +
" dtb_ordt.descrizione_prod,\n" +
" dtb_ordt.descr_estesa_prod,\n" +
" dtb_ordr_prod_with_art.num_cnf,\n" +
" mtb_aart.qta_cnf,\n" +
" mtb_aart.gg_scad_partita,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" dtb_ordr_prod_with_art.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordt.cod_jcom,\n" +
" mtb_partita_mag.partita_mag,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" q.max_step,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" dtb_ordr_prod_with_art.cod_mdep,\n" +
" mtb_aart.colli_pedana,\n" +
" dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod,\n" +
" jtb_dist_clav_dir.duration,\n" +
" jtb_comt.descrizione,\n" +
" q.elapsed_time,\n" +
" dtb_ordr_prod_with_art.colli_pedana,\n" +
" dtb_ord_steps.hr_num,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.unt_mis2,\n" +
" mtb_aart.rap_conv2,\n" +
" mtb_aart.unt_mis3,\n" +
" mtb_aart.rap_conv3,\n" +
" dtb_ordr_prod_with_art.unt_ord2,\n" +
" dtb_ordr_prod_with_art.unt_ord3,\n" +
" dtb_ordr_prod_with_art.qta_ord,\n" +
" dtb_ordr_prod_with_art.qta_ord2,\n" +
" dtb_ordr_prod_with_art.qta_ord3,\n" +
" dtb_ordr_prod_with_art.rap_conv2,\n" +
" dtb_ordr_prod_with_art.rap_conv3,\n" +
" dtb_ordr_prod_with_art.qta_cnf,\n" +
" dtb_ordr_prod_with_art.cal_qta_cnf,\n" +
" dtb_ordr_prod_with_art.gg_scad_partita,\n" +
" jtb_cicl.qta_prod,\n" +
" jtb_cicl.rap_conv_prod,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" jtb_cicl.unt_mis_prod,\n" +
" mtb_tcol.descrizione,\n" +
" dtb_ordt.qta_prod,\n" +
" dtb_ordt.rap_conv_prod,\n" +
" setupCaricoImmediato.flag_carico_scarico_immediato,\n" +
" in_production_machines.max_data_mov, q.num_fase, dtb_ord_steps.qta_lav, q.max_fase,\n" +
" jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg, dtb_ordt.data_cons_prod_max)\n" +
" INSERT\n" +
" INTO @val\n" +
" SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" +
" cod_jcom,\n" +
" data_ord_prod,\n" +
" num_ord_prod,\n" +
" riga_ord_prod,\n" +
" flag_avviabile,\n" +
" flag_tracciabilita,\n" +
" unt_ord,\n" +
" rap_conv,\n" +
" unt_ord2,\n" +
" rap_conv2,\n" +
" unt_ord3,\n" +
" rap_conv3,\n" +
" descrizione_prod,\n" +
" num_pezzi,\n" +
" num_cnf,\n" +
" gg_scad_partita,\n" +
" qta_cnf,\n" +
" colli_pedana,\n" +
" num_pedane,\n" +
" pos_riga,\n" +
" flag_evaso_prod,\n" +
" flag_evaso_forzato,\n" +
" flag_ordine_evaso,\n" +
" gestione,\n" +
" data_ord,\n" +
" cod_tcol_UL,\n" +
" descrizione_tcol,\n" +
" cod_anag,\n" +
" rag_soc_anag,\n" +
" part_iva,\n" +
" rif_ord,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" cod_mdep_prod,\n" +
" num_ord,\n" +
" cod_jfas,\n" +
" cod_jfas_lav,\n" +
" partita_mag,\n" +
" note_lav,\n" +
" data_scad,\n" +
" cod_prod,\n" +
" descrizione_commessa,\n" +
" data_iniz_prod,\n" +
" max_step,\n" +
" unt_mis_prod,\n" +
" qta_batch_prod,\n" +
" rap_conv_prod,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" qta_prod,\n" +
" qta_lav,\n" +
" max_fase,\n" +
" num_fase,\n" +
" hr_num,\n" +
" descrizione_attivita,\n" +
" prod_std,\n" +
" elapsed_time,\n" +
" qta_trasferite,\n" +
" udc_trasferiti,\n" +
" stato,\n" +
" pz_trasferiti,\n" +
" run_time_sec,\n" +
" SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" +
" CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" +
" ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" +
" CASE\n" +
" WHEN setup_run_time.flag_restart = 'S' THEN\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" CASE\n" +
" WHEN data_ord_prod > GETDATE() THEN DATEADD(HH, 7, data_ord_prod)\n" +
" ELSE GETDATE() END)\n" +
" ELSE\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas ORDER BY stato, cod_jfas, data_ord_prod, num_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" GETDATE())\n" +
" END AS run_time_end,\n" +
" id_lotto,\n" +
" data_lotto,\n" +
" peso_kg,\n" +
" data_cons_prod_max\n" +
" FROM ord_lav,\n" +
" setup_run_time\n" +
" ORDER BY ord_lav.data_ord,\n" +
" ord_lav.num_ord_prod,\n" +
" ord_lav.pos_riga,\n" +
" ord_lav.num_ord\n" +
" RETURN\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -97,7 +97,7 @@ public class MailService {
List<StbEmail> listEmail = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbEmail.class);
StbEmail stbEmail = listEmail != null && listEmail.size() > 0 ? listEmail.get(0) : null;
StbEmail stbEmail = listEmail != null && !listEmail.isEmpty() ? listEmail.get(0) : null;
if (stbEmail != null && stbEmail.getIdRiga() != null) {
EmailFileSharerSettings.ENCRYPTION encryption = EmailFileSharerSettings.ENCRYPTION.NONE;

View File

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@@ -21,7 +22,7 @@ public class MailTemplateService {
URL url = new URL("https://www2.studioml.it/ems-api/mail_models/integry-generic-communication-mail-template.html");
InputStream inputStream = url.openStream();
String htmlMailBody = IOUtils.toString(inputStream, "UTF-8");
String htmlMailBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
inputStream.close();
String bannerBgColor;

View File

@@ -10,6 +10,7 @@ import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.entity.StbPublications;
import it.integry.ems_model.entity.StbPublicationsDetail;
import it.integry.ems_model.entity.StbTransactionLog;
import it.integry.ems_model.types.OperationType;
@@ -41,7 +42,6 @@ public class AsyncManager {
@Autowired
private SettingsController settingsController;
private final static HashMap<String, List<StbPublicationsDetail>> cachedSetup = new HashMap<>();
private final static ConcurrentLinkedQueue<Map.Entry<String, StbTransactionLog>> toBeSavedQueue = new ConcurrentLinkedQueue<>();
@@ -82,15 +82,12 @@ public class AsyncManager {
}
private void cacheSetup(String dbName, String profileName) throws Exception {
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
try {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false)) {
String sql = "SELECT * FROM " + StbPublicationsDetail.ENTITY + " WHERE active = 1";
List<StbPublicationsDetail> publications = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, StbPublicationsDetail.class);
cachedSetup.putIfAbsent(dbName, publications);
} finally {
multiDBTransactionManager.closeAll();
}
}
@@ -108,7 +105,7 @@ public class AsyncManager {
//logger.debug("SYNC OFFLINE ABILITATA SU " + tableName);
for (StbPublicationsDetail activePublication : activePublications){
for (StbPublicationsDetail activePublication : activePublications) {
List<EntityBase> myObjs = new ArrayList<>();
myObjs.add(entityBase);
@@ -129,13 +126,13 @@ public class AsyncManager {
return activePublication.getStbPublicationId();
}
return 0;
return 0;
}
public static Long saveNewTransaction(Connection connection, String dbName, EntityBase entityBase, long publicationId, Long transactionGroupId) throws Exception {
//TODO: Calc transaction group ID here
if (transactionGroupId == null) transactionGroupId = getNextTransactionGroupId(connection, dbName);
if (transactionGroupId == null) transactionGroupId = getNextTransactionGroupId(connection, publicationId);
ResponseJSONObjectMapper jsonObjectMapper = ContextLoader.getCurrentWebApplicationContext().getBean(ResponseJSONObjectMapper.class);
@@ -153,28 +150,17 @@ public class AsyncManager {
}
public static long getNextTransactionGroupId(Connection connection, String dbName) throws Exception {
private static long getNextTransactionGroupId(Connection connection, long publicationId) throws Exception {
String retrievePublicationSql = "SELECT * FROM " + StbPublications.ENTITY +
" WHERE id = " + publicationId;
final long maxToBeProcessed = toBeSavedQueue.stream().filter(x -> x.getKey().equalsIgnoreCase(dbName))
.map(x -> x.getValue().getGroupId())
.max(Long::compare)
.orElse(0L);
final StbPublications stbPublication = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, retrievePublicationSql, StbPublications.class);
stbPublication.setLastGroupId(stbPublication.getLastGroupId() + 1);
long transactionGroupId = 0;
stbPublication.setOperation(OperationType.UPDATE);
stbPublication.manageWithParentConnection(connection);
if (maxToBeProcessed <= 0) {
Long tmpTransactionGroupId = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(
connection, "SELECT MAX(group_id) AS max_id FROM " + StbTransactionLog.ENTITY);
tmpTransactionGroupId = UtilityLong.isNull(tmpTransactionGroupId,0L);
transactionGroupId = Math.max(maxToBeProcessed, tmpTransactionGroupId);
} else {
transactionGroupId = maxToBeProcessed;
}
transactionGroupId++; //Incremento l'ID
return transactionGroupId;
return stbPublication.getLastGroupId();
}

View File

@@ -23,4 +23,8 @@ public @interface DtoField {
String fillChar() default "";
boolean showFloatPoint() default false;
String separator() default "";
boolean showSign() default false;
}

View File

@@ -4,11 +4,12 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.utility.Query;
import org.kie.api.definition.type.PropertyReactive;
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
import java.util.ArrayList;
import java.util.List;
@Master
@PropertyReactive
@@ -30,6 +31,9 @@ public class StbPublications extends EntityBase {
@SqlField(value = "publication_description", maxLength = 1024, nullable = false)
private String publicationDescription;
@SqlField(value = "last_group_id", defaultObjectValue = "0")
private Long lastGroupId;
@EntityChild(copyPk = false)
private List<StbPublicationsDetail> stbPublicationsDetails = new ArrayList<>();
@@ -55,6 +59,15 @@ public class StbPublications extends EntityBase {
return this;
}
public Long getLastGroupId() {
return lastGroupId;
}
public StbPublications setLastGroupId(Long lastGroupId) {
this.lastGroupId = lastGroupId;
return this;
}
public List<StbPublicationsDetail> getStbPublicationsDetails() {
return stbPublicationsDetails;
}

File diff suppressed because one or more lines are too long

View File

@@ -58,15 +58,6 @@ then
modify ( $docR ) { setCodMart(codMart) }
end
rule "completeInsPartitaMagDocA"
when
eval(completeRulesEnabled)
$docR : DtbDocr( partitaMag != null && partitaMag != "[NULL]" && codMart != null && gestione == "A")
then
MtbPartitaMag partitaMag = DocumentRules.insertPartitaMag(conn, $docR);
modify ( $docR ) { setMtbPartitaMag(partitaMag) }
end
rule "completeDatiListinoDocA"
no-loop
salience 1

View File

@@ -286,6 +286,15 @@ then
}
end
rule "completeInsPartitaMagDoc"
when
eval(completeRulesEnabled)
$docR : DtbDocr( partitaMag != null && partitaMag != "[NULL]" && codMart != null && gestione != null && gestione != "L")
then
MtbPartitaMag partitaMag = DocumentRules.insertPartitaMag(conn, $docR);
modify ( $docR ) { setMtbPartitaMag(partitaMag) }
end
rule "completeUntDoc"
salience -10
no-loop

View File

@@ -137,6 +137,7 @@ public class ScadenzeImportService {
checkList.put("10216200", "21001276019001");
checkList.put("10407300", "21 004001");
checkList.put("90254600", "21241137001001");
checkList.put("90165100", "20334 005001");
if (checkList.containsKey(diacod) && checkList.get(diacod).equals(intercode.trim())) {
forceIn2021 = true;

View File

@@ -3,26 +3,32 @@ package it.integry.ems.contabil.dto;
import it.integry.ems_model.annotation.DtoField;
import it.integry.ems_model.annotation.SqlField;
import java.math.BigDecimal;
import java.util.Date;
public class ScadenzeDocFinanceDTO {
final String formatDate = "ddMMyyyy";
final String sepDec = ",";
@SqlField(value = "tipo_pagamento")
@DtoField(startPosition = 0, maxLength = 2, fillChar = " ")
private String tipoPagamento;
@SqlField(value = "importo")
@DtoField(startPosition = 2, maxLength = 16, fillChar = " ")
private String importo;
@DtoField(startPosition = 2, maxLength = 16, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec, showSign = true)
private BigDecimal importo;
@SqlField(value = "divisa_scadenza")
@DtoField(startPosition = 18, maxLength = 5, fillChar = " ")
private String divisaScadenza;
@SqlField(value = "cambio")
@DtoField(startPosition = 23, maxLength = 9, fillChar = " ")
private String cambio;
@DtoField(startPosition = 23, maxLength = 9, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec)
private BigDecimal cambio;
@SqlField(value = "controvalore")
@DtoField(startPosition = 32, maxLength = 16, fillChar = " ")
private String controvalore;
@DtoField(startPosition = 32, maxLength = 16, fillChar = "0", scale = 3, showFloatPoint = true, separator = sepDec, showSign = true)
private BigDecimal controvalore;
@SqlField(value = "document_type")
@DtoField(startPosition = 48, maxLength = 2, fillChar = " ")
@@ -37,12 +43,12 @@ public class ScadenzeDocFinanceDTO {
private String rating;
@SqlField(value = "data_scadenza")
@DtoField(startPosition = 57, maxLength = 8, fillChar = " ")
private String dataScadenza;
@DtoField(startPosition = 57, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataScadenza;
@SqlField(value = "data_valuta")
@DtoField(startPosition = 65, maxLength = 8, fillChar = " ")
private String dataValuta;
@DtoField(startPosition = 65, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataValuta;
@SqlField(value = "banca")
@DtoField(startPosition = 73, maxLength = 8, fillChar = " ")
@@ -129,8 +135,8 @@ public class ScadenzeDocFinanceDTO {
private String chkPaese;
@SqlField(value = "data_documento")
@DtoField(startPosition = 267, maxLength = 8, fillChar = " ")
private String dataDocumento;
@DtoField(startPosition = 267, maxLength = 8, fillChar = " ", format = formatDate)
private Date dataDocumento;
@SqlField(value = "note")
@DtoField(startPosition = 275, maxLength = 80, fillChar = " ")
@@ -185,15 +191,6 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getImporto() {
return importo;
}
public ScadenzeDocFinanceDTO setImporto(String importo) {
this.importo = importo;
return this;
}
public String getDivisaScadenza() {
return divisaScadenza;
}
@@ -203,20 +200,20 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getCambio() {
public BigDecimal getCambio() {
return cambio;
}
public ScadenzeDocFinanceDTO setCambio(String cambio) {
public ScadenzeDocFinanceDTO setCambio(BigDecimal cambio) {
this.cambio = cambio;
return this;
}
public String getControvalore() {
public BigDecimal getControvalore() {
return controvalore;
}
public ScadenzeDocFinanceDTO setControvalore(String controvalore) {
public ScadenzeDocFinanceDTO setControvalore(BigDecimal controvalore) {
this.controvalore = controvalore;
return this;
}
@@ -248,24 +245,33 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getDataScadenza() {
public Date getDataScadenza() {
return dataScadenza;
}
public ScadenzeDocFinanceDTO setDataScadenza(String dataScadenza) {
public ScadenzeDocFinanceDTO setDataScadenza(Date dataScadenza) {
this.dataScadenza = dataScadenza;
return this;
}
public String getDataValuta() {
public Date getDataDocumento() {
return dataDocumento;
}
public Date getDataValuta() {
return dataValuta;
}
public ScadenzeDocFinanceDTO setDataValuta(String dataValuta) {
public ScadenzeDocFinanceDTO setDataValuta(Date dataValuta) {
this.dataValuta = dataValuta;
return this;
}
public ScadenzeDocFinanceDTO setDataDocumento(Date dataDocumento) {
this.dataDocumento = dataDocumento;
return this;
}
public String getBanca() {
return banca;
}
@@ -455,15 +461,6 @@ public class ScadenzeDocFinanceDTO {
return this;
}
public String getDataDocumento() {
return dataDocumento;
}
public ScadenzeDocFinanceDTO setDataDocumento(String dataDocumento) {
this.dataDocumento = dataDocumento;
return this;
}
public String getNote() {
return note;
}
@@ -562,4 +559,13 @@ public class ScadenzeDocFinanceDTO {
this.codiceMandato = codiceMandato;
return this;
}
public BigDecimal getImporto() {
return importo;
}
public ScadenzeDocFinanceDTO setImporto(BigDecimal importo) {
this.importo = importo;
return this;
}
}

View File

@@ -5,7 +5,9 @@ import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.file_formatter.txt.TxtMapper;
import it.integry.ems.response.FileItem;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@@ -19,33 +21,24 @@ public class ScadenzeExporterService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
@Autowired
private SetupGest setupGest;
public EntityExportResponse<List<FileItem>> exportDocFinance(String type, String format) throws Exception {
EntityExportResponse<List<FileItem>> entityExportResponse = new EntityExportResponse<>();
entityExportResponse.setResponse(new ArrayList<>());
String codPagaRitAcc = setupGest.getSetup("CTB_SCAD", "COD_PAGA", "RITENUTA");
String sql = "SELECT gtb_tipi_paga_intercode.intercode AS 'tipo_pagamento',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_scad.imp_dare + ctb_scad.imp_avere),\n" +
" IIF(ctb_part.tipo_partita = 0, '-', '+') + '00000000000.000'\n" +
" ) AS VARCHAR), '.', ',') AS 'importo',\n" +
" gtb_divi.cod_divi AS 'divisa_scadenza',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(ctb_part.cambio, '00000.000') AS VARCHAR), '.', ',') AS 'cambio',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" ((ctb_scad.imp_dare + ctb_scad.imp_avere) / ctb_part.cambio),\n" +
" IIF(ctb_part.tipo_partita = 0, '-', '+') + '00000000000.000'\n" +
" ) AS VARCHAR), '.',\n" +
" ',') AS 'controvalore',\n" +
" ctb_scad.imp_dare - ctb_scad.imp_avere AS 'importo',\n" +
" IsNull(gtb_divi.cod_divi_iso, gtb_divi.cod_divi) AS 'divisa_scadenza',\n" +
" ctb_part.cambio AS 'cambio',\n" +
" ((ctb_scad.imp_dare - ctb_scad.imp_avere) / ctb_part.cambio) AS 'controvalore',\n" +
" '00001' AS 'type',\n" +
" 'N' AS 'raiting',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_scadenza',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_scad.data_scad, 103), '/', '') AS 'data_valuta',\n" +
" ctb_scad.data_scad AS 'data_scadenza',\n" +
" ctb_scad.data_scad AS 'data_valuta',\n" +
" CASE WHEN c.banca_azi = 1 THEN LEFT(gtb_banc_azi_intercode.intercode, 8) ELSE '' END AS 'banca',\n" +
" CASE WHEN c.banca_azi = 1 THEN RIGHT(gtb_banc_azi_intercode.intercode, 4) ELSE '' END AS 'rbn',\n" +
" 'N' AS 'bloccata',\n" +
@@ -70,7 +63,7 @@ public class ScadenzeExporterService {
" CASE WHEN c.banca_azi = 1 THEN '' ELSE SUBSTRING(ctb_part.iban, 5, 1) END AS 'cin',\n" +
" CASE WHEN c.banca_azi = 1 THEN '' ELSE LEFT(ctb_part.iban, 2) END AS 'paese',\n" +
" CASE WHEN c.banca_azi = 1 THEN '' ELSE SUBSTRING(ctb_part.iban, 3, 2) END AS 'chk_paese',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_part.data_doc, 103), '/', '') AS 'data_documento',\n" +
" ctb_part.data_doc AS 'data_documento',\n" +
" ctb_parr.des_agg AS 'note',\n" +
" IIF(vtb_clie.cod_anag IS NULL, atb_forn.cod_bic, vtb_clie.cod_bic) AS 'cod_bic',\n" +
" CASE WHEN c.banca_azi = 1 THEN gtb_banc_azi.cod_iban ELSE ctb_part.iban END AS iban\n" +
@@ -81,11 +74,12 @@ public class ScadenzeExporterService {
" INNER JOIN gtb_anag ON ctb_part.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN gtb_paga ON ctb_scad.cod_paga = gtb_paga.cod_paga\n" +
" LEFT outer join gtb_tipi_paga on gtb_paga.tipo_paga = gtb_tipi_paga.tipo_paga\n" +
" LEFT OUTER JOIN gtb_tipi_paga_intercode ON gtb_tipi_paga.tipo_paga = gtb_tipi_paga_intercode.tipo_paga\n" +
" LEFT OUTER JOIN gtb_tipi_paga_intercode ON gtb_tipi_paga.tipo_paga = gtb_tipi_paga_intercode.tipo_paga AND\n" +
" gtb_tipi_paga_intercode.formato = " + UtilityDB.valueToString(format) +"\n" +
" LEFT OUTER JOIN gtb_banc ON ctb_part.cod_banc = gtb_banc.cod_banc\n" +
" LEFT OUTER JOIN gtb_banc_azi ON gtb_banc.cod_banc = gtb_banc_azi.cod_banc\n" +
" LEFT OUTER JOIN gtb_banc_azi_intercode ON gtb_banc_azi.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" +
" gtb_banc_azi_intercode.formato = 'docfi'\n" +
" gtb_banc_azi_intercode.formato = " + UtilityDB.valueToString(format) +"\n" +
" LEFT OUTER JOIN vtb_clie ON ctb_part.cod_anag = vtb_clie.cod_anag AND ctb_part.tipo_anag = 'C'\n" +
" LEFT OUTER JOIN atb_forn ON ctb_part.cod_anag = atb_forn.cod_anag AND ctb_part.tipo_anag = 'F'\n" +
" INNER JOIN gtb_divi ON ctb_part.cod_divi = gtb_divi.cod_divi\n" +
@@ -101,35 +95,18 @@ public class ScadenzeExporterService {
" ORDER BY ctb_parr.data_cmov, ctb_parr.num_cmov) ctb_parr\n" +
" OUTER APPLY (SELECT CASE WHEN (ctb_part.tipo_anag = 'F' AND gtb_tipi_paga.flag_banca_acq = 'A' ) OR (ctb_part.tipo_anag = 'C' AND gtb_tipi_paga.flag_banca_ven = 'A' ) THEN 1 ELSE 0 END as banca_azi ) c\n " +
"WHERE ctb_scad.data_pag IS NULL\n" +
" AND gtb_anag.part_iva not in (SELECT part_iva FROM azienda)\n" +
" AND (gtb_anag.part_iva Is null OR gtb_anag.part_iva not in (SELECT part_iva FROM azienda))\n" +
(UtilityString.isNullOrEmpty(codPagaRitAcc)?"":"AND ctb_scad.cod_paga <> " + UtilityDB.valueToString(codPagaRitAcc)) +
"UNION ALL\n" +
"SELECT 'RD' AS 'tipo_pagamento',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere),\n" +
" IIF(ctb_movr.imp_dare - ctb_movr.imp_avere > 0, '+', '') + '00000000000.000'\n" +
" ) AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'importo',\n" +
" ctb_movt.cod_divi_cont AS 'divisa_scadenza',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(ctb_movt.cambio_divi_cont, '00000.000') AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'cambio',\n" +
" REPLACE(\n" +
" CAST(\n" +
" FORMAT(\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere),\n" +
" IIF((ctb_movr.imp_dare - ctb_movr.imp_avere) > 0, '+', '') + '00000000000.000'\n" +
" ) AS VARCHAR\n" +
" ), '.', ','\n" +
" ) AS 'controlvalore',\n" +
" '01' AS 'type',\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere) AS 'importo',\n" +
" IsNull(gtb_divi.cod_divi_iso, gtb_divi.cod_divi) AS 'divisa_scadenza',\n" +
" ctb_movt.cambio_divi_cont AS 'cambio',\n" +
" (ctb_movr.imp_dare - ctb_movr.imp_avere) AS 'controlvalore',\n" +
" '0001' AS 'type',\n" +
" 'N' AS 'raiting',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_scadenza',\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_valuta',\n" +
" ctb_movt.data_cmov AS 'data_scadenza',\n" +
" ctb_movt.data_cmov AS 'data_valuta',\n" +
" '' AS 'banca',\n" +
" '' AS 'rbn',\n" +
" 'N' AS 'bloccata',\n" +
@@ -152,7 +129,7 @@ public class ScadenzeExporterService {
" '' AS cin,\n" +
" '' AS paese,\n" +
" '' AS chk_paese,\n" +
" REPLACE(CONVERT(VARCHAR(10), ctb_movt.data_cmov, 103), '/', '') AS 'data_documento',\n" +
" ctb_movt.data_cmov AS 'data_documento',\n" +
" ctb_movr.des_agg AS 'note',\n" +
" '' AS 'cod_bic',\n" +
" '' AS 'iban'\n" +
@@ -160,11 +137,16 @@ public class ScadenzeExporterService {
" INNER JOIN ctb_movt\n" +
" ON ctb_movr.num_cmov = ctb_movt.num_cmov\n" +
" INNER JOIN gtb_anag ON ctb_movr.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN gtb_divi ON ctb_movt.cod_divi_cont = gtb_divi.cod_divi\n" +
" INNER JOIN ctb_caus ON ctb_movt.cod_ccau = ctb_caus.cod_ccau AND ctb_caus.flag_ap_ch = 'N'\n" +
" LEFT OUTER JOIN ctb_movr_intercode ON ctb_movr.num_cmov = ctb_movr_intercode.num_cmov AND\n" +
" ctb_movr.id_riga = ctb_movr_intercode.id_riga\n" +
"WHERE anno_part IS NULL \n" +
" AND gtb_anag.part_iva not in (SELECT part_iva FROM azienda)\n";
" AND (gtb_anag.part_iva Is null OR gtb_anag.part_iva not in (SELECT part_iva FROM azienda))\n";
sql = "SELECT * FROM (" + sql + ") t ORDER BY t.piano_dei_conti, chiave_coge";
List<ScadenzeDocFinanceDTO> scadenzeDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ScadenzeDocFinanceDTO.class);
TxtMapper<ScadenzeDocFinanceDTO> txtMapper = new TxtMapper<ScadenzeDocFinanceDTO>()

View File

@@ -1046,7 +1046,7 @@ public class ContabilService {
if (elencoScadenze != null && elencoScadenze.size() > 0) {
elencoScadenze = Stream.of(elencoScadenze).filter(s -> s.getIdRiga().equals(riga.getNumScad()) && s.getDataPag() == null).toList();
if ( elencoScadenze != null && !elencoScadenze.isEmpty() )
AccountingBusinessLogic.pagaScadenze(datiMov.getDataReg(), impScadDivisa.abs(), elencoScadenze, nextIdRiga);
AccountingBusinessLogic.pagaScadenze(riga.getDataValuta(), impScadDivisa.abs(), elencoScadenze, nextIdRiga);
}
}

View File

@@ -172,7 +172,7 @@ public class RossoGarganoSyncService {
" (rg_crl_movt.data_ins is null OR pnota.PN_DATA_MODIFICA >= CAST(FORMAT(DATEPART(YEAR, rg_crl_movt.data_ins), '0000') +\n" +
" FORMAT(DATEPART(MONTH, rg_crl_movt.data_ins), '00') +\n" +
" FORMAT(DATEPART(DAY, rg_crl_movt.data_ins), '00') AS NUMERIC) " +
(chkPartita?"OR t.has_part <> ISNULL(m.has_partita, 0)":"") + ") \n "
(chkPartita?"OR (t.has_part = 1 and isNull(m.has_partita, 0) = 0) ":"") + ") \n "
+ (UtilityString.isNullOrEmpty(whereCond) ? "" : " AND " + whereCond) +
"ORDER BY PNOTA.PN_DATA_COMPETENZA, PNOTA.PN_NRO_REG",
dataIniz, dataFine);

View File

@@ -184,9 +184,11 @@ public class DocumentiImporter extends BaseEntityImporter<List<EntityBase>> impl
case APULIA:
fileNameDest = orginalFileName + "_" +
new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".txt";
break;
case PAZIENZA_RIFORD:
fileNameDest = orginalFileName + "_" +
new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx";
break;
default:
fileNameDest = super.renameFile(orginalFileName, entities);
}

View File

@@ -1029,7 +1029,7 @@ public class DocumentiAcquistoImportService {
if (result == null){
anomalie.add(
AnomalieDTO.error(String.format("Nessun deposito agganciato all'intercode %s", rifOrdApulia.getCodicePv() ))
AnomalieDTO.info(String.format("Nessun deposito agganciato all'intercode %s", rifOrdApulia.getCodicePv() ))
);
continue;
}

View File

@@ -716,94 +716,94 @@ public class CrmService {
wdtbOrdsDelete.setNativeSql(sql);
entityProcessor.processEntity(wdtbOrdsDelete, true, multiDBTransactionManager);
if (activityId == null) { // SE NON HA ATTIVITA PREVENTIVAZIONE, NE CREA UNA
if (codJcom == null) {
CrmCommessa crmCommessa = completaOrd.getCommessa();
if (codJcom == null) {
CrmCommessa crmCommessa = completaOrd.getCommessa();
if (crmCommessa != null) {
JtbComt jtbComt = new JtbComt();
jtbComt.setOperation(OperationType.INSERT);
jtbComt.setPrecode("C");
jtbComt.setTipoAnag(tipoAnag);
jtbComt.setCodAnag(codAnag);
jtbComt.setCodVdes(codVdes);
jtbComt.setDescrizione(crmCommessa.getDescrizione());
jtbComt.setDescrizioneEstesa(crmCommessa.getDescrizioneEstesa());
jtbComt.setNote(crmCommessa.getNote());
jtbComt.setCodJflav(crmCommessa.getCodJflav());
jtbComt.setCodJfas(crmCommessa.getCodJfas());
jtbComt.setStatoCommessa(crmCommessa.getStatoCommessa());
if (crmCommessa != null) {
JtbComt jtbComt = new JtbComt();
jtbComt.setOperation(OperationType.INSERT);
jtbComt.setPrecode("C");
jtbComt.setTipoAnag(tipoAnag);
jtbComt.setCodAnag(codAnag);
jtbComt.setCodVdes(codVdes);
jtbComt.setDescrizione(crmCommessa.getDescrizione());
jtbComt.setDescrizioneEstesa(crmCommessa.getDescrizioneEstesa());
jtbComt.setNote(crmCommessa.getNote());
jtbComt.setCodJflav(crmCommessa.getCodJflav());
jtbComt.setCodJfas(crmCommessa.getCodJfas());
jtbComt.setStatoCommessa(crmCommessa.getStatoCommessa());
entityProcessor.processEntity(jtbComt, true, multiDBTransactionManager);
entityBaseList.add(jtbComt);
codJcom = jtbComt.getCodJcom();
entityProcessor.processEntity(jtbComt, true, multiDBTransactionManager);
entityBaseList.add(jtbComt);
codJcom = jtbComt.getCodJcom();
if (!completaOrd.getCrmAttivita().isEmpty()) {
for (int i = 0; i < completaOrd.getCrmAttivita().size(); i++) {
CrmAttivita crmAttivita = completaOrd.getCrmAttivita().get(i);
if (!completaOrd.getCrmAttivita().isEmpty()) {
for (int i = 0; i < completaOrd.getCrmAttivita().size(); i++) {
CrmAttivita crmAttivita = completaOrd.getCrmAttivita().get(i);
StbActivity stbActivity = new StbActivity();
stbActivity.setOperation(OperationType.INSERT);
if (processActivityId != null) {
stbActivity.setParentActivityId(processActivityId);
}
stbActivity.setTipoAnag(tipoAnag);
stbActivity.setCodAnag(codAnag);
stbActivity.setCodJcom(codJcom);
stbActivity.setActivityTypeId(crmAttivita.getActivityTypeId());
stbActivity.setActivityDescription(crmAttivita.getActivityDescription());
stbActivity.setActivityResultId(crmAttivita.getActivityResultId());
stbActivity.setNote(crmAttivita.getNote());
stbActivity.setFlagTipologia(crmAttivita.getFlagTipologia());
stbActivity.setUserName(crmAttivita.getUserName());
stbActivity.setUserCreator(crmAttivita.getUserCreator());
stbActivity.setUserModifier(crmAttivita.getUserModifier());
stbActivity.setOraModAct(crmAttivita.getOraModAct());
stbActivity.setOraViewAct(crmAttivita.getOraViewAct());
stbActivity.setEstimatedDate(crmAttivita.getEstimatedTime());
stbActivity.setEstimatedTime(crmAttivita.getEstimatedTime());
stbActivity.setEstimatedEnddate(crmAttivita.getEstimatedEndtime());
stbActivity.setEstimatedEndtime(crmAttivita.getEstimatedEndtime());
stbActivity.setEffectiveDate(crmAttivita.getEffectiveTime());
stbActivity.setEffectiveTime(crmAttivita.getEffectiveTime());
stbActivity.setEffectiveEnddate(crmAttivita.getEffectiveEndtime());
stbActivity.setEffectiveEndtime(crmAttivita.getEffectiveEndtime());
entityProcessor.processEntity(stbActivity, true, multiDBTransactionManager);
if (i == 0 && processActivityId == null) {
// Se si tratta della prima attività e non è specificato il processActivityId (activity_id del processo) allora
// vuol dire che si sta creando un nuovo contatto e quindi verrà creato sia il processo che l'attività semplice
processActivityId = stbActivity.getActivityId();
}
StbActivity stbActivity = new StbActivity();
stbActivity.setOperation(OperationType.INSERT);
if (processActivityId != null) {
stbActivity.setParentActivityId(processActivityId);
}
stbActivity.setTipoAnag(tipoAnag);
stbActivity.setCodAnag(codAnag);
stbActivity.setCodJcom(codJcom);
stbActivity.setActivityTypeId(crmAttivita.getActivityTypeId());
stbActivity.setActivityDescription(crmAttivita.getActivityDescription());
stbActivity.setActivityResultId(crmAttivita.getActivityResultId());
stbActivity.setNote(crmAttivita.getNote());
stbActivity.setFlagTipologia(crmAttivita.getFlagTipologia());
stbActivity.setUserName(crmAttivita.getUserName());
stbActivity.setUserCreator(crmAttivita.getUserCreator());
stbActivity.setUserModifier(crmAttivita.getUserModifier());
stbActivity.setOraModAct(crmAttivita.getOraModAct());
stbActivity.setOraViewAct(crmAttivita.getOraViewAct());
stbActivity.setEstimatedDate(crmAttivita.getEstimatedTime());
stbActivity.setEstimatedTime(crmAttivita.getEstimatedTime());
stbActivity.setEstimatedEnddate(crmAttivita.getEstimatedEndtime());
stbActivity.setEstimatedEndtime(crmAttivita.getEstimatedEndtime());
stbActivity.setEffectiveDate(crmAttivita.getEffectiveTime());
stbActivity.setEffectiveTime(crmAttivita.getEffectiveTime());
stbActivity.setEffectiveEnddate(crmAttivita.getEffectiveEndtime());
stbActivity.setEffectiveEndtime(crmAttivita.getEffectiveEndtime());
entityProcessor.processEntity(stbActivity, true, multiDBTransactionManager);
if (i == 0 && processActivityId == null) {
// Se si tratta della prima attività e non è specificato il processActivityId (activity_id del processo) allora
// vuol dire che si sta creando un nuovo contatto e quindi verrà creato sia il processo che l'attività semplice
processActivityId = stbActivity.getActivityId();
}
} else {
throw new Exception("I dati del processo e/o dell'attività da creare inesistenti");
}
} else {
throw new Exception("Dati di commessa da creare inesistenti");
throw new Exception("I dati del processo e/o dell'attività da creare inesistenti");
}
} else {
throw new Exception("Dati di commessa da creare inesistenti");
}
}
// Acquisizione processo padre
String parentActivityId = null;
String activityDescription = "PREVENTIVO N. " + numOrd + " DEL " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataOrd);
Date dataOraIns = new Date();
Date dataIns = UtilityDate.removeTime(dataOraIns);
sql = "SELECT stb_activity.activity_id " +
"FROM stb_activity, stb_activity_type " +
"WHERE stb_activity.flag_tipologia = stb_activity_type.flag_tipologia AND " +
" stb_activity.activity_type_id = stb_activity_type.activity_type_id AND " +
" stb_activity_type.link_gest = 'PREVENTIVAZIONE' AND " +
" stb_activity.cod_jcom = " + UtilityDB.valueToString(codJcom);
// Acquisizione processo padre
String parentActivityId = null;
String activityDescription = "PREVENTIVO N. " + numOrd + " DEL " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataOrd);
Date dataOraIns = new Date();
Date dataIns = UtilityDate.removeTime(dataOraIns);
sql = "SELECT stb_activity.activity_id " +
"FROM stb_activity, stb_activity_type " +
"WHERE stb_activity.flag_tipologia = stb_activity_type.flag_tipologia AND " +
" stb_activity.activity_type_id = stb_activity_type.activity_type_id AND " +
" stb_activity_type.link_gest = 'PREVENTIVAZIONE' AND " +
" stb_activity.cod_jcom = " + UtilityDB.valueToString(codJcom);
info = multiDBTransactionManager.prepareStatement(sql);
res = info.executeQuery();
while (res.next()) {
parentActivityId = res.getString(1);
}
res.close();
info.close();
info = multiDBTransactionManager.prepareStatement(sql);
res = info.executeQuery();
while (res.next()) {
parentActivityId = res.getString(1);
}
res.close();
info.close();
if (activityId == null) { // SE NON HA ATTIVITA PREVENTIVAZIONE, NE CREA UNA
// Inserimento attività completamento ordine
StbActivity stbActivity = new StbActivity();
stbActivity.setOperation(OperationType.INSERT);
@@ -822,6 +822,24 @@ public class CrmService {
entityProcessor.processEntity(stbActivity, true, multiDBTransactionManager);
activityId = stbActivity.getActivityId();
} else {
StbActivity stbActivity = new StbActivity();
stbActivity.setOperation(OperationType.UPDATE);
stbActivity.setActivityId(activityId);
stbActivity.setParentActivityId(parentActivityId);
stbActivity.setTipoAnag(tipoAnag);
stbActivity.setCodAnag(codAnag);
stbActivity.setCodJcom(codJcom);
stbActivity.setActivityTypeId(activityTypeId);
stbActivity.setActivityDescription(activityDescription);
stbActivity.setFlagTipologia(flagTipologia);
stbActivity.setUserName(requestDataDTO.getUsername());
stbActivity.setUserCreator(requestDataDTO.getUsername());
stbActivity.setOraViewAct(dataOraIns);
stbActivity.setEffectiveDate(dataIns);
stbActivity.setEffectiveTime(dataOraIns);
entityProcessor.processEntity(stbActivity, true, multiDBTransactionManager);
}
// Aggiornamento ordine WEB

View File

@@ -33,7 +33,7 @@ public class EuritmoOrdiniExportService extends BaseExportService {
List<String> records = new ArrayList<String>();
EntityExportResponse<List<File>> response = new EntityExportResponse<List<File>>();
response.setResponse(new ArrayList<File>());
String recordDTM = null;
String recordDTM = null, codiceEan = null;
Map<String, String> setupGestMap = setupGest.getExportSetupSection(multiDBTransactionManager.getPrimaryConnection(), exporter.getType(), exporter.getFormat());
String eanAzienda = setupGestMap.get(SetupGestKeySection.EAN_AZIENDA);
@@ -78,6 +78,15 @@ public class EuritmoOrdiniExportService extends BaseExportService {
for (EuritmoTestataOrd testata : testate) {
String eanCliente = setupGestMap.get("EAN_CLIENTE_" + testata.getCodAnag());
String idCliente = UtilityString.streNull(setupGestMap.get("EAN_CLIENTE_ID_" + testata.getCodAnag()));
if (idCliente.equals("EN")){
codiceEan = eanCliente.substring(0,7);
} else if (idCliente.equals("ZZ")){
codiceEan = eanCliente;
} else {
throw new Exception("Configurazione EAN_CLIENTE_ID non presente");
}
// Creazione RECORD BGM
String recordBGM =
@@ -85,8 +94,8 @@ public class EuritmoOrdiniExportService extends BaseExportService {
UtilityString.FillString(eanAzienda, ' ', 35, "R") +
UtilityString.FillString("ZZ" , ' ', 4, "R") +
UtilityString.FillString("" , ' ', 14, "R") +
UtilityString.FillString(eanCliente.substring(0,7) , ' ', 35, "R") +
UtilityString.FillString("EN" , ' ', 4, "R") +
UtilityString.FillString(codiceEan , ' ', 35, "R") +
UtilityString.FillString(idCliente , ' ', 4, "R") +
UtilityString.FillString("" , ' ', 14, "R") +
UtilityString.FillString("ORDRSP" , ' ', 6, "R") +
UtilityString.FillString(testata.getNumDoc() , ' ', 35, "R") +

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import it.integry.common.var.CommonConstants;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.export.enums.EntityExportType;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
@@ -52,6 +53,8 @@ public class RetailController {
@Autowired
private ServiceChecker serviceChecker;
@Autowired
private RequestDataDTO requestDataDTO;
@RequestMapping(value = "/retail/status", method = RequestMethod.GET)
public @ResponseBody
@@ -135,6 +138,7 @@ public class RetailController {
variazioniPvDTO.setTipoReport(tipoReport);
variazioniPvDTO.setFileXml(inputXML);
variazioniPvDTO.setDataValidita(UtilityDate.RecognizeDate(dataValidita));
variazioniPvDTO.setUserName(requestDataDTO.getUsername());
ResponseJSONObjectMapper jsonObjectMapper = new ResponseJSONObjectMapper();
JsonNode node = jsonObjectMapper.valueToTree(variazioniPvDTO);

View File

@@ -30,7 +30,7 @@ public class AnagraficaExporter extends BaseEntityExporter implements IEntityExp
return slim2kService.export(type, format);
case DOCFINANCE:
AnagraficaDocFinanceService anagraficaDocFinanceService = context.getBean(AnagraficaDocFinanceService.class);
return anagraficaDocFinanceService.exportDocFinance(super.type, super.format);
return anagraficaDocFinanceService.exportDocFinance(type, format, jsonBody);
default:
throw new Exception(String.format("Formato %s non supportato", format));
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.system.export.services.anagrafiche;
import com.fasterxml.jackson.databind.JsonNode;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.file_formatter.txt.TxtMapper;
import it.integry.ems.response.FileItem;
@@ -7,6 +8,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.export.dto.AnagraficaDocFinanceDTO;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@@ -23,10 +25,15 @@ public class AnagraficaDocFinanceService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public EntityExportResponse<List<FileItem>> exportDocFinance(String type, String format) throws Exception {
public EntityExportResponse<List<FileItem>> exportDocFinance(String type, String format, JsonNode body) throws Exception {
EntityExportResponse<List<FileItem>> entityExportResponse = new EntityExportResponse<>();
entityExportResponse.setResponse(new ArrayList<>());
boolean exportAllAnag = false;
if (body.has("exportAllAnag")) {
exportAllAnag = body.get("exportAllAnag").asBoolean();
}
String sql = "SELECT 'ROSSOGARGA' AS azienda,\n" +
" IIF(diacod > 0, diacod, ctb_anag.cod_ccon + gtb_anag.cod_anag) AS codice_pdc,\n" +
" IIF(vtb_clie.cod_anag IS NULL, 'F', 'C') AS tipo,\n" +
@@ -61,8 +68,9 @@ public class AnagraficaDocFinanceService {
" LEFT OUTER JOIN atb_forn ON gtb_anag.cod_anag = atb_forn.cod_anag\n" +
" LEFT OUTER JOIN gtb_banc_azi_intercode ON vtb_clie.cod_banc_azi = gtb_banc_azi_intercode.cod_banc_azi AND\n" +
" gtb_banc_azi_intercode.formato = 'DOCFINANCE'\n" +
(exportAllAnag?"":
"WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" +
" OR data_mod = CAST(GETDATE() AS DATE))\n" +
" OR data_mod = CAST(GETDATE() AS DATE))\n" )+
"UNION ALL\n" +
"SELECT 'ROSSOGARGA' AS azienda,\n" +
" IIF(diacod > 0, diacod, ctb_cont.cod_ccon) AS codice_pdc,\n" +
@@ -91,8 +99,9 @@ public class AnagraficaDocFinanceService {
" NULL AS cod_bic,\n" +
" NULL AS voce_finanziaria\n" +
"FROM ctb_cont\n" +
(exportAllAnag?"":
"WHERE (data_ins >= CAST(GETDATE() AS DATE)\n" +
" OR data_mod = CAST(GETDATE() AS DATE))";
" OR data_mod = CAST(GETDATE() AS DATE))");
List<AnagraficaDocFinanceDTO> anagraficaDocFinance = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, AnagraficaDocFinanceDTO.class);
TxtMapper<AnagraficaDocFinanceDTO> txtMapper = new TxtMapper<AnagraficaDocFinanceDTO>()