aibianchi/exact-online-bundle

A Bundle for Exact Online API

Installs: 184

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

4.4 2021-04-28 11:26 UTC

This package is auto-updated.

Last update: 2024-03-28 18:10:29 UTC


README

Author: Bianchi Jefferson

Website: https://aibianchi.com

Mail: Jefferson@aibianchi.com

Exact Online doc: https://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Content-getting-started

Requirements

Guzzle 6

branch for:

Symfony version 4.4

php version 7.2

STEP 1

Create your APP on : https://apps.exactonline.com/be/fr-BE/V2/Manage/

STEP 2

 composer require aibianchi/exact-online-bundle

STEP 3

Now you can use multi account ( by country )

config/package/exact_online.yaml

exact_online:
  Belgium:
    baseUrl:      https://start.exactonline.be/
    apiUrl:       api/v1
    authUrl:      api/oauth2/auth
    tokenUrl:     api/oauth2/token
    redirectUrl:  https://YOURURL/ExactRequest
    clientId:     YOURID
    clientSecret: YOURSECRET
  France:
    baseUrl:      https://start.exactonline.fr/
    apiUrl:       api/v1
    authUrl:      api/oauth2/auth
    tokenUrl:     api/oauth2/token
    redirectUrl:  https://YOURURL/ExactRequest
    clientId:     YOURID
    clientSecret: YOURSECRET
  Nerderland:
    baseUrl:      https://start.exactonline.nl/
    apiUrl:       api/v1
    authUrl:      api/oauth2/auth
    tokenUrl:     api/oauth2/token
    redirectUrl:  https://YOURURL/ExactRequest
    clientId:     YOURID
    clientSecret: YOURSECRET
  Spain:
    baseUrl:      https://start.exactonline.es/
    apiUrl:       api/v1
    authUrl:      api/oauth2/auth
    tokenUrl:     api/oauth2/token
    redirectUrl:  https://YOURURL/ExactRequest
    clientId:     YOURID
    clientSecret: YOURSECRET

STEP 4

You should to update your database:
php app/console doctrine:schema:update --force

STEP 5

In your controller :

use aibianchi\ExactOnlineBundle\Manager\ExactManager;

 public function indexAction(Request $request, ExactManager $exactManager)
{
    // the code sended by exact online when the first auth
    $code = $request->query->get('code');
    //$exactManager->init($code, "Belgium"); // use init for the first Authentification, after that you should to use refreshtoken();
      $exactManager->refreshToken("Belgium");
}

Next go to http:// YOUR URL.com/ExactRequest Your authentication login will be required, this session will expire after 10 minutes If you want to keep this session active, you should to replace function init() by refreshToken()

Usage

Init

$code = $request->query->get('code');
$exactManager = $this->get("exact_online.manager");
//$exactManager->init($code); // first init
$exactManager->refreshToken(); // after first init 

getList($page, $maxPerPage)

(with pagination)
$listAccount = $exactManager->getModel("Account")->getList(1,5);
foreach ($listAccount as $account){
	dump($account);
}

findBy()

$criteria = array('AddressLine1' => 'Koningin Astridlaan 166');
$select   = array ("AddressLine1", "BusinessType", "CountryName", "Created");
$orderBy  = array('Created' => 'desc');
$limit    = 1 ;
$account  = $exactManager->getModel("Account")->findBy($criteria,$select,$orderBy,$limit);
dump($account);

find

(guid)
account = $exactManager->getModel("Account")->find("587707b8-94aa-426a-b7db-56d434d9e83a");

persist()

$item = new Item();
$item->setCode(rand());
$item->setCostPriceStandard(5);
$item->setDescription("description de test");
$item->setIsSalesItem(true);
$item->setSalesVatCode('VN');
$exactManager->persist($item);

update()

$account = $exactManager->getModel("Account")->find("587707b8-94aa-426a-b7db-56d434d9e83a");
$account->setWebsite("https://aibianchi.com");
$exactManager->update($account);

remove()

$account = $exactManager->getModel("Account")->find("587707b8-94aa-426a-b7db-56d434d9e83a");
$exactManager->remove($account);