[FEATURE] auto-generate invoice_id if empty

[TEST] auto-generate invoice_id if empty
Don't think you need to use all three, looks like isEmpty works for null and undefined:
```
> require('lodash').isEmpty(undefined);
true
> require('lodash').isEmpty(null);
true
````