From 0f937fff190bdaaf688d1173299eed0d019ee8c8 Mon Sep 17 00:00:00 2001 From: brianbrix Date: Mon, 30 Mar 2026 09:47:43 +0300 Subject: [PATCH 01/11] AMP-31088: Merge similar transactions inot one funding item --- .../dataimporter/util/ImporterUtil.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java b/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java index 60443eb52c8..eb94da83db3 100644 --- a/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java +++ b/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java @@ -9,8 +9,6 @@ import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; -import org.dgfoundation.amp.ar.ArConstants; -import org.dgfoundation.amp.ar.ColumnConstants; import org.dgfoundation.amp.ar.ARUtil; import org.digijava.kernel.ampapi.endpoints.activity.ActivityImportRules; import org.digijava.kernel.ampapi.endpoints.activity.ActivityInterchangeUtils; @@ -26,7 +24,6 @@ import org.digijava.module.aim.dbentity.*; import org.digijava.module.aim.util.CurrencyUtil; import org.digijava.module.aim.util.DbUtil; -import org.digijava.module.aim.util.FeaturesUtil; import org.digijava.module.aim.util.ProgramUtil; import org.digijava.module.aim.util.SectorUtil; import org.digijava.module.aim.util.TeamUtil; @@ -651,6 +648,32 @@ private static boolean transactionExists(List transactions, Transac ); } + private static Set mergeFundingsByDonor(Set fundings) { + if (fundings == null || fundings.size() <= 1) return fundings; + Map merged = new LinkedHashMap<>(); + for (Funding f : fundings) { + String key = f.getDonor_organization_id() + "|" + + f.getSource_role() + "|" + + f.getType_of_assistance() + "|" + + f.getFinancing_instrument(); + Funding existing = merged.get(key); + if (existing == null) { + merged.put(key, f); + } else { + for (Transaction t : f.getCommitments()) { + if (!transactionExists(existing.getCommitments(), t)) existing.getCommitments().add(t); + } + for (Transaction t : f.getDisbursements()) { + if (!transactionExists(existing.getDisbursements(), t)) existing.getDisbursements().add(t); + } + for (Transaction t : f.getExpenditures()) { + if (!transactionExists(existing.getExpenditures(), t)) existing.getExpenditures().add(t); + } + } + } + return new LinkedHashSet<>(merged.values()); + } + /** * Creates a corresponding disbursement transaction for each commitment transaction. * The disbursement will have the same amount, currency, and date as the commitment. @@ -965,6 +988,7 @@ public static Long importTheData(ImportDataModel importDataModel, Session sessio objectMapper.configure(ESCAPE_NON_ASCII, false); // Disable escaping of non-ASCII characters during serialization objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); + importDataModel.setFundings(mergeFundingsByDonor(importDataModel.getFundings())); pruneParentLocationsWhenChildPresent(importDataModel, session); normalizeLocationPercentages(importDataModel); Map map = objectMapper From 7cd358fbd5b06e722225be2b00909b247ea83a3b Mon Sep 17 00:00:00 2001 From: brianbrix Date: Mon, 30 Mar 2026 10:58:37 +0300 Subject: [PATCH 02/11] AMP-31088: Merge similar transactions inot one funding item --- .../module/aim/action/dataimporter/util/ImporterUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java b/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java index eb94da83db3..60ef8bd186c 100644 --- a/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java +++ b/amp/src/main/java/org/digijava/module/aim/action/dataimporter/util/ImporterUtil.java @@ -335,7 +335,7 @@ private static String getFundingDate(String dateString) { } if (dateString != null && dateString.trim().matches("\\d{4}")) { int year = Integer.parseInt(dateString.trim()); - return LocalDate.of(year, 12, 31).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return LocalDate.of(year, 1, 1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } LocalDate date = LocalDate.now(); if (isCommonDateFormat(dateString)) { From 53305038b56e62ae47de3a57ed2e8fb5b2f0845c Mon Sep 17 00:00:00 2001 From: brianbrix Date: Mon, 30 Mar 2026 13:37:29 +0300 Subject: [PATCH 03/11] Change importer styles --- .../WEB-INF/jsp/aim/view/dataImporter.jsp | 29 +++++++++--------- .../jsp/aim/view/viewImportProgress.jsp | 30 ++++++++++--------- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/amp/src/main/webapp/WEB-INF/jsp/aim/view/dataImporter.jsp b/amp/src/main/webapp/WEB-INF/jsp/aim/view/dataImporter.jsp index 16ade5b9122..c5fe5454238 100644 --- a/amp/src/main/webapp/WEB-INF/jsp/aim/view/dataImporter.jsp +++ b/amp/src/main/webapp/WEB-INF/jsp/aim/view/dataImporter.jsp @@ -6,6 +6,7 @@ <digi:trn>Data Importer</digi:trn> + @@ -646,15 +647,15 @@