Go to file
Philipp Kunz 2c323cd86c
Some checks failed
Default (tags) / security (push) Failing after 18s
Default (tags) / test (push) Failing after 12s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
1.1.0
2024-07-05 11:04:00 +02:00
.gitea/workflows feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
.vscode feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
test feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
ts feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
.gitignore feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
.gitlab-ci.yml feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
.npmrc feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
changelog.md feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
license feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
npmextra.json feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
package.json 1.1.0 2024-07-05 11:04:00 +02:00
pnpm-lock.yaml feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
readme.hints.md feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
readme.md feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00
tsconfig.json feat(core): Add support for CI workflows and update gitignore 2024-07-05 11:03:59 +02:00

# @fin.cx/csvparser
a csvparser for fin2021

## Install

To install the `@fin.cx/csvparser` module, you can use npm. Simply run the following command:

```bash
npm install @fin.cx/csvparser

Usage

The @fin.cx/csvparser module provides tools to parse CSV files from various financial institutions such as Commerzbank, Fidor Bank, PayPal, and Spendesk. This helps in extracting and managing financial transaction data efficiently.

Here's a guide to showcase various functionalities along with comprehensive TypeScript code examples.

Getting Started

First, make sure to import the necessary components from the @fin.cx/csvparser module.

import { CsvSpendesk, CsvPayPal, CsvFidor, CsvCommerzbank } from '@fin.cx/csvparser';

Spendesk CSV Parsing

Parsing Spendesk CSV from File

The CsvSpendesk class provides methods to parse Spendesk CSV files.

import { CsvSpendesk } from '@fin.cx/csvparser';

async function parseSpendeskFile(filePath: string) {
  try {
    const spendeskData = await CsvSpendesk.fromFile(filePath);
    const transactions = await spendeskData.getTransactions();
    console.log(transactions);
  } catch (error) {
    console.error('Error parsing Spendesk file:', error);
  }
}

// Usage example
parseSpendeskFile('./path/to/spendesk.csv');

Parsing Spendesk CSV from Directory

You might have multiple Spendesk CSV files in a directory. The fromDir method helps in parsing all of them.

import { CsvSpendesk } from '@fin.cx/csvparser';

async function parseSpendeskDirectory(dirPath: string) {
  try {
    const spendeskData = await CsvSpendesk.fromDir(dirPath);
    const transactions = await spendeskData.getTransactions();
    console.log(transactions);
  } catch (error) {
    console.error('Error parsing Spendesk directory:', error);
  }
}

// Usage example
parseSpendeskDirectory('./path/to/spendesk_dir');

PayPal CSV Parsing

The CsvPayPal class is used to parse PayPal CSV files.

import { CsvPayPal } from '@fin.cx/csvparser';

async function parsePayPalFile(filePath: string) {
  try {
    const payPalData = new CsvPayPal();
    const csvDescriptor = {
      filename: 'paypal.csv',
      contentString: await fs.promises.readFile(filePath, 'utf8')
    }
    payPalData.addCsvDecriptor(csvDescriptor);
    const transactions = await payPalData.getTransactions();
    console.log(transactions);
  } catch (error) {
    console.error('Error parsing PayPal file:', error);
  }
}

// Usage example
parsePayPalFile('./path/to/paypal.csv');

Fidor Bank CSV Parsing

The CsvFidor class is used to parse Fidor Bank CSV files.

import { CsvFidor } from '@fin.cx/csvparser';

async function parseFidorFile(filePath: string) {
  try {
    const fidorData = new CsvFidor();
    const csvDescriptor = {
      filename: 'fidor.csv',
      contentString: await fs.promises.readFile(filePath, 'utf8')
    }
    fidorData.addCsvDecriptor(csvDescriptor);
    const transactions = await fidorData.getTransactions();
    console.log(transactions);
  } catch (error) {
    console.error('Error parsing Fidor file:', error);
  }
}

// Usage example
parseFidorFile('./path/to/fidor.csv');

Commerzbank CSV Parsing

The CsvCommerzbank class is used to parse Commerzbank CSV files.

import { CsvCommerzbank } from '@fin.cx/csvparser';

async function parseCommerzbankFile(filePath: string) {
  try {
    const commerzbankData = new CsvCommerzbank();
    const csvDescriptor = {
      filename: 'commerzbank.csv',
      contentString: await fs.promises.readFile(filePath, 'utf8')
    }
    commerzbankData.addCsvDecriptor(csvDescriptor);
    const transactions = await commerzbankData.getTransactions();
    console.log(transactions);
  } catch (error) {
    console.error('Error parsing Commerzbank file:', error);
  }
}

// Usage example
parseCommerzbankFile('./path/to/commerzbank.csv');

Advanced Usage

Merging Spendesk Data

You may need to merge multiple Spendesk CSV data instances.

import { CsvSpendesk } from '@fin.cx/csvparser';

async function mergeSpendeskData(filePaths: string[]) {
  try {
    const spendeskInstances = await Promise.all(filePaths.map(CsvSpendesk.fromFile));
    const mergedInstance = spendeskInstances.reduce(
      (merged, currentInstance) => merged.concat(currentInstance),
      spendeskInstances[0]
    );
    console.log(await mergedInstance.getTransactions());
  } catch (error) {
    console.error('Error merging Spendesk data:', error);
  }
}

// Usage example
mergeSpendeskData([
  './path/to/spendesk1.csv',
  './path/to/spendesk2.csv'
]);

Working with PayPal Linked Transactions

PayPal CSV data contains linked transactions, which you may need to handle specifically.

import { CsvPayPal } from '@fin.cx/csvparser';

async function handlePayPalLinkedTransactions(filePath: string) {
  try {
    const payPalData = new CsvPayPal();
    const csvDescriptor = {
      filename: 'paypal.csv',
      contentString: await fs.promises.readFile(filePath, 'utf8')
    }
    payPalData.addCsvDecriptor(csvDescriptor);
    const transactions = await payPalData.getTransactions();

    const linkedTransactions = transactions.filter(tx => tx.linkedTransactionCode);
    console.log(linkedTransactions);
  } catch (error) {
    console.error('Error handling linked transactions:', error);
  }
}

// Usage example
handlePayPalLinkedTransactions('./path/to/paypal.csv');

Parsing Multiple File Types

You may need to parse CSV files from different financial service providers.

import { CsvSpendesk, CsvPayPal, CsvFidor, CsvCommerzbank } from '@fin.cx/csvparser';

async function parseMultipleFiles(filePaths: {spendesk: string, paypal: string, fidor: string, commerzbank: string}) {
  try {
    const spendeskData = await CsvSpendesk.fromFile(filePaths.spendesk);
    const payPalData = new CsvPayPal();
    const csvDescriptorPayPal = {
      filename: 'paypal.csv',
      contentString: await fs.promises.readFile(filePaths.paypal, 'utf8')
    }
    payPalData.addCsvDecriptor(csvDescriptorPayPal);
    
    const fidorData = new CsvFidor();
    const csvDescriptorFidor = {
      filename: 'fidor.csv',
      contentString: await fs.promises.readFile(filePaths.fidor, 'utf8')
    }
    fidorData.addCsvDecriptor(csvDescriptorFidor);
    
    const commerzbankData = new CsvCommerzbank();
    const csvDescriptorCommerzbank = {
      filename: 'commerzbank.csv',
      contentString: await fs.promises.readFile(filePaths.commerzbank, 'utf8')
    }
    commerzbankData.addCsvDecriptor(csvDescriptorCommerzbank);
    
    console.log(await spendeskData.getTransactions());
    console.log(await payPalData.getTransactions());
    console.log(await fidorData.getTransactions());
    console.log(await commerzbankData.getTransactions());

  } catch (error) {
    console.error('Error parsing multiple files:', error);
  }
}

// Usage example
parseMultipleFiles({
  spendesk: './path/to/spendesk.csv',
  paypal: './path/to/paypal.csv',
  fidor: './path/to/fidor.csv',
  commerzbank: './path/to/commerzbank.csv'
});

By covering multiple use cases and providing comprehensive documentation and code samples, this readme should help developers integrate and utilize the @fin.cx/csvparser module effectively.

undefined