Skip to content

Commit

Permalink
5447-app - Optionally include C_Location changes..
Browse files Browse the repository at this point in the history
* add javadoc, comments and dev-doc to the "C_Location" AD_Table
* also fix a stupid bug
#5447
  • Loading branch information
metas-ts committed Aug 26, 2019
1 parent 2c66d30 commit 4ef47b8
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 10 deletions.
Expand Up @@ -62,16 +62,17 @@ public static LogEntriesQuery of(@NonNull final TableRecordReference tableRecord
* the actual {@code C_Location} records are compared with each other and {@link RecordChangeLogEntry} are derived from their differences.
*
* Then those @{@code C_Location}-derived {@link RecordChangeLogEntry}s are added to the respective {@link TableRecordReference}'s change log.
*
* If you don't want this to happen e.g. for {@code C_BPartner_Location}, you can set {@code IsAllowLogging='N'} for {@code C_BPartner_Location.C_Location_ID}.
*
* <p/>
* If you don't want this to happen e.g. for {@code C_BPartner_Location}, you can set {@code IsAllowLogging='N'} for the column {@code C_BPartner_Location.C_Location_ID}.<br/>
* If you don't want this to happen in general, you can set {@code IsChangeLog='N'} for the entire {@code C_Location} table.
* <p/>
* Note that {@link RecordChangeLogEntry}s are <b>not</b> derived for these {@code C_Location}-columns:
* <li>{@code Created}, but note that the {@code C_Location} record's {@code Created} value is used in the {@link RecordChangeLogEntry}
* <li>{@code CreatedBy} same as {@code Created}
* <li>{@code Updated} and {@code UpdatedBy}: since {@code C_Location} is immutable, they don't matter anyways
* <li>{@code C_Location_ID}
* <li>Every {@code C_Location}-column with {@code IsAllowLogging='N'}
*
* <p/>
* Also note: if you have e.g. {@code IsAllowLogging='Y'} for {@code C_BPartner_Location.C_Location_ID}, and {@link followLocationIdChanges=false},
* then the change log contains the different location ID,
* i.e. {@link KeyNamePair}s with the {@code C_Location_ID} and the locations rendered address string.
Expand Down
Expand Up @@ -86,7 +86,7 @@ public class RecordChangeLogEntryLoader
private static final CCache<AdTableId, RecordChangeLogEntryValuesResolver> adTabled2RecordChangeLogEntryValuesResolver = CCache
.<AdTableId, RecordChangeLogEntryValuesResolver> builder()
.cacheName("adTabled2RecordChangeLogEntryValuesResolver")
.additionalTableNameToResetFor(I_AD_Table.Table_Name)
.additionalTableNameToResetFor(I_AD_Table.Table_Name) // those table names are more or less here only for good measure; i didn't really analyze their need
.additionalTableNameToResetFor(I_AD_Column.Table_Name)
.additionalTableNameToResetFor(I_AD_Reference.Table_Name)
.additionalTableNameToResetFor(I_AD_Ref_List.Table_Name)
Expand All @@ -107,16 +107,17 @@ public static ImmutableListMultimap<TableRecordReference, RecordChangeLogEntry>

final Map<TableRecordReference, TreeSet<RecordChangeLogEntry>> intermediateResult = new HashMap<>();

if (logEntriesQuery.isFollowLocationIdChanges())
if (logEntriesQuery.isFollowLocationIdChanges() && POInfo.getPOInfo(I_C_Location.Table_Name).isChangeLog())
{
// separate change log entries that reference C_Location
// separate from each other those change log entries that do and do not reference C_Location
final Map<Boolean, List<RecordRefWithLogEntry>> partition = recordRefWithLogEntries.stream()
.collect(Collectors.partitioningBy(RecordChangeLogEntryLoader::isReferencesLocationTable));

addAllToIntermediateResult(partition.get(false)/* entriesWithoutLocationId */, intermediateResult);
final List<RecordRefWithLogEntry> entriesWithoutLocationId = partition.get(false);
addAllToIntermediateResult(entriesWithoutLocationId, intermediateResult);

// instead of entriesWithLocationId, we derive C_Location-ChangeLog-Entries and add those
final List<RecordRefWithLogEntry> entriesWithLocationId = partition.get(true);
// instead of adding entriesWithLocationId, we derive C_Location-ChangeLog-Entries and add those
final ImmutableListMultimap<TableRecordReference, LocationId> locationIds = extractLocationIds(entriesWithLocationId);
final ImmutableListMultimap<TableRecordReference, I_C_Location> locationRecords = extractLocationRecords(locationIds);

Expand Down Expand Up @@ -246,7 +247,7 @@ private static ImmutableList<RecordChangeLogEntry> deriveLocationLogEntries(
{
final I_C_Location oldRecord = orderedLocationRecords.get(recordIdx - 1);
final I_C_Location newRecord = orderedLocationRecords.get(recordIdx);
for (int columnIdx = 0; columnIdx <= poInfo.getColumnCount(); columnIdx++)
for (int columnIdx = 0; columnIdx < poInfo.getColumnCount(); columnIdx++)
{
final String columnName = poInfo.getColumnName(columnIdx);

Expand Down
@@ -0,0 +1,123 @@
-- 2019-08-22T12:02:33.854
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=817
;

-- 2019-08-22T12:02:34.718
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=818
;

-- 2019-08-22T12:02:35.709
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=12530
;

-- 2019-08-22T12:02:36.919
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=12531
;

-- 2019-08-22T12:02:37.584
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=62852
;

-- 2019-08-22T12:02:38.370
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=7048
;

-- 2019-08-22T12:02:39.356
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=820
;

-- 2019-08-22T12:02:40.923
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=819
;

-- 2019-08-22T12:02:42.383
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=557172
;

-- 2019-08-22T12:02:43.785
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=821
;

-- 2019-08-22T12:02:45.091
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=567902
;

-- 2019-08-22T12:02:45.755
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=567901
;

-- 2019-08-22T12:02:46.323
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=811
;

-- 2019-08-22T12:02:47.019
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=62034
;

-- 2019-08-22T12:02:47.869
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=567648
;

-- 2019-08-22T12:02:48.941
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=567649
;

-- 2019-08-22T12:02:49.584
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:02:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=542626
;

-- 2019-08-22T12:03:10.747
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:03:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=62851
;

-- 2019-08-22T12:03:12.932
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:03:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=823
;

-- 2019-08-22T12:03:15.085
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:03:15','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=8214
;

-- 2019-08-22T12:03:38.163
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2019-08-22 12:03:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=822
;

-- 2019-08-22T14:14:08.999
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Table SET TechnicalNote='C_Location records are immutable, to make sure that a change in master data does not affect "historic" records such as fact_acct accounting data.
Also see org.adempiere.ad.table.LogEntriesRepository.LogEntriesQuery',Updated=TO_TIMESTAMP('2019-08-22 14:14:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=162
;

-- 2019-08-26T14:10:08.763
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Table SET TechnicalNote='In order to make sure that a change in master data does not affect "historic" records such as fact_acct accounting data, C_Location records are immutable.
Bug also see org.adempiere.ad.table.LogEntriesRepository.LogEntriesQuery for how C_Location entries can still be part of the displayed change log',Updated=TO_TIMESTAMP('2019-08-26 14:10:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=162
;

-- 2019-08-26T14:16:02.035
-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
UPDATE AD_Table SET TechnicalNote='In order to make sure that a change in master data does not affect "historic" records such as fact_acct accounting data, C_Location records are immutable.
But also see org.adempiere.ad.table.LogEntriesRepository.LogEntriesQuery for how C_Location entries might still be part of the displayed change log.',Updated=TO_TIMESTAMP('2019-08-26 14:16:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=162
;

0 comments on commit 4ef47b8

Please sign in to comment.