59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package iif
|
|
|
|
// iifAccountDataset defines the structure of intuit interchange format (iif) account dataset
|
|
type iifAccountDataset struct {
|
|
accountDataColumnIndexes map[string]int
|
|
accounts []*iifAccountData
|
|
}
|
|
|
|
// iifAccountData defines the structure of intuit interchange format (iif) account data
|
|
type iifAccountData struct {
|
|
dataItems []string
|
|
}
|
|
|
|
// iifTransactionDataset defines the structure of intuit interchange format (iif) transaction dataset
|
|
type iifTransactionDataset struct {
|
|
transactionDataColumnIndexes map[string]int
|
|
splitDataColumnIndexes map[string]int
|
|
transactions []*iifTransactionData
|
|
}
|
|
|
|
// iifTransactionData defines the structure of intuit interchange format (iif) transaction data
|
|
type iifTransactionData struct {
|
|
dataItems []string
|
|
splitData []*iifTransactionSplitData
|
|
}
|
|
|
|
// iifTransactionSplitData defines the structure of intuit interchange format (iif) transaction split data
|
|
type iifTransactionSplitData struct {
|
|
dataItems []string
|
|
}
|
|
|
|
func (s *iifTransactionDataset) getTransactionDataItemValue(transactionData *iifTransactionData, columnName string) (string, bool) {
|
|
if transactionData == nil {
|
|
return "", false
|
|
}
|
|
|
|
index, exists := s.transactionDataColumnIndexes[columnName]
|
|
|
|
if !exists || index < 0 || index >= len(transactionData.dataItems) {
|
|
return "", false
|
|
}
|
|
|
|
return transactionData.dataItems[index], true
|
|
}
|
|
|
|
func (s *iifTransactionDataset) getSplitDataItemValue(splitData *iifTransactionSplitData, columnName string) (string, bool) {
|
|
if splitData == nil {
|
|
return "", false
|
|
}
|
|
|
|
index, exists := s.splitDataColumnIndexes[columnName]
|
|
|
|
if !exists || index < 0 || index >= len(splitData.dataItems) {
|
|
return "", false
|
|
}
|
|
|
|
return splitData.dataItems[index], true
|
|
}
|