Git Product home page Git Product logo

dickwolff / export-to-ghostfolio Goto Github PK

View Code? Open in Web Editor NEW
26.0 26.0 7.0 850 KB

Convert transaction history export from your favorite broker to a format that can be imported in Ghostfolio.

Home Page: https://hub.docker.com/r/dickwolff/export-to-ghostfolio

License: Apache License 2.0

TypeScript 99.77% Dockerfile 0.23%
bitvavo degiro etoro finpension ghostfolio ghostfolio-plugin ibkr interactivebrokers rabobank schwab swissquote trading212 xtb

export-to-ghostfolio's People

Contributors

deej81 avatar dickwolff avatar gabrielgradinaru avatar lildude avatar sonlis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

export-to-ghostfolio's Issues

[Degiro exporter v2] Taxes on dividend are added as dividends instead of substracting it from the dividend

Taxes on dividends are counted as dividends instead of being substracted from said dividend.

Bug

Given this CSV, and Impots sur dividende meaning tax on dividend:

18-03-2024,08:38,15-03-2024,REALTY INCOME CORP,US7561091049,Dividende,,USD,0.51,USD,0.36,
18-03-2024,08:38,15-03-2024,REALTY INCOME CORP,US7561091049,Impôts sur dividende,,USD,-0.15,USD,-0.15,

Outputs the following:

    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0,
      "quantity": 1,
      "type": "DIVIDEND",
      "unitPrice": 0.51,
      "currency": "USD",
      "dataSource": "YAHOO",
      "date": "2024-03-18T08:38:00+02:00",
      "symbol": "RY6.F"
    },
    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0,
      "quantity": 1,
      "type": "DIVIDEND",
      "unitPrice": 0.15,
      "currency": "USD",
      "dataSource": "YAHOO",
      "date": "2024-03-18T08:38:00+02:00",
      "symbol": "RY6.F"
    },

There should be only one dividend of 0.36.

Only Fees being processed in Docker

Hi Dick,

I'm back after a long time! great work on the converter in the mean time! Congrats.

I've been playing with the docker instance. Using both docker and docker compose.
When trying to process Finpension and Swissquote, the only data converted is fees and interest but no equities.

let me know what you may need to track this down.
Mikael

Add test coverage to `SecurityService.ts`

After #58 (#60) is completed, add test coverage to the Security Service class. This is now tested because all the converters call it, but not all paths have been covered. Add a test file for this.

Include TradeRepublic

is there some way to include TradeRepublic? There is a Private API, where i get all my Transactions (in PDF)

Improve predictability and decrease manual testing time with automatic testing

To prevent manual testing every time I do a change, which is a chore on it’s own, the library should be tested automatically using a testing framework and run automatically with GitHub actions.

Especially the DEGIRO converter could profit massively from this.

Start with an easy one, eg. Finpension and then ramp up to all of them.

degiro exporters only writes 12 transactions

When trying to run the degiro exporters it only exports 12 transactions and then stops:
[nodemon] 2.0.22 [nodemon] to restart at any time, enter rs[nodemon] watching path(s): src\**\* [nodemon] watching extensions: ts,js [nodemon] startingts-node ./src/index.ts degiro Processing file using DeGiro converter Read CSV file C:\Users\User\Downloads\Account.csv. Start processing.. ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 4% | ETA 225s | Duration: 18s | 12/273 Processing complete, writing to file.. Wrote data to 'ghostfolio-degiro.json'! [nodemon] clean exit - waiting for changes before restart

Support for Interactive Brokers (IBKR)

It would be awesome if you could support IBKR.
I've created a custom flex query for the trades and dividends + taxes.
I'll create a small explanation on how to create the query, if you decide to implement this broker.

Trades

  • The trades report also contains money conversions (the last lines, which are missing an ISIN).
  • You do not need to subtract the IBCommission from TradeMoney, this is already done. I could also add the Money without the fees subtracted, if you prefer.

Trades.csv:

"Buy/Sell","TradeDate","ISIN","Quantity","TradePrice","TradeMoney","CurrencyPrimary","IBCommission","IBCommissionCurrency"
"BUY","20230522","CH0111762537","7","282.7","1978.9","CHF","-5","CHF"
"BUY","20230522","US9220427424","95","93.78","8909.1","USD","-1","USD"
"BUY","20230609","US9220427424","105","95.42","10019.1","USD","-1","USD"
"BUY","20230609","US9220427424","11","95.46","1050.06","USD","-1","USD"
"BUY","20230803","US9220427424","1","97.84","97.84","USD","-0.979","USD"
"BUY","20231228","US9220427424","2","103.18","206.36","USD","-1","USD"
"BUY","20240126","US9220427424","97","103.61","10050.17","USD","-1","USD"
"BUY","20240129","US9220427424","12","103.66","1243.92","USD","-1","USD"
"SELL","20230522","","-8000","1.1173","-8938.4","USD","-1.79924","CHF"
"SELL","20230609","","-10012","1.10725","-11085.787","USD","-1.79802","CHF"
"SELL","20240126","","-10020","1.1537","-11560.074","USD","-1.73416","CHF"

Dividends and Taxes

Dividends_Taxes.csv

  • Sadly, there is no option to directly output the amount of the shares you're holding. You'll need to divide the Amount by Price per share (extracted from Description string).
  • Regex for price per share: (\d+(\.\d+)?)(?= PER SHARE)
"Type","SettleDate","ISIN","Description","Amount","CurrencyPrimary"
"Withholding Tax","20230913","CH0111762537","SMMCHA(80486947) CASH DIVIDEND CHF 5.99 PER SHARE - CH TAX","-14.68","CHF"
"Withholding Tax","20230623","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.6504 PER SHARE - US TAX","-20.58","USD"
"Withholding Tax","20230921","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.4055 PER SHARE - US TAX","-12.9","USD"
"Withholding Tax","20231221","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.8008 PER SHARE - US TAX","-25.47","USD"
"Dividends","20230913","CH0111762537","SMMCHA(CH0111762537) CASH DIVIDEND CHF 0.69 PER SHARE (Return of Capital)","4.83","CHF"
"Dividends","20230913","CH0111762537","SMMCHA(80486947) CASH DIVIDEND CHF 5.99 PER SHARE (Ordinary Dividend)","41.93","CHF"
"Dividends","20230623","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.6504 PER SHARE (Ordinary Dividend)","137.23","USD"
"Dividends","20230921","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.4055 PER SHARE (Ordinary Dividend)","85.97","USD"
"Dividends","20231221","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.8008 PER SHARE (Ordinary Dividend)","169.77","USD"

[Degiro exporter v2] Error parsing Dutch transaction export from degiro.nl

claesmathias@rpifive:~/export-to-ghostfolio$ docker logs -f export-to-ghostfolio

[email protected] watch
ts-node ./src/watcher.ts

[i] Watching /var/e2g-input (using polling)..
[i] Found Transactions.csv!
[i] Determined the file type to be of kind 'degiro-v2' (overidden by environment variable).
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter (V2 Beta)
[i] NOTE: You are running a converter that is currently in beta.
[i] If you have any issues, please report them on GitHub. Many thanks!
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
[e] Moving file to output..
Transactions.csv

eToro converter - transactions with same `Details` not counted?

Hi!
I am trying to convert my January transactions and there are multiple transactions (with the same name) which are happening. It looks like the converter only took in consideration the first of the list and then it jumps to the next one which has a different value in the Details field.

In the example below it will only count the first NXPI/USD dividend and the first OLED/USD position closed.

Date,Type,Details,Amount,Units,Realized Equity Change,Realized Equity,Balance,Position ID,Asset type,NWA
07/01/2024 13:21:57,Dividend,NXPI/USD,0.02,-,0.02,"45,3.00",0.00,1520124620,Stocks,0.00
07/01/2024 13:21:57,Dividend,NXPI/USD,0.02,-,0.02,"45,3.02",0.00,1539539526,Stocks,0.00
07/01/2024 13:21:57,Dividend,NXPI/USD,0.03,-,0.03,"45,3.05",0.00,2472065850,Stocks,0.00
09/01/2024 15:30:40,Position closed,OLED/USD,18.43,0.102626,7.37,"45,0.42",0.00,2355395242,Stocks,0.00
09/01/2024 15:30:40,Position closed,OLED/USD,8.87,0.049420,1.80,"45,2.22",0.00,2472033271,Stocks,0.00
09/01/2024 15:30:41,Position closed,OLED/USD,89.92,0.500702,4.31,"45,6.53",0.00,1446690287,Stocks,0.00

Thanks! for checking this out!

Swchab conversion error

Tried with multiple accounts and I always get the following output:

docker run --rm -v $PWD/exports/:/var/tmp/e2g-input -v .:/var/tmp/e2g-output --env GHOSTFOLIO_ACCOUNT_ID=<some-acct-id>  --env DEBUG_LOGGING=true dickwolff/export-to-ghostfolio

> [email protected] watch
> tsx ./src/watcher.ts

[i] Watching /var/tmp/e2g-input..
[i] Found Personal-Positions-2024-05-19.csv!
[i] Determined the file type to be of kind 'ibkr'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using IBKR converter
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
[e] Moving file to output..
[i] Stop container as usePolling is set to false..

Then when trying to import to Ghostfolio I get this error:

activities.0.currency is not valid
{
  "Positions for account Personal ...436 as of 04:48 PM ET, 2024/05/19": null,
  "": null
}

[Degiro exporter v1] undefined 'comment'

ran using docker:
docker run -d -v ./input:/var/e2g-input -v ./output:/var/e2g-output --env GHOSTFOLIO_ACCOUNT_ID=<id here> dickwolff/export-to-ghostfolio

[i] Watching /var/e2g-input..
[i] Found degiro_export.csv!
[i] Determined the file type to be of kind 'degiro'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter
[i] NOTE: There is a new version available of the DeGiro converter
[i] The new converter has multiple record parsing improvements and also supports platform fees.
[i] The new converter is currently in beta and we're looking for your feedback!
[i] You can run the beta converter with the command 'npm run start degiro-v2'.
[i] Read CSV file. Start processing..
/app/src/converters/degiroConverter.ts:155
            if (result.activities[result.activities.length - 1].comment === "txfees") {
                                                                ^
TypeError: Cannot read properties of undefined (reading 'comment')
    at DeGiroConverter.<anonymous> (/app/src/converters/degiroConverter.ts:155:65)
    at Generator.next (<anonymous>)
    at fulfilled (/app/src/converters/degiroConverter.ts:6:58)
npm notice
npm notice New minor version of npm available! 10.2.4 -> 10.5.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.5.0>
npm notice Run `npm install -g [email protected]` to update!
npm notice

running version 2 worked : --env FORCE_DEGIRO_V2=true in terms of no errors.

However, after checking the data there are parsing issues.

new install fails on dayjs import

i tried running the degiro exporter both by using dockerfile and by running it without dockerfile, both gave same error.

i used release 0.12.0 and the latest main branch, both failed
OS: Windows 11
Nodejs version used when running without dockerfile: 20.11.1

node:internal/process/esm_loader:34
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\jovangoe\Downloads\Export-To-Ghostfolio\node_modules\dayjs\plugin\customParseFormat' imported from C:\Users\jovangoe\Downloads\Export-To-Ghostfolio\src\converters\degiroConverter.ts
Did you mean to import dayjs/plugin/customParseFormat.js?
at finalizeResolution (node:internal/modules/esm/resolve:264:11)
at moduleResolve (node:internal/modules/esm/resolve:917:10)
at defaultResolve (node:internal/modules/esm/resolve:1130:11)
at nextResolve (node:internal/modules/esm/hooks:865:28)
at S (file:///C:/Users/jovangoe/Downloads/Export-To-Ghostfolio/node_modules/tsx/dist/esm/index.mjs?1714897062814:2:2951)
at nextResolve (node:internal/modules/esm/hooks:865:28)
at Hooks.resolve (node:internal/modules/esm/hooks:303:30)
at handleMessage (node:internal/modules/esm/worker:196:24)
at Immediate.checkForMessages [as _onImmediate] (node:internal/modules/esm/worker:138:28)
at process.processImmediate (node:internal/timers:478:21) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///C:/Users/jovangoe/Downloads/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat'
}

[Degiro exporter v2] Fees are not properly matched to their transaction

The fees paid during a transaction are not linked to said transaction.

Error

In my example, using this CSV:

Date,Heure,Date de,Produit,Code ISIN,Description,FX,Mouvements,,Solde,,ID Ordre
11-03-2024,10:39,11-03-2024,QT GROUP OYJ,FI4000198031,Frais DEGIRO de courtage et/ou de parties tierces,,EUR,-4.90,EUR,33.53,cce1bd4c-9404-49b0-b69a-43a5c307d3c5
11-03-2024,10:39,11-03-2024,QT GROUP OYJ,FI4000198031,"Achat 6 QT GROUP OYJ@79,96 EUR (FI4000198031)",,EUR,-479.76,EUR,38.43,cce1bd4c-9404-49b0-b69a-43a5c307d3c5

The fees are not added to the transaction, even though they are from the same order.

Using the degiro sample export csv, the same error arises:

15-05-2019,09:05,15-05-2019,ISHARES MSCI WOR A,IE00B4L5Y983,"Compra 6 ISHARES MSCI WOR A@49,785 EUR (IE00B4L5Y983)",,EUR,-298.71,EUR,0.64,a47e2746-bfbd-4654-bd6c-5e58e470d32f
02-01-2024,14:42,02-01-2024,ISHARES MSCI WOR A,IE00B4L5Y983,Comissões de transação DEGIRO e/ou taxas de terceiros,,EUR,-1.00,EUR,2.54,7b377a93-5695-4131-8954-5c78996fbed4
02-01-2024,14:42,02-01-2024,ISHARES MSCI WOR A,IE00B4L5Y983,"Compra 1 ISHARES MSCI WOR A@82,055 EUR (IE00B4L5Y983)",,EUR,-82.06,EUR,3.54,7b377a93-5695-4131-8954-5c78996fbed4

The commision is added to the first transaction instead of the second, while it belongs to the second as the order number suggests.

    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 1, <- 1 fee here even though it should be 0
      "quantity": 6,
      "type": "BUY",
      "unitPrice": 49.785,
      "currency": "EUR",
      "dataSource": "YAHOO",
      "date": "2019-05-15T09:05:00+03:00",
      "symbol": "IWDA.AS"
    },
    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0, <- 0 fee here even though there should be 1
      "quantity": 1,
      "type": "BUY",
      "unitPrice": 82.06,
      "currency": "EUR",
      "dataSource": "YAHOO",
      "date": "2024-01-02T14:42:00+02:00",
      "symbol": "IWDA.AS"
    },

Problem within the code

The code always tries to match a transaction and fee with transaction being n, and fee n+1. However, it is not always the case, as my example export shows, and even the sample one.

if (this.lookaheadIsSameProduct(records, record, idx) || this.isBuyOrSellRecord(record) || this.isDividendRecord(record)) {

if (this.lookaheadIsSameProduct(records, record, idx) || this.isBuyOrSellRecord(record) || this.isDividendRecord(record)) {
  const combinedRecord = this.combineRecords(record, records[idx + 1], security);

Possible solution

Add also a check to n-1 or/and add a check if the order number is the same between the order and the fee.

I could work on it if needed 👍

No error indication when debugging errors raised when processing lines.

When running the conversion, I had an error that would display as such:

[e] An error ocurred while trying to retrieve symbol US7561091049 (line 8)! 

After 1 hour of debugging, and printing the correct error, it was because of this:

[Error: EACCES: permission denied, mkdir '/var/e2g-cache'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/var/e2g-cache'
} 

It would be an improvement to display the user why did it fail, instead of just letting them know an error has risen.
I would propose to add the error to the console log message here:

let message = `\n[e] An error ocurred while trying to retrieve {query} (line ${index + 2})!\n`;

Such as:

    protected logQueryError(query: string, index: number, err: string) {

        let message = `\n[e] An error ocurred while trying to retrieve {query} (line ${index + 2}): ${err}.\n`;

And add the error when calling the logQueryError function for each converter, but for example here:

this.logQueryError(record.isin || record.product, idx);
.

Or modify the ErrorCallbackFunction from just returning process.exit(99) to log the error before exiting.

Make DEGIRO V2 GA

V2 works good. Make V2 the default and mark V1 as obsolete.

  • Replace degiro-v2 with degiro
  • Replace old degiro with degiro-v1
  • Remove beta notice and other relevant messages from degiro-v2
  • Add console.log notice to degiro-v1 that it won't receive updates anymore

Fix workflow runs on PR from other contributors

When a contributor opens a PR, the GitHub workflows do not run. I have to approve each run manually. When I run a workflow (eg. testing), the run fails on adding the test results on the PR:
image

The testing workflow needs to be able to run on any PR, and publish the results on the PR.

I don't want the Docker pipeline to run though, so not any image will be pushed to Docker hub.

Docker image?

Hello,
Any plans of containerizing this application yet? I am trying to do it myself but it appears that some dependencies wouldn`t work in production environment (and crash in development as well)
Thanks!

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'length' of undefined at DeGiroConverter

I just installed Ghostfolio the docker compose way and thats up and running. Now im trying to import my deGiro transactions from the last couple year, but after running npm run start degiro I get the following error:

> [email protected] start
> nodemon "degiro"

[nodemon] 2.0.22
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): src/**/*
[nodemon] watching extensions: ts,js
[nodemon] starting `ts-node ./src/index.ts degiro`
Processing file using DeGiro converter
Read CSV file sample-trading212-export.csv. Start processing..
(node:2894272) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'length' of undefined
    at DeGiroConverter.<anonymous> (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:52:49)
    at Generator.next (<anonymous>)
    at /home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:31:71
    at new Promise (<anonymous>)
    at __awaiter (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:27:12)
    at /home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:40:45
    at Parser.<anonymous> (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/node_modules/csv-parse/dist/cjs/index.cjs:1392:7)
    at Parser.emit (events.js:314:20)
    at Parser.EventEmitter.emit (domain.js:483:12)
    at errorOrDestroy (internal/streams/destroy.js:108:12)
(node:2894272) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:2894272) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[nodemon] clean exit - waiting for changes before restart

Failure to deal with empty response from Yahoo Finance in combination with no symbol being present.

Hi,

Yesterday I've setup Ghostfolio, found your project and I tried to use this project to import my DeGiro transactions.

However, in my DeGiro export contains the ISIN, US00165C1045. US00165C1045 is AMC, but the Yahoo Finance response is an empty array on the quotes element. So the converter it tries to rely on the symbol but the DeGiro export doesn't contain symbols for that line and thus subsequently fails.

The CSV line on which the convert fails:
01-02-2021,15:39,01-02-2021,AMC ENTERTAINMENT HOLD,US00165C1045,Valuta Debitering,1.2108,USD,-16.70,USD,0.00,43a88697-7358-4389-9440-d8aa6db536ce

Yahoo finance response

{
  explains: [],
  count: 0,
  quotes: [],
  news: [],
  nav: [],
  lists: [],
  researchReports: [],
  screenerFieldResults: [],
  totalTime: 23,
  timeTakenForQuotes: 415,
  timeTakenForNews: 0,
  timeTakenForAlgowatchlist: 400,
  timeTakenForPredefinedScreener: 400,
  timeTakenForCrunchbase: 400,
  timeTakenForNav: 400,
  timeTakenForResearchReports: 0,
  timeTakenForScreenerField: 0,
  timeTakenForCulturalAssets: 0
}

Stacktrace

TypeError: Cannot read properties of undefined (reading 'symbol')
    at YahooFinanceService.<anonymous> (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77:33)
    at Generator.next (<anonymous>)
    at fulfilled (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:5:58)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77
            symbol = symbols[0].symbol.split(".")[0];
                                ^
TypeError: Cannot read properties of undefined (reading 'symbol')
    at YahooFinanceService.<anonymous> (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77:33)
    at Generator.next (<anonymous>)
    at fulfilled (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:5:58)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Degiro conversion error - module not found

Hi everyone.
I'm trying to convert my order history exported from Degiro but I'm getting the following error:

➜  Export-To-Ghostfolio git:(main) npm run start degiro

> [email protected] start
> tsx ./src/manual.ts "degiro"


node:internal/process/esm_loader:34
      internalBinding('errors').triggerUncaughtException(
                                ^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/username/Scaricati/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat' imported from /home/username/Scaricati/Export-To-Ghostfolio/src/converters/degiroConverter.ts
Did you mean to import "dayjs/plugin/customParseFormat.js"?
    at finalizeResolution (node:internal/modules/esm/resolve:265:11)
    at moduleResolve (node:internal/modules/esm/resolve:933:10)
    at defaultResolve (node:internal/modules/esm/resolve:1157:11)
    at nextResolve (node:internal/modules/esm/hooks:866:28)
    at S (file:///home/username/Scaricati/Export-To-Ghostfolio/node_modules/tsx/dist/esm/index.mjs?1714900896692:2:2951)
    at nextResolve (node:internal/modules/esm/hooks:866:28)
    at Hooks.resolve (node:internal/modules/esm/hooks:304:30)
    at handleMessage (node:internal/modules/esm/worker:196:24)
    at Immediate.checkForMessages [as _onImmediate] (node:internal/modules/esm/worker:138:28)
    at process.processImmediate (node:internal/timers:478:21) {
  code: 'ERR_MODULE_NOT_FOUND',
  url: 'file:///home/username/Scaricati/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat'
}
Node.js v20.12.2

Same issue when using Docker image or local build.
I'm on Fedora 40, Node version v20.12.2

Add functionality to automatically validate JSON and upload to Ghostfolio

Ghostfolio offers endpoints to automatically validate and upload activities.

There should be two settings that allows users to automatically upload the converted JSON to Ghostfolio. This can be done in two steps. Firstly, validate the JSON. And then also import automatically.

This will be an experimental feature, because there is no human oversight for checking duplicate transactions.

JSON not working if language does not match - date must be a valid ISO 8601 date string

Hi

Since I can not respond to the old issue (dickwolff/DEGIRO-to-Ghostfolio#1) I opened a new one here. It looks better now, but now something with the date doesn`t work.

Image:
image

Example JSON output
{ "accountId": "9b6128be-97ff-4d53-a7b0-ef58413e307f", "comment": "", "fee": 0.29, "quantity": 1, "type": "DIVIDEND", "unitPrice": 1.93, "currency": "USD", "dataSource": "YAHOO", "date": "Invalid Date", "symbol": "A" }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.