Giter Club home page Giter Club logo

ynab-csv's People

Contributors

cjhowald avatar donnchac avatar roanosullivan avatar

Stargazers

 avatar  avatar

ynab-csv's Issues

No way to clear a field

Once you select a value for a field, you can change it but you can't re-select the initial empty value. This is annoying when you accidentally change the wrong field.

Payee contains comma

When a payee from export has a comma in it, the import silently fails for that row.

For example:

Booking date;Value date;Transaction Type;Beneficiary / Originator;Payment Details;IBAN;BIC;Customer Reference;Mandate Reference;Creditor ID;Compensation amount;Original Amount;Ultimate creditor;Number of transactions;Number of cheques;Debit;Credit;Currency

11/07/2016;11/07/2016;"Debit Card Payment";;REAL,- BERLIN-WEDDI//BERLIN/DE 06-11-2016T14:38:30 Folgenr. 07 Verfalld. 1220;;;;;;;;;;;-105.27;;EUR

Converts to:

Date,Payee,Category,Memo,Outflow,Inflow
11/07/2016,REAL,- BERLIN-WEDDI//BERLIN/DE 06-11-2016T14:38:30 Folgenr. 07 Verfalld. 1220,,,,-105.27

Negative values in "outflow" field

This only cropped up recently, and I don't know if it's a change in my bank's CSV, the converter, or YNAB. In any case, i have a CSV that uses negative values in its "outflow" field. Those negative values are loyally entered into the YNAB CSV, and YNAB then imports them... as inflows.

There is probably an occasional use case for a negative value in "outflow" meaning an inflow, but that would be an isolated transaction. Add handling to detect if all the outflow values are negative, and multiply by -1.

Negative numbers

The way DB splits incoming and outgoing sometimes results in all (or just a few) rows being swapped following import.

Examples to follow as I find them.

Add tests

This library came with no tests. I need to add tests.

More robust string > decimal conversion for amounts

Different banks use different formatting for amounts, particularly in the "outflow" column. For example, I've seen outflow values like these:

  • "-1,50"
  • "- 1,50"
  • "(1,50)"
  • "1,50"

It comes down to the fact that banks seem to treat these values as strings, and we have to convert them to decimal values. Right now it seems like we have a pretty naive conversion process. I think we can make it more robust:

  • remove spaces from everywhere in the number
  • parentheses converts to a negative value
  • trim anything before/after the value
  • "outflow" column uses a majority rule to decide if values are notated as negative or positive
  • I've submitted a separate issue for comma handling in #15

Reload required between imports

Dragging in multiple files in the same format seems to work. But if you drag in a new one, it does not. You have to reload first.

Default selections

DB always has the same columns. Should have the mapping default appropriately so I don't have to select them each time.

Credit card CSV extra headers not auto stripped

Example headers:

Credit card transactions;;Customer number: xxxx
MasterCard xxxxx
Outstanding/current transactions till: 01/08/2017
Billing date: 01/25/2017
Voucher date;Date of receipt;Reason for payment;Foreign currency;Amount;Exchange rate;Amount;Currency

Expect all but the last row to be automatically removed on import.

Duplicate column headers

My import source has a duplicate column header: "amount" appears twice. If I select either "amount" column in the converter, it only displays the values from the second "amount" column.

I know, this is a violation of whatever spec we could imagine for CSV. Still, it happens. Perhaps in parsing we could append a _1 to the end of duplicate column titles or something.

Bulk import

Typically, I'm importing several files in one go. Would be nice to have this supported in the UI.

Don't strip commas from amounts

European currency formats use , as a decimal separator. YNAB supports this on import, but currently this tool assumes a US number format and strips them. So 1,50€ (1 Euro and 50 cents) is handled as 150€.

I believe that if we leave the commas in place, YNAB will import the values properly. Not 100% on that, though.

Currency conversion

Add a dialog to choose a source and destination currency, and automatically do the conversion for the average rate on the date of each transaction.

  • Could use money.js or for the lookups, but that would require an API key field, too. Seems like a Ux PITA.
  • Could use google or yahoo finance api too, but in my experience they're not terribly reliable.

Rent imported as inflow

Original CSV line:

01/02/2017;01/02/2017;"SEPA-Standing Order";<address>;<desc>;<IBAN>;<BIC>;;;;;;;;;-X,YZA.BC;;EUR

Converted CSV line:

01/02/2017,<desc>,,<address>,-X,YZA.BC,

Expected (absolute value for outflow):

01/02/2017,<desc>,,<address>,X,YZA.BC, 

Header and footer rows have to be manually deleted

DB adds a bunch of header rows before the real header row. This breaks the import, so they have to be manually deleted before converting. Same for a footer row with the sum.

For example:

Credit card transactions;;Customer number: ***
MasterCard *** 
Outstanding/current transactions till: 11/13/2016
Billing date: 11/25/2016
Voucher date;Date of receipt;Reason for payment;Foreign currency;Amount;Exchange rate;Amount;Currency
...
Online-Balance:;;;;;;***;EUR

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.