Overwrite invoice templates

Hi fellow Invoice Ninjas, Hi Hillel (I guess you’re reading this),

we’ve been doing some custom designs lately and everything works well.
But we’ve found ourselves stuck with an issue regarding the limitations of invoice ninja, since we serve different customer groups and use different Designs for each of them, we ended up with more than 3 Designs. I already knew that there is no way to add more than 3 Custom Designs so I figured out we could just override the default ones using the MySQL table invoice_designs, which didn’t affect anything at all.
Which I’ve found odd since I am able to update the Custom Themes in the account table using MySQL.

So is there anyway to replace the default themes, I mean they need to be stored somewhere and if they do I could replace them. Or any other possible workaround ?

Thanks :slight_smile:

Hi :slight_smile:

The designs are stored in the storage/templates folder.


If you change the files you can reload them into the database by loading /update (or /public/update) in the app.

Wow, that’s a fast one. First of all thank you, did the trick. :slight_smile:

Glad to hear it!

FYI… in the next version of the app we’re changing from pdfmake to HTML/CSS for the invoice designs, we think it should be much easier to customize.

Makes sense, it took me a afternoon to get the whole pdfmake syntax right and html and css is kind of the common standard.

Ohh btw is there a way to rename the standard themes, it’s not necessary, I mean I could deal with it if not, but it would be kinda nice just to make it easier to find the design needed. Thanks for your help so far!

Sorry, it isn’t supported

No problem, anyway thanks! Maybe in v2 then :smiley:

Got a workaround running … Javascript changing the innerHTML value of the selection options, not state of the art solution, but it does the job :smiley:

If anyone is looking this up, searching for a workaround, just add some Javascript to
/recources/views/master.blade.php with somethign like this.

        var designselection = document.getElementById("invoice_design_id");
        designselection.options[0].innerHTML ="your own theme name";