importer

package
v4.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2024 License: AGPL-3.0 Imports: 8 Imported by: 0

README

importer

There are two types of importers:

  • Budget importers. These import whole budgets at once.
  • Transaction importers. These import transactions for a specified account. This is a two-step process: Transaction importers return a slice of TransactionPreview objects. These are returned by the API to allow users to edit the transactions before finally importing them.

Documentation

Index

Constants

View Source
const (
	AffectAvailable string = "AFFECT_AVAILABLE"
	AffectEnvelope  string = "AFFECT_ENVELOPE"
)

Variables

This section is empty.

Functions

func Create

func Create(db *gorm.DB, resources ParsedResources) (models.Budget, error)

Types

type Category

type Category struct {
	Model     models.Category
	Envelopes map[string]Envelope
}

type Envelope

type Envelope struct {
	Model models.Envelope
}

type MatchRule

type MatchRule struct {
	models.MatchRule
	Account string
}

MatchRule represents a MatchRule to be imported.

type MonthConfig

type MonthConfig struct {
	Model         models.MonthConfig
	Category      string // There is a category here since an envelope with the same name can exist for multiple categories
	Envelope      string
	OverspendMode string // The OverspendMode used by YNAB4
}

type OverspendFix

type OverspendFix struct {
	Category string // There is a category here since an envelope with the same name can exist for multiple categories
	Envelope string
	Month    types.Month
}

OverspendFix supports the import of budgeting apps that allow overspending for an envelope to affect that envelope's balance in the next month. It is used by the creator to subtract the overspent amount from the allocation of the next month for the specific envelope

OverspendFixes have to be added by the budget parsers since these are responsible for detecting situations where overspend is configured to affect the envelope.

However, the calculation of the balance for the envelope and possible subtraction of overspend is handled by the creator

type ParsedResources

type ParsedResources struct {
	Budget         models.Budget
	Accounts       []models.Account
	Categories     map[string]Category
	Transactions   []Transaction
	MonthConfigs   []MonthConfig
	MatchRules     []MatchRule
	OverspendFixes []OverspendFix
}

ParsedResources is the struct containing all resources that are to be created Named resources are in maps with their names as keys to enable easy deduplication and iteration through them.

type Transaction

type Transaction struct {
	Model                  models.Transaction
	SourceAccountHash      string // Import hash of the source account
	DestinationAccountHash string // Import hash of the destination account
	Category               string // There is a category here since an envelope with the same name can exist for multiple categories
	Envelope               string
}

type TransactionPreview

type TransactionPreview struct {
	Transaction             models.Transaction `json:"transaction"`
	SourceAccountName       string             `json:"sourceAccountName" example:"Employer"`                       // Name of the source account from the CSV file
	DestinationAccountName  string             `json:"destinationAccountName" example:"Deutsche Bahn"`             // Name of the destination account from the CSV file
	DuplicateTransactionIDs []uuid.UUID        `json:"duplicateTransactionIds"`                                    // IDs of transactions that this transaction duplicates
	MatchRuleID             uuid.UUID          `json:"matchRuleId" example:"042d101d-f1de-4403-9295-59dc0ea58677"` // ID of the match rule that was applied to this transaction preview
}

TransactionPreview is used to preview transactions that will be imported to allow for editing.

Directories

Path Synopsis
parser

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL