11 Suggestions and possible bugs (and counting) - InvoiceNinja v5 on Docker

Hi, just some thoughts and suggestions I have for v5.0.41-C35 as I’m working with it.

Edit + 4: Invoicing and email. It’s really bad.
When I send an invoice email expecting it to look like this - at right (after som basic modifications), visually it seems ok.

Nothing seems to be as I expect. The links seem to stick to the left of the email, and, as in the image above, I’m not sure my customer can figure that out. Looking at the message source, I’m not sure where to start with that. The “Email Invoice” editing window is all over the place too. it’s hard to tell what you’re editing exactly. Copy and paste is the only way to get text into the window in a reasonably controlled way. This interface just does not work (beyond never changing it I guess). I’m using all the defaults provided by IN and simply adding a link to a pdf as well as a bit of additional text.

I get this, mangled up message

Gosh, I sure do hope this improves.

Edit +3 - Suggestion: viewing logs, better troubleshooting
As we know, the laravel.log is crucial to how IN works, and it’s something we refer back to often. Adding a section in “Settings → View Log” to view these log files is something that would save a bunch of time in-app while trying to troubleshoot.

  • v4: storage/logs/laravel-error.log
  • v5: storage/logs/laravel.log

Edit: +1: Payments to invoices. (this seems to work now)
When adding a payment to an invoice via the right-click on an invoice and saving it - the payment does not then reflect on the invoice itself. I think the invoice should be marked a “Paid” at that moment. Because it isn’t marked “Paid,” the user must go and manually mark the invoice as paid - a redundant process (that could lead to errors).

Edit +2: Logoff - 500: Server Error
So, after adding a bunch of data, logging off and attempting to log back in, I received the dreaded 500: Server Error. Investigating the laravel log showed an error related to the recurring invoice system.:

“[2021-01-02 20:59:52] production.ERROR: Call to a member function copy() on null {“userId”:1,“exception”:”[object] (Error(code: 0): Call to a member function copy() on null at /var/www/app/app/Models/RecurringInvoice.php:376)
[stacktrace] "

Full error here.

Restarted the container and noticed the logs showing a bunch of “chown: /var/www/app/storage/filename: Operation not permitted” errors. Since I couldn’t get to the cli from the container itself (it’s loading at this point), I checked out the volume from the “caddy” container. In the referenced directories, files had permissions of the following:
-rw-rw-r-- 1 0 0 84971 Jan 2 15:29 2585.pdf

User and group 0. Why on earth would the app dump stuff to disk as user 0?

So I fixed all this from the cli with “chown -R 1000:82” commands and managed to get the container running but the “500: Server Error” persists. InvocieNinja 5 is dead at this point :frowning:

Edit: Deeper I go. Since all this seems to refer to recurring invoices, I went into the database. Table “recurring_invoice_invitations” had four rows. I deleted those 4 rows. Login again, no dice.

Then, I went to the “reccuring_invoices” table. 4 rows there too. I deleted those rows and attempted login. Boom. I’m in. Adding a recurring invoice (a) doesn’t seem to work and (b) completely locks me out. Man, this thing is a hell of a roller-coaster. Can I ever trust it?

Original Message

Thought 1: Taxes and expenses
When taxes are added to expenses, I need to calculate the pre-tax rate and ensure that in (or take it from a receipt). But, often vendors are a penny off in their calculations, throwing off my numbers. It would be more ideal to enter in the FINAL expense amount and auto-calculate backwards a tax amount (as Freshbooks does), or of course, enter in a specific value.

Thought 2: Expense Categories
They have many fields attached, which is great, but something that would save a great deal of time would be to include a default amount (for when the expense is recurring), and a tax amount. As I add expenses, these two clicks could be avoided.

Thought 3: Invoice - Customer
When I’ve created an invoice, it seems the customer can be de-selected, but not changed. I should be able to change the customer.

Thought 4: User Portal
There are several things here. I found it pretty challenging to understand what it took to push a payment through Stripe. Creating an account in this portal also created a new (duplicate) customer and after clicking around, the sent invoice was gone from their portal (although the original invoice still worked). This whole portal is great and useful, but I sense it will be very confusing for customers. I’d like to see more of who’s registered there and what credit cards have been saved. Adding two-factor support to portal logins would be far more secure.

Thought 5: Import - Export
Hopefully, this works at some point and specifically supports what V4 spits out.

Thought 6: Localization
In V5, the Canadian localization label is still C$ - I’d consider changing that default to just $

I’ll have more thoughts in time. I didn’t want to put this in Slack because the stuff goes behind a paywall - Github being better for issues. There might be too many places to discuss IN at this point :slight_smile:

1 Like


Thanks for your feedback!

  1. Agreed, this has been requested a few times. The API expects the app to send the rate as a percent but the app could auto-calculate the rate from the amount. I think it would make sense to add it as an optional setting on Settings > Expense Settings

  2. Not sure about this, would cloning an existing expense work?

  3. This is by design. We track a ledger for each client, if the app supported transferring invoices between clients it would get very complex. To change a client we recommend cloning the invoice to set a new client.

  4. @ben

  5. The import works, is there a reason you aren’t using the migration?

  6. @david I think there’s also an issue for this on GitHub, seems like a good change.

Thanks for getting back… I working through things trying to get my data clean. Just a few notes:

  1. That’s perfect… The final amount of the expense is really what’s reconciled, but really just having the ability to override the tax amount is enough (things like groceries in my country for example don’t get uniformly taxed, so the numbers there would be way off). of course, starting from a receipt’s total instead of a pre-tax amount seems to make the most sense (In QuickBooks, the total paid is the first thing entered for a reason I’m sure).

  2. Cloning an expense would work. What I’m focused on when mentioning these things is the efficiency of usibilty. Hunting for a previous expense, cloning, changing details may be far slower than entering the new expense. Indeed, importing from a bank’s CSV export would be far faster (hint, hint).

But, looking back at the expense entry itself (and how it lends itself to something like keyboard-only use), the tab order passes over elements that are visual only (x), tabbing to the date field doesn’t select it (requiring backspaces before entry), clicking on Vendor to start allows for keyboard entry to narrow down the expected vendor, but no way for the keyboard to select it. Switching between tabs is mouse -only. When a list is shown, there seems to be no way to mouse-click out of it, but tabbing works. After entering 178 expenses this past few days, I’m like “Pick a lane!”

All of these micro-switches between tabs, fields and mouse-keyboard cost seconds and likely hours in the aggregate for bookkeepers. A mind to this process is what makes the tool improve beyond the “pretty” interface.

  1. Understood it’s by design. The creation of extra customers when accounts are created makes me want to switch the invoice to the correct customer. It’s just a little muddled right now that way.

  2. The internal V5 import facility actually imports v4 data? Countless hours of manually entering data over three days says no it doesn’t (and, oh have I tried). The import process appears to recognize the fields, etc, but no actual data imports. No errors or any other indication of why this process fails… I just assumed it wasn’t ready. The migration process, don’t get me going on that one. That just does not work, but I’ve covered that ground in the multitudes of other places we can talk about InvoiceNinja. I’ve messed with that clunky process enough and moved on.

  3. That was probably me mentioning it on Github too. Here in Canada, we don’t modify the $ and - when entering invoices or receipts that reference US dollars we call it out in a memo or description after converting to our currency. Nothing useful comes from the C$ reference that I can see. There are some cases where an entire company deals in US funds, but then all of those references are in the $ notation also. It’s, well, local to us. Localization, right. It can be tricky… I guess that’s where we users are supposed to offer our thoughts to help improve things.

More than anything, I want to make the application better. I have nothing but appreciation for the work everyone has done to get this far. Thanks to everyone that works on this project.

  1. Understood. I think it could be good to add a full width editor for expenses which the app currently supports for invoices and tasks. There’s a toggle option near the total amount in the footer.

Thanks! We all want the same thing, the best app possible.

One other thing to add… the autocomplete we’re using (which doesn’t close) will hopefully be replaced in an upcoming version.

I can’t recreate this, when i enter a payment against any invoice the invoice status updates.

+2 this is a bug which has been fixed in the v5-develop branch - happens when a recurring invoice has been added with a daily recurring schedule.

in reference to #6 what is the standard in Canada? C$ or simply $ ?

Yes, the +1 I mentioned has improved. I mark the invoice as sent, go make a payment, come back and the invoice is marked as sent (I had a daily recurring invoice in the system at the time, so maybe that related). Seems to work now.

Re +2 - It’s a scary one. Should I then expect that a new monthly recurring invoice is not going to lock me out? I’ll have to test that again when I’m brave (I need the monthly feature).

Re #6 - The standard in Canada is simply $

I’ve tagged release 5.0.43 which should resolve these issues.

I just noticed you updated your initial post with new issues. To make sure new comments are seen I suggest either posting them as a new comment or new post, we aren’t notified if a post is updated.