PHP code example of codebar-ag / laravel-bexio
1. Go to this page and download the library: Download codebar-ag/laravel-bexio library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
codebar-ag / laravel-bexio example snippets
use CodebarAg\Bexio\BexioConnector;
...
$connector = new BexioConnector();
use CodebarAg\bexio\BexioConnector;
// You can either set the token in the constructor or in the .env file
// PROVIDE TOKEN IN CONSTRUCTOR
$connector = new BexioConnector(token: 'your-token');
// OR
// PROVIDE TOKEN IN .ENV FILE
$connector = new BexioConnector();
/**
* Fetch A List Of Account Groups
*/
$accountGroups = $connector->send(new FetchAListOfAccountGroupsRequest())->dto();
/**
* Fetch A List Of Accounts
*/
$accounts = $connector->send(new FetchAListOfAccountsRequest())->dto();
/**
* Search Accounts
*/
$accounts = $connector->send(new SearchAccountsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Fetch A List Of Addresses
*/
$addresses = $connector->send(new FetchAListOfAddressesRequest())->dto();
/**
* Fetch An Address
*/
$address = $connector->send(new FetchAnAddressRequest(
id: 1
))->dto();
/**
* Search Addresses
*/
$addresses = $connector->send(new SearchAddressesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Address
*/
$address = $connector->send(new CreateAddressRequest(
data: new CreateEditAddressDTO(
name: 'Test',
subject: 'Test Subject',
description: 'This is a test',
address: 'Test Address',
postcode: '1234',
city: 'Test City',
)
));
/**
* Edit Address
*/
$address = $connector->send(new EditAnAddressRequest(
id: 1,
data: new CreateEditAddressDTO(
name: 'Test Edit',
subject: 'Test Subject Edit',
description: 'This is a test edit',
address: 'Test Address Edit',
postcode: '4567',
city: 'Test City Edit',
)
));
/**
* Delete Address
*/
$address = $connector->send(new DeleteAnAddressRequest(
id: 1
));
/**
* Fetch A List Of Bank Accounts
*/
$bankAccounts = $connector->send(new FetchAListOfBankAccountsRequest())->dto();
/**
* Fetch A Single Bank Account
*/
$bankAccount = $connector->send(new FetchASingleBankAccountRequest(
id: 1
))->dto();
/**
* Fetch A List Of Business Years
*/
$businessYears = $connector->send(new FetchAListOfBusinessYearsRequest())->dto();
/**
* Fetch A Business Year
*/
$businessYear = $connector->send(new FetchABusinessYearRequest(
id: 1
))->dto();
/**
* Fetch A List Of Calendar Years
*/
$calendarYears = $connector->send(new FetchAListOfCalendarYearsRequest())->dto();
/**
* Fetch A Calendar Year
*/
$calendarYear = $connector->send(new FetchACalendarYearRequest(
id: 1
))->dto();
/**
* Fetch A List Of Company Profiles
*/
$companyProfiles = $connector->send(new FetchAListOfCompanyProfilesRequest())->dto();
/**
* Fetch A Company Profile
*/
$companyProfile = $connector->send(new FetchACompanyProfileRequest(
id: 1
))->dto();
/**
* Fetch A List Of Contact Additional Addresses
*/
$contactAdditionalAddresses = $connector->send(new FetchAListOfContactAdditionalAddressesRequest(
contactId: 1
))->dto();
/**
* Fetch A Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new FetchAContactAdditionalAddressRequest(
contactId: 1,
id: 1
))->dto();
/**
* Search Contact Additional Address
*/
$contactAdditionalAddresses = $connector->send(new SearchContactAdditionalAddressesRequest(
contactId: 1,
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new CreateContactAdditionalAddressRequest(
contactId: 1,
data: new CreateEditContactAdditionalAddressDTO(
name: 'Test',
subject: 'Test Subject',
description: 'This is a test',
address: 'Test Address',
postcode: '1234',
city: 'Test City',
)
));
/**
* Edit Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new EditAContactAdditionalAddressRequest(
contactId: 1,
id: 9,
data: new CreateEditContactAdditionalAddressDTO(
name: 'Test Edit',
subject: 'Test Subject Edit',
description: 'This is a test edit',
address: 'Test Address Edit',
postcode: '4567',
city: 'Test City Edit',
)
));
/**
* Delete Contact Additional Address
*/
$contactAdditionalAddress = $connector->send(new DeleteAContactAdditionalAddressRequest(
contactId: 1,
id: 9,
));
/**
* Fetch A List Of Contact Groups
*/
$contactGroups = $connector->send(new FetchAListOfContactGroupsRequest())->dto();
/**
* Fetch A Contact Group
*/
$contactGroup = $connector->send(new FetchAContactGroupRequest(
id: 1
))->dto();
/**
* Search Contact Groups
*/
$contactGroups = $connector->send(new SearchContactGroupsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Group
*/
$contactGroup = $connector->send(new CreateContactGroupRequest(
data: new CreateEditContactGroupDTO(
name: 'Name'
)
));
/**
* Edit Contact Group
*/
$contactGroup = $connector->send(new EditAContactGroupRequest(
id: 1,
data: new CreateEditContactGroupDTO(
name: 'Name'
)
));
/**
* Delete Contact Group
*/
$contactGroup = $connector->send(new DeleteAContactGroupRequest(
id: 1
));
/**
* Fetch A List Of Contact Relations
*/
$contactRelations = $connector->send(new FetchAListOfContactRelationsRequest())->dto();
/**
* Fetch A Contact Relation
*/
$contactRelation = $connector->send(new FetchAContactRelationRequest(
id: 1
))->dto();
/**
* Search Contact Relations
*/
$contactRelations = $connector->send(new SearchContactRelationsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact Relation
*/
$contactRelation = $connector->send(new CreateContactRelationRequest(
data: new CreateEditContactRelationDTO(
contact_id: 1,
contact_sub_id: 2,
description: 'Something',
)
));
/**
* Edit Contact Relation
*/
$contactRelation = $connector->send(new EditAContactRelationRequest(
id: 1,
data: new CreateEditContactRelationDTO(
contact_id: 1,
contact_sub_id: 2,
description: 'Something',
)
));
/**
* Delete Contact Relation
*/
$contactRelation = $connector->send(new DeleteAContactRelationRequest(
id: 1
));
/**
* Fetch A List Of Contacts
*/
$contacts = $connector->send(new FetchAListOfContactsRequest())->dto();
/**
* Fetch A Contact
*/
$contact = $connector->send(new FetchAContactRequest(
id: 1
))->dto();
/**
* Search Contacts
*/
$contacts = $connector->send(new SearchContactsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Contact
*/
$contact = $connector->send(new CreateContactRequest(
data: new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
)
));
/**
* Bulk Create Contacts
*/
$contact = $connector->send(new BulkCreateContactsRequest(
data: [
new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
),
new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name 2'
)
]
));
/**
* Edit Contact
*/
$contact = $connector->send(new EditAContactRequest(
id: 1,
data: new CreateEditContactDTO(
user_id: 1,
owner_id: 1,
contact_type_id: 1,
name_1: 'Name'
)
));
/**
* Delete Contact
*/
$contact = $connector->send(new DeleteAContactRequest(
id: 1
));
/**
* Restore Contact
*/
$contact = $connector->send(new RestoreAContactRequest(
id: 1
));
/**
* Fetch A List Of Contact Sectors
*/
$contactSectors = $connector->send(new FetchAListOfContactSectorsRequest())->dto();
/**
* Search Contact Sectors
*/
$contactSectors = $connector->send(new SearchContactSectorsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Fetch A List Of Currencies
*/
$currencies = $connector->send(new FetchAListOfCurrenciesRequest())->dto();
/**
* Fetch A Currency
*/
$currency = $connector->send(new FetchACurrencyRequest(
id: 1
))->dto();
/**
* Create Currency
*/
$currency = $connector->send(new CreateCurrencyRequest(
data: new CreateCurrencyDTO(
name: 'JPY',
round_factor: 0.05,
)
));
/**
* Edit Currency
*/
$currency = $connector->send(new EditACurrencyRequest(
id: 1,
data: new EditCurrencyDTO(
round_factor: 0.05,
)
));
/**
* Delete Currency
*/
$currency = $connector->send(new DeleteACurrencyRequest(
id: 1
));
/**
* Fetch All Possible Currency Codes
*/
$currencyCodes = $connector->send(new FetchAllPossibleCurrencyCodesRequest())->dto();
/**
* Fetch Exchange Rates For Currencies
*/
$exchangeRates = $connector->send(new FetchExchangeRatesForCurrenciesRequest(
currencyId: 1
))->dto();
/**
* Fetch A List Of Files
*/
$files = $connector->send(new FetchAListOfFilesRequest())->dto();
/**
* Get A Single File
*/
$file = $connector->send(new GetASingleFileRequest(
id: 1
))->dto();
/**
* Show A File Usage
*/
$fileUsage = $connector->send(new ShowAFileUsageRequest(
id: 1
))->dto();
/**
* Get A File Preview
*/
$filePreview = $connector->send(new GetAFilePreviewRequest(
id: 1
))->stream();
/**
* Download File Download
*/
$fileDownload = $connector->send(new DownloadFileDownloadRequest(
id: 1
))->stream();
/**
* Create A File
*/
$file = $connector->send(new CreateAFileRequest(
data: [
new MultipartValue(
name: 'picture',
value: fopen(__DIR__ . 'image.png', 'r'),
)
],
));
/**
* Edit A File
*/
$file = $connector->send(new EditAFileRequest(
id: 1,
data: new EditFileDTO(
name: 'Test name edited',
is_archived: false,
source_type: 'web',
)
));
/**
* Delete A File
*/
$file = $connector->send(new DeleteAFileRequest(
id: 1
));
/**
* Fetch An Iban Payment
*/
$payment = $connector->send(new GetIbanPaymentRequest(
bank_account_id: 1,
payment_id: 3
))->dto();
/**
* Create Iban Payment
*/
$payment = $connector->send(new CreateIbanPaymentRequest(
bank_account_id: 1,
data: new CreateEditIbanPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Sonnenstrasse',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
iban: 'CH8100700110005554634',
execution_date: '2024-01-08',
is_salary_payment: false,
is_editing_restricted: false,
message: 'Rechnung 1234',
allowance_type: 'no_fee',
)
))->dto();
/**
* Update Iban Payment
*
* NOTE: THE PAYMENT MUST HAVE A STATUS OF OPEN TO BE UPDATED
*/
$payment = $connector->send(new EditIbanPaymentRequest(
bank_account_id: 1,
payment_id: 3,
iban: 'CH8100700110005554634',
id: 3,
data: new CreateEditIbanPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Colchester Place',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
iban: 'CH8100700110005554634',
execution_date: '2024-01-08',
is_salary_payment: false,
is_editing_restricted: false,
message: 'Rechnung 1234',
allowance_type: 'no_fee',
)
))->dto();
/**
* Fetch A List Of Invoices
*/
$invoices = $connector->send(new FetchAListOfInvoicesRequest())->dto();
/**
* Fetch An Invoice
*/
$invoice = $connector->send(new FetchAnInvoiceRequest(
invoice_id: 1
))->dto();
/**
* Create An Invoice
*/
$contacts = $connector->send(new FetchAListOfContactsRequest);
$user = $connector->send(new FetchAuthenticatedUserRequest);
$languages = $connector->send(new FetchAListOfLanguagesRequest);
$banks = $connector->send(new FetchAListOfBankAccountsRequest);
$currencies = $connector->send(new FetchAListOfCurrenciesRequest);
$paymentTypes = $connector->send(new FetchAListOfPaymentTypesRequest);
$units = $connector->send(new FetchAListOfUnitsRequest);
$accounts = $connector->send(new FetchAListOfAccountsRequest);
$taxes = $connector->send(new FetchAListOfTaxesRequest(scope: 'active', types: 'sales_tax'));
$newInvoice = InvoiceDTO::fromArray([
'title' => 'Test',
'contact_id' => $contacts->dto()->first()->id,
'user_id' => $user->dto()->id,
'pr_project_id' => null,
'language_id' => $languages->dto()->first()->id,
'bank_account_id' => $banks->dto()->first()->id,
'currency_id' => $currencies->dto()->first()->id,
'payment_type_id' => $paymentTypes->dto()->first()->id,
'mwst_type' => 1,
'mwst_is_net' => true,
'show_position_taxes' => true,
'is_valid_from' => now()->format('Y-m-d h:m:s'),
'is_valid_to' => now()->addDays(5)->format('Y-m-d h:m:s'),
'api_reference' => Str::uuid(),
'positions' => [
InvoicePositionDTO::fromArray([
'type' => 'KbPositionText',
'show_pos_nr' => true,
'text' => Str::uuid(),
]),
InvoicePositionDTO::fromArray([
'type' => 'KbPositionCustom',
'amount' => 1,
'unit_id' => $units->dto()->first()->id,
'account_id' => $accounts->dto()->filter(fn ($account) => $account->account_type_enum === AccountTypeEnum::ACTIVE_ACCOUNTS())->first()->id,
'tax_id' => $taxes->dto()->first()->id,
'text' => Str::uuid(),
'unit_price' => 100,
'discount_in_percent' => '0',
]),
],
]);
$invoice = $connector->send(new CreateAnInvoiceRequest(invoice: $newInvoice))->dto();
/**
* Edit An Invoice
*/
$editInvoice = $connector->send(new FetchAnInvoiceRequest(invoice_id: 1))->dto();
$editInvoice->title = 'Test Invoice';
$invoice = $connector->send(new EditAnInvoiceRequest(invoice_id: 1, invoice: $editInvoice));
/**
* Delete An Invoice
*/
$response = $connector->send(new DeleteAnInvoiceRequest(
invoice_id: 1
));
/**
* Cancel An Invoice
*/
$response = $connector->send(new CancelAnInvoiceRequest(
invoice_id: 1
));
/**
* Create A Default Position For An Invoice
*/
$units = $connector->send(new FetchAListOfUnitsRequest);
$accounts = $connector->send(new FetchAListOfAccountsRequest);
$taxes = $connector->send(new FetchAListOfTaxesRequest(scope: 'active', types: 'sales_tax'));
$position = InvoicePositionDTO::fromArray([
'type' => 'KbPositionCustom',
'amount' => 1,
'unit_id' => $units->dto()->first()->id,
'account_id' => $accounts->dto()->filter(fn ($account) => $account->account_type === 1)->first()->id,
'tax_id' => $taxes->dto()->first()->id,
'text' => Str::uuid(),
'unit_price' => 100,
'discount_in_percent' => '0',
]);
$response = $connector->send(new CreateADefaultPositionRequest(
kb_document_type: 'kb_invoice',
invoice_id: 1,
position: $position,
));
/**
* Create A Sub Position For An Invoice
*/
$position = InvoicePositionDTO::fromArray([
'type' => 'KbSubPosition',
'text' => Str::uuid(),
'show_pos_nr' => true,
]);
$response = $connector->send(new CreateASubPositionRequest(
kb_document_type: 'kb_invoice',
invoice_id: 1,
position: $position,
));
/**
* Show PDF
*/
$pdf = $connector->send(new ShowPdfRequest(
invoice_id: 1
))->dto();
/**
* Saving PDF from response
*/
Storage::disk('local')->put('your/directory/'. $pdf->name, base64_decode($pdf->content));
/**
* Download PDF from response
*/
return response(base64_decode($pdf->content))
->header('Content-Type', $pdf->mime)
->header('Content-Disposition', 'attachment; filename="'.$pdf->name.'"')
->header('Content-Length', $pdf->size);
/**
* Fetch A List Of Languages
*/
$languages = $connector->send(new FetchAListOfLanguagesRequest())->dto();
/**
* Fetch A List Of Manual Entries
*/
$manualEntries = $connector->send(new FetchAListOfManualEntriesRequest())->dto();
/**
* Fetch Files Of Accounting Entry
*/
$files = $connector->send(new FetchFilesOfAccountingEntryRequest(
manual_entry_id: 1,
entry_id: 1
))->dto();
/**
* Fetch File Of Accounting Entry Line
*/
$file = $connector->send(new FetchFileOfAccountingEntryLineRequest(
manual_entry_id: 1,
entry_id: 1,
line_id: 1
))->dto();
/**
* Create Manual Entry
*/
$manualEntry = $connector->send(new CreateManualEntryRequest(
data: new CreateManualEntryDTO(
type: 'manual_single_entry',
date: '2023-12-13',
reference_nr: '1234',
entries: collect([
new CreateEntryDTO(
debit_account_id: 89,
credit_account_id: 90,
tax_id: 10,
tax_account_id: 89,
description: 'Something',
amount: 100,
currency_id: 1,
currency_factor: 1,
),
]),
)
));
/**
* Add File To Accounting Entry Line
*/
$manualEntry = $connector->send(new AddFileToAccountingEntryLineRequest(
manual_entry_id: 1,
entry_id: 1,
data: new AddFileDTO(
name: 'fileName',
absolute_file_path_or_stream: fopen('image.png', 'r'),
filename: 'image.png',
)
));
/**
* Get Next Reference Number
*/
$referenceNumber = $connector->send(new GetNextReferenceNumberRequest())->dto();
/**
* Fetch A List Of Notes
*/
$notes = $connector->send(new FetchAListOfNotesRequest())->dto();
/**
* Fetch A Note
*/
$note = $connector->send(new FetchANoteRequest(
id: 1
))->dto();
/**
* Search Notes
*/
$notes = $connector->send(new SearchNotesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Note
*/
$note = $connector->send(new CreateNoteRequest(
data: new CreateEditNoteDTO(
title: 'Test',
content: 'Test Content',
is_public: true,
)
));
/**
* Edit Note
*/
$note = $connector->send(new EditANoteRequest(
id: 1,
data: new CreateEditNoteDTO(
title: 'Test Edit',
content: 'Test Content Edit',
is_public: true,
)
));
/**
* Delete Note
*/
$note = $connector->send(new DeleteANoteRequest(
id: 1
));
/**
* Fetch A List Of Payments
*/
$payments = $connector->send(new FetchAListOfPaymentsRequest())->dto();
/**
* Cancel A Payment
*/
$payment = $connector->send(new CancelAPaymentRequest(
payment_id: 1
))->dto();
/**
* Delete A Payment
*/
$payment = $connector->send(new DeleteAPaymentRequest(
payment_id: 1
))->json();
/**
* Fetch A Qr Payment
*/
$payment = $connector->send(new GetQrPaymentRequest(
bank_account_id: 1,
payment_id: 4
))->dto();
/**
* Create A Qr Payment
*/
$connector->send(new CreateQrPaymentRequest(
bank_account_id: 1,
data: new CreateEditQrPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Sonnenstrasse',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
execution_date: '2024-01-08',
iban: 'CH8100700110005554634',
qr_reference_nr: null,
additional_information: null,
is_editing_restricted: false,
)
))->dto();
/**
* Update A Qr Payment
*
* NOTE: THE PAYMENT MUST HAVE A STATUS OF OPEN TO BE UPDATED
*/
$payment = $connector->send(new EditQrPaymentRequest(
bank_account_id: 1,
payment_id: 4,
iban: '8100700110005554634',
id: 4,
data: new CreateEditQrPaymentDTO(
instructed_amount: [
'currency' => 'CHF',
'amount' => 100,
],
recipient: [
'name' => 'Müller GmbH',
'street' => 'Colchester Place',
'zip' => 8005,
'city' => 'Zürich',
'country_code' => 'CH',
'house_number' => 36,
],
execution_date: '2024-01-08',
iban: 'CH8100700110005554634',
)
))->dto();
/**
* Journal
*/
$journals = $connector->send(new JournalRequest())->dto();
/**
* Fetch A List Of Salutations
*/
$salutations = $connector->send(new FetchAListOfSalutationsRequest())->dto();
/**
* Fetch A Salutation
*/
$salutation = $connector->send(new FetchASalutationRequest(
id: 1
))->dto();
/**
* Search Salutations
*/
$salutations = $connector->send(new SearchSalutationsRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
/**
* Create Salutation
*/
$salutation = $connector->send(new CreateSalutationRequest(
data: new CreateEditSalutationDTO(
name: 'Test',
is_archived: false,
)
));
/**
* Edit Salutation
*/
$salutation = $connector->send(new EditASalutationRequest(
id: 1,
data: new CreateEditSalutationDTO(
name: 'Test Edit',
is_archived: false,
)
));
/**
* Delete Salutation
*/
$salutation = $connector->send(new DeleteASalutationRequest(
id: 1
));
bash
php artisan vendor:publish --provider="CodebarAg\Bexio\BexioServiceProvider" --tag="config"
php
/**
* Fetch A Tax
*/
$tax = $connector->send(new FetchATaxRequest(
id: 1
))->dto();
php
/**
* Delete A Tax
*/
$tax = $connector->send(new DeleteATaxRequest(
id: 1
));
php
/**
* Fetch A Title
*/
$title = $connector->send(new FetchATitleRequest(
id: 1
))->dto();
php
/**
* Search Titles
*/
$titles = $connector->send(new SearchTitlesRequest(
searchField: 'Name',
searchTerm: 'Something'
))->dto();
php
/**
* Delete Title
*/
$title = $connector->send(new DeleteATitleRequest(
id: 1
));
php
/**
* Fetch A VAT Period
*/
$vatPeriod = $connector->send(new FetchAVatPeriodRequest(
id: 1
))->dto();