Integrate Invoice Ninja
API Documentation: https://api-docs.invoicing.co
SDK: https://packagist.org/packages/invoiceninja/sdk-php
Drupal module: https://www.drupal.org/project/invoice_ninja
MVP definition:
- Implement configuration for the remote URL and credentials, maybe some more parameters
- Provide a service which implements the required features by using the SDK above
- Provide action plugins for each service function, so that the use of this module can either be done by implementing a module to utilize this API or by building ECA models that allow dynamic workflow setup per site
- Required functions:
- Create/update customer/client in Invoice Ninja - for this we need to keep some sort of remote ID. Note that the entity type in Drupal, which represents a customer, should be configurable. It could be a custom entity type, or the user entity, or a group entity, etc.
- Create/update VAT records
- Create/update products - here as well, it needs to be configurable, which entity type(s) should be treated as products
- Create an invoice and add all kinds of properties (line items, notes, etc.) and store a reference to that invoice with a Drupal object
For customer, VAT and product we may have to have some sort of mapping configuration. This could well be just a yaml config entity without a form in the UI to maintain it, just to save some time for the first implementation.
Edited by jurgenhaas