diff --git a/FormCompareTools/FormCompareTools/FormCompareTool.csproj b/FormCompareTools/FormCompareTools/FormCompareTool.csproj
index ca716bd..7b89d46 100644
--- a/FormCompareTools/FormCompareTools/FormCompareTool.csproj
+++ b/FormCompareTools/FormCompareTools/FormCompareTool.csproj
@@ -161,6 +161,11 @@
+
+
+ PreserveNewest
+
+
\ No newline at end of file
diff --git a/FormCompareTools/FormCompareTools/FormParameters.cs b/FormCompareTools/FormCompareTools/FormParameters.cs
index 4ad01be..7786b16 100644
--- a/FormCompareTools/FormCompareTools/FormParameters.cs
+++ b/FormCompareTools/FormCompareTools/FormParameters.cs
@@ -6,6 +6,8 @@ namespace FormCompareTools
{
public string FormName { get; set; }
public string MainTableName { get; set; }
+ public string XmlFormName { get; set; }
public Dictionary Columns { get; set; }
+ public Dictionary XmlColumns { get; set; }
}
}
diff --git a/FormCompareTools/FormCompareTools/InputParameters.cs b/FormCompareTools/FormCompareTools/InputParameters.cs
index f03d089..1089be0 100644
--- a/FormCompareTools/FormCompareTools/InputParameters.cs
+++ b/FormCompareTools/FormCompareTools/InputParameters.cs
@@ -7,8 +7,10 @@
public string PrimarySsn { get; set; }
public string FormName { get; set; }
public string TestName { get; set; }
+ public string BatchXml { get; set; }
public string LinesColumn { get; set; } = "A";
public string DatabaseColumn { get; set; } = "E";
+ public string BatchXmColumn { get; set; } = "F";
public int FirstRow { get; set; }
public int LastRow { get; set; }
public string PrimarySsnCell { get; set; } = "C1";
diff --git a/FormCompareTools/FormCompareTools/Program.cs b/FormCompareTools/FormCompareTools/Program.cs
index 41cece7..b046bb5 100644
--- a/FormCompareTools/FormCompareTools/Program.cs
+++ b/FormCompareTools/FormCompareTools/Program.cs
@@ -5,7 +5,11 @@ using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
+using System.Linq;
using System.Text.Json;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
namespace FormCompareTools
{
@@ -52,7 +56,8 @@ namespace FormCompareTools
return null;
}
- static void Main(string[] args){
+ static void Main(string[] args)
+ {
var inputParametersJson = GetParametersFile(args);
var inputFormParametersJson = GetFormParametersFile(args);
@@ -74,6 +79,8 @@ namespace FormCompareTools
formParameters = JsonSerializer.Deserialize(fs);
}
+ var xmlFormData = LoadBatchXml(inputParameters, formParameters);
+
var sheetName = $"{inputParameters.FormName}_{inputParameters.TestName}";
var wb = new XLWorkbook(inputParameters.ExcelTemplate);
@@ -99,6 +106,7 @@ namespace FormCompareTools
for (int i = inputParameters.FirstRow; i <= inputParameters.LastRow; i++)
{
var databaseValueCell = $"{inputParameters.DatabaseColumn}{i}";
+ var batchXmlValueCell = $"{inputParameters.BatchXmColumn}{i}";
var lineCell = $"{inputParameters.LinesColumn}{i}";
var lineNumber = GetCellValue(worksheet, lineCell);
@@ -118,6 +126,25 @@ namespace FormCompareTools
worksheet.Cell(databaseValueCell).Value = rawValue.ToString();
}
}
+
+ if (formParameters.XmlColumns.TryGetValue(lineNumber, out var xmlElementName))
+ {
+ if (xmlFormData.TryGetValue(xmlElementName, out var rawXmlValue))
+ {
+ if (int.TryParse(rawXmlValue.ToString(), out var intValue))
+ {
+ worksheet.Cell(batchXmlValueCell).Value = intValue;
+ }
+ else if (decimal.TryParse(rawXmlValue.ToString(), out var decimalValue))
+ {
+ worksheet.Cell(batchXmlValueCell).Value = decimalValue;
+ }
+ else
+ {
+ worksheet.Cell(batchXmlValueCell).Value = rawXmlValue.ToString();
+ }
+ }
+ }
}
worksheet.Cell(inputParameters.PrimarySsnCell).Value = inputParameters.PrimarySsn;
@@ -134,6 +161,25 @@ namespace FormCompareTools
}
}
+ private static Dictionary LoadBatchXml(InputParameters inputParameters, FormParameters formParameters)
+ {
+ var xml = XDocument.Load(inputParameters.BatchXml);
+ XNamespace ns = "http://www.irs.gov/efile";
+ XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xml.CreateReader().NameTable);
+ namespaceManager.AddNamespace("ns", ns.NamespaceName);
+ XElement xmlFormNode = xml.XPathSelectElement($"//ns:{formParameters.XmlFormName}", namespaceManager);
+
+ var xmlFormData = new Dictionary { };
+ if (xmlFormNode != null)
+ {
+ // Convert descendants to dictionary
+ xmlFormData = xmlFormNode
+ .Descendants()
+ .ToDictionary(x => x.Name.LocalName, x => x.Value);
+ }
+ return xmlFormData;
+ }
+
private static string GetCellValue(IXLWorksheet worksheet, string lineCell)
{
var lineNumber = string.Empty;
diff --git a/FormCompareTools/FormCompareTools/nm_forms.xlsx b/FormCompareTools/FormCompareTools/nm_forms.xlsx
index 162067e..86ed3e2 100644
Binary files a/FormCompareTools/FormCompareTools/nm_forms.xlsx and b/FormCompareTools/FormCompareTools/nm_forms.xlsx differ
diff --git a/FormCompareTools/FormCompareTools/nm_pit_1.json b/FormCompareTools/FormCompareTools/nm_pit_1.json
index 502334b..b144bba 100644
--- a/FormCompareTools/FormCompareTools/nm_pit_1.json
+++ b/FormCompareTools/FormCompareTools/nm_pit_1.json
@@ -1,8 +1,13 @@
{
"FormName": "nm_pit_1",
+ "XmlFormName": "NMPIT1",
"MainTableName": "nm_frm_pit_1",
"Columns": {
"line_1": "number_of_fed_exemptions",
"line_2": "fed_deduction_amt"
+ },
+ "XmlColumns": {
+ "line_1": "NumberOfFedExemptions",
+ "line_2": "FedDeductionAmt"
}
}
diff --git a/FormCompareTools/FormCompareTools/nm_pit_1_test_1.json b/FormCompareTools/FormCompareTools/nm_pit_1_test_1.json
index ec14cab..99a4a75 100644
--- a/FormCompareTools/FormCompareTools/nm_pit_1_test_1.json
+++ b/FormCompareTools/FormCompareTools/nm_pit_1_test_1.json
@@ -2,10 +2,12 @@
"ExcelTemplate": "nm_forms.xlsx",
"ExcelOutput": "C:\\temp\\nm_forms_{0}.xlsx",
"PrimarySsn": "226966190",
+ "BatchXml": "state-irs-submission.xml",
"FormName": "nm_pit_1",
"TestName": "test_1",
"LinesColumn": "A",
"DatabaseColumn": "E",
+ "BatchXmColumn": "F",
"FirstRow": 4,
"LastRow": 8,
"PrimarySsnCell": "C1"
diff --git a/FormCompareTools/FormCompareTools/state-irs-submission.xml b/FormCompareTools/FormCompareTools/state-irs-submission.xml
new file mode 100644
index 0000000..71a8c64
--- /dev/null
+++ b/FormCompareTools/FormCompareTools/state-irs-submission.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ 1
+ 300
+
+
+
\ No newline at end of file