API

Resources

The package onlime/bexio-api-client provides various resource classes to interact with the bexio api (see namespace Bexio\Resource) where this package extends some of them and adds additional ones (see namespace Buepro\Bexio\Api\Resource). Resource objects are instantiated with a client object that can be obtained by the ApiService object:

Get a client from the ApiService
use Buepro\Bexio\Service\ApiService;

// Get the ApiService with the GeneralUtility or by dependency injection
$apiService = GeneralUtility::makeInstance(ApiService::class);
// Initialize the service for a site and get the client
$client = $apiService->initialize($site)->getClient();
// Or get the client from an already initialized service
$clientInOtherScope = (GeneralUtility::makeInstance(ApiService::class))->getClient();
Get all bexio contacts using the Contact resource object
// @link https://github.com/onlime/bexio-api-client/tree/main/src/Bexio/Resource
use Bexio\Resource\Contact

$bexioContact = new Contact($client);
$contacts = $bexioContact->getContacts();

Tasks

User

Update frontend users
// use Buepro\Bexio\Task\User\UpdateUsers;
$result = GeneralUtility::makeInstance(UpdateUsers::class)
   ->initialize($site)
   ->process();
Synchronize bexio contacts to frontend users
// use Buepro\Bexio\Task\User\UpdateUsers;
$options = [
   UpdateUsers::OPTION_CREATE => true,
];
$result = GeneralUtility::makeInstance(UpdateUsers::class)
   ->initialize($site, $options)
   ->process();

Invoice

Create an invoice
// use Buepro\Bexio\Task\Invoice\CreateInvoice;
$invoice = [
   'title' => 'Test invoice',
   'positions' => [
      'text' => 'Some service',
      'amount' => 3.2,
      'unitPrice' => 90,
   ],
];
$result = GeneralUtility::makeInstance(CreateInvoice::class)
   ->initialize($site, $invoice)
   ->process();
Update paid and get pending invoices
// use Buepro\Bexio\Task\Invoice\UpdateInvoices;
$result = GeneralUtility::makeInstance(UpdateInvoices::class)
   ->initialize($site)
   ->process();
Process invoice payments by emitting an event
// use Buepro\Bexio\Task\Invoice\ProcessPayments;
$result = GeneralUtility::makeInstance(ProcessPaymentsTask::class)
   ->initialize($site)
   ->process();

Events

InvoicePaymentEvent

\Buepro\Bexio\Event\InvoicePaymentEvent

Event to listen to after an invoice payment has been detected.

getSite():Returns the TYPO3\CMS\Core\Site\Entity\Site the invoice belongs to.
getInvoice():Returns the \Buepro\Bexio\Domain\Model\Invoice that has been paid.
requestProcessing(string $reason):
 Use this method to request this event to be emitted again.
getReprocessingRequested():
 Returns boolean indicating that one event. handler requested this event to be emitted again.
getReprocessingRequestReasons():
 Returns a string array. Each event handler can add its reason.

Event listeners

EmailInvoicePayment

\Buepro\Bexio\EventListener\EmailInvoicePayment

To use this event listener add the following to Configuration/Services.yaml:

services:
  Buepro\Bexio\EventListener\EmailInvoicePayment:
    tags:
      - name: event.listener
        identifier: 'bexio-email-invoice-payment-event-listener'
        event: Buepro\Bexio\Event\InvoicePaymentEvent