Create Financial Reporting Files via C#
Financial report formats creation including XBRL and OFX request or response file in 1.03 or 2.2 format within .NET based applications.
Aspose.Finance for .NET is a feature rich, extensible and easy to use financial report creation and processing API. Developers can easily create XBRL instance from scratch as well as can add schema reference, context, unit, item, footnote link, role reference and arc role reference. API provides relevant class for each feature such as for context, developers can use ContextPeriod , ContextEntity and Context . Moreover, API also supports open financial exchange (OFX) format request / response creation in 1.03 or 2.2 format.
Create XBRL File by Adding Item
For creating XBRL file and adding item into the document, process is, create XbrlDocument class instance. Prepare relevant settings for item by using appropriate API classes such as SchemaRef class , relevant context classes as mentioned above and Concept class . Finally define and intialize Item class properties as well as call the Save method to create XBRL file into disk.
C# Code to Create XBRL File by Adding Item
XbrlDocument xbrlDoc = new XbrlDocument(); | |
XbrlInstanceCollection xbrlInstances = xbrlDoc.XbrlInstances; | |
XbrlInstance xbrlInstance = xbrlInstances[xbrlInstances.Add()]; | |
SchemaRefCollection schemaRefs = xbrlInstance.SchemaRefs; | |
schemaRefs.Add(XbrlFilePath + @"schema.xsd", "example", "http://example.com/xbrl/taxonomy"); | |
SchemaRef schema = schemaRefs[0]; | |
ContextPeriod contextPeriod = new ContextPeriod(DateTime.Parse("2020-01-01"), DateTime.Parse("2020-02-10")); | |
ContextEntity contextEntity = new ContextEntity("exampleIdentifierScheme", "exampleIdentifier"); | |
Context context = new Context(contextPeriod, contextEntity); | |
xbrlInstance.Contexts.Add(context); | |
Unit unit = new Unit(UnitType.Measure); | |
unit.MeasureQualifiedNames.Add(new QualifiedName("USD", "iso4217", "http://www.xbrl.org/2003/iso4217")); | |
xbrlInstance.Units.Add(unit); | |
Concept fixedAssetsConcept = schema.GetConceptByName("fixedAssets"); | |
if (fixedAssetsConcept != null) | |
{ | |
Item item = new Item(fixedAssetsConcept); | |
item.ContextRef = context; | |
item.UnitRef = unit; | |
item.Precision = 4; | |
item.Value = "1444"; | |
xbrlInstance.Facts.Add(item); | |
} | |
xbrlDoc.Save(XbrlFilePath + @"output\dochavingItem.xbrl"); |
Create OFX Request and Response Files
For generating OFX files, the API provides OfxRequestDocument and OfxResponseDocument classes and developers can easily create OFX Request and Response files in both 1.03 and 2.2 formats. For initializing OfxRequestDocument properties, API also provides other classes such as SignonRequest , FinancialInstitution and StatementTransactionRequest classes. Similarly, for intializing OfxResponseDocument properties, API provides supportive classes such as SignonResponse , StatementTransactionResponse and StatementTransaction . Below are the code snippets for both cases with the use of relevant appropriate classes.
C# Code to Generate OFX Request Documents
string outputPath = RunExamples.Get_OutputDirectory(); | |
OfxResponseDocument ofxResponseDoc = new OfxResponseDocument(); | |
ofxResponseDoc.SignonResponseMessageSetV1 = new SignonResponseMessageSetV1(); | |
SignonResponse signonResponse = new SignonResponse(); | |
ofxResponseDoc.SignonResponseMessageSetV1.SignonResponse = signonResponse; | |
signonResponse.Status = new Status(); | |
signonResponse.Status.Code = "0"; | |
signonResponse.Status.Severity = SeverityEnum.INFO; | |
signonResponse.Status.Message = "SUCCESS"; | |
signonResponse.ServerDate = "20200611"; | |
signonResponse.ProfileUpdateDate = "20200611"; | |
FinancialInstitution fi = new FinancialInstitution(); | |
fi.Organization = "aspose"; | |
fi.FinancialInstitutionId = "1"; | |
signonResponse.FinancialInstitution = fi; | |
signonResponse.SessionCookie = "11111111111111111"; | |
ofxResponseDoc.BankResponseMessageSetV1 = new BankResponseMessageSetV1(); | |
StatementTransactionResponse stmtTransResponse = new StatementTransactionResponse(); | |
ofxResponseDoc.BankResponseMessageSetV1.StatementTransactionResponses.Add(stmtTransResponse); | |
stmtTransResponse.TransactionUniqueId = "829631324"; | |
stmtTransResponse.Status = new Status(); | |
stmtTransResponse.Status.Code = "0"; | |
stmtTransResponse.Status.Severity = SeverityEnum.INFO; | |
stmtTransResponse.StatementResponse = new StatementResponse(); | |
stmtTransResponse.StatementResponse.Currency = CurrencyEnum.USD; | |
stmtTransResponse.StatementResponse.BankAccountFrom = new BankAccount(); | |
stmtTransResponse.StatementResponse.BankAccountFrom.BankId = "1111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountId = "1111111111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountType = AccountEnum.CHECKING; | |
stmtTransResponse.StatementResponse.BankTransactionList = new BankTransactionList(); | |
stmtTransResponse.StatementResponse.BankTransactionList.StartDate = "20200601000000"; | |
stmtTransResponse.StatementResponse.BankTransactionList.EndDate = "20200611000000"; | |
StatementTransaction transaction1 = new StatementTransaction(); | |
transaction1.TransactionType = TransactionEnum.DEBIT; | |
transaction1.PostedDate = "20200611000000"; | |
transaction1.TransactionAmount = "-12"; | |
transaction1.FinancialInstitutionTransactionId = "1111111111111111111111111"; | |
transaction1.Name = "bbbbbbbbbbbbbbbbbbbbbbb"; | |
StatementTransaction transaction2 = new StatementTransaction(); | |
transaction2.TransactionType = TransactionEnum.CREDIT; | |
transaction2.PostedDate = "20200611000000"; | |
transaction2.TransactionAmount = "22222.11"; | |
transaction2.FinancialInstitutionTransactionId = "2222222222222222222222222222"; | |
transaction2.Name = "wwwwwwwwwwwwwwwwwwwwwwww"; | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction1); | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction2); | |
stmtTransResponse.StatementResponse.LedgerBalance = new LedgerBalance(); | |
stmtTransResponse.StatementResponse.LedgerBalance.BalanceAmount = "+2222.42"; | |
stmtTransResponse.StatementResponse.LedgerBalance.DateAsOf = "20200611000000"; | |
stmtTransResponse.StatementResponse.AvailableBalance = new AvailableBalance(); | |
stmtTransResponse.StatementResponse.AvailableBalance.BalanceAmount = "+222222.42"; | |
stmtTransResponse.StatementResponse.AvailableBalance.DateAsOf = "20200611000000"; | |
ofxResponseDoc.Save(outputPath + @"newOfxResponseBankStatement.xml", OfxVersionEnum.V2x); | |
ofxResponseDoc.Save(outputPath + @"newOfxResponseBankStatement.sgml", OfxVersionEnum.V1x); |
C# Code to Generate OFX Response Documents
string outputPath = RunExamples.Get_OutputDirectory(); | |
OfxResponseDocument ofxResponseDoc = new OfxResponseDocument(); | |
ofxResponseDoc.SignonResponseMessageSetV1 = new SignonResponseMessageSetV1(); | |
SignonResponse signonResponse = new SignonResponse(); | |
ofxResponseDoc.SignonResponseMessageSetV1.SignonResponse = signonResponse; | |
signonResponse.Status = new Status(); | |
signonResponse.Status.Code = "0"; | |
signonResponse.Status.Severity = SeverityEnum.INFO; | |
signonResponse.Status.Message = "SUCCESS"; | |
signonResponse.ServerDate = "20200611"; | |
signonResponse.ProfileUpdateDate = "20200611"; | |
FinancialInstitution fi = new FinancialInstitution(); | |
fi.Organization = "aspose"; | |
fi.FinancialInstitutionId = "1"; | |
signonResponse.FinancialInstitution = fi; | |
signonResponse.SessionCookie = "11111111111111111"; | |
ofxResponseDoc.BankResponseMessageSetV1 = new BankResponseMessageSetV1(); | |
StatementTransactionResponse stmtTransResponse = new StatementTransactionResponse(); | |
ofxResponseDoc.BankResponseMessageSetV1.StatementTransactionResponses.Add(stmtTransResponse); | |
stmtTransResponse.TransactionUniqueId = "829631324"; | |
stmtTransResponse.Status = new Status(); | |
stmtTransResponse.Status.Code = "0"; | |
stmtTransResponse.Status.Severity = SeverityEnum.INFO; | |
stmtTransResponse.StatementResponse = new StatementResponse(); | |
stmtTransResponse.StatementResponse.Currency = CurrencyEnum.USD; | |
stmtTransResponse.StatementResponse.BankAccountFrom = new BankAccount(); | |
stmtTransResponse.StatementResponse.BankAccountFrom.BankId = "1111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountId = "1111111111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountType = AccountEnum.CHECKING; | |
stmtTransResponse.StatementResponse.BankTransactionList = new BankTransactionList(); | |
stmtTransResponse.StatementResponse.BankTransactionList.StartDate = "20200601000000"; | |
stmtTransResponse.StatementResponse.BankTransactionList.EndDate = "20200611000000"; | |
StatementTransaction transaction1 = new StatementTransaction(); | |
transaction1.TransactionType = TransactionEnum.DEBIT; | |
transaction1.PostedDate = "20200611000000"; | |
transaction1.TransactionAmount = "-12"; | |
transaction1.FinancialInstitutionTransactionId = "1111111111111111111111111"; | |
transaction1.Name = "bbbbbbbbbbbbbbbbbbbbbbb"; | |
StatementTransaction transaction2 = new StatementTransaction(); | |
transaction2.TransactionType = TransactionEnum.CREDIT; | |
transaction2.PostedDate = "20200611000000"; | |
transaction2.TransactionAmount = "22222.11"; | |
transaction2.FinancialInstitutionTransactionId = "2222222222222222222222222222"; | |
transaction2.Name = "wwwwwwwwwwwwwwwwwwwwwwww"; | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction1); | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction2); | |
stmtTransResponse.StatementResponse.LedgerBalance = new LedgerBalance(); | |
stmtTransResponse.StatementResponse.LedgerBalance.BalanceAmount = "+2222.42"; | |
stmtTransResponse.StatementResponse.LedgerBalance.DateAsOf = "20200611000000"; | |
stmtTransResponse.StatementResponse.AvailableBalance = new AvailableBalance(); | |
stmtTransResponse.StatementResponse.AvailableBalance.BalanceAmount = "+222222.42"; | |
stmtTransResponse.StatementResponse.AvailableBalance.DateAsOf = "20200611000000"; | |
ofxResponseDoc.Save(outputPath + @"newOfxResponseBankStatement.xml", OfxVersionEnum.V2x); | |
ofxResponseDoc.Save(outputPath + @"newOfxResponseBankStatement.sgml", OfxVersionEnum.V1x); |