Обновление записи из клиентской библиотеки PHP для Exact Online - PullRequest
0 голосов
/ 23 апреля 2019

Я использовал Клиентская библиотека PHP для Exact Online .

Мне нужно сохранить запись, основываясь на условии, существует она или нет. Так как записи успешно сохраняются. Но, к сожалению, записи не обновляются.

$customer = [
        'address'       => 'No.22/N, 91 Cross, XYZ Street, ABC Road',
        'address2'      => 'DEF',
        'city'          => 'GHI',
        'customerid'    => '999',
        'country'       => 'DE',
        'name'          => 'Nishanth',
        'zipcode'       => '123456'
];

// Create a new account
$account->AddressLine1 = $customer['address'];
$account->AddressLine2 = $customer['address2'];
$account->City = $customer['city'];
$account->Code = $customer['customerid'];
$account->Country = $customer['country'];
$account->IsSales = 'true';
$account->Name = $customer['name'];
$account->Postcode = $customer['zipcode'];
$account->Email = 'nishanth@gmail.com';
$account->Status = 'C';

Из вышеприведенного фрагмента кода, исходя из условия, запись должна быть обновлена ​​или сохранена из приведенных ниже фрагментов кода. Следовали два подхода:

I Подход:

if($AccInfo)
{ // Update
    $AccInfo->AddressLine1 = $customer['address'];
    $AccInfo->AddressLine2 = $customer['address2'];
    $AccInfo->City = $customer['city'];
    $updateAcc = $AccInfo->update();
}
else 
{ // Save
    $savedAcc = $Accounts->save();
}

Результат:

Warning: Attempt to assign property 'AddressLine1' of non-object in E:\xampp\htdocs\exact-php-client-master\example\example.php on line 506

Warning: Attempt to assign property 'AddressLine2' of non-object in E:\xampp\htdocs\exact-php-client-master\example\example.php on line 507

Warning: Attempt to assign property 'City' of non-object in E:\xampp\htdocs\exact-php-client-master\example\example.php on line 508

Fatal error: Uncaught Error: Call to a member function update() on array in E:\xampp\htdocs\exact-php-client-master\example\example.php:510 Stack trace: #0 {main} thrown in E:\..\..\exact-php-client-master\example\example.php on line 510

1020 *
*

II Подход:

if($AccInfo)
{ // Update
    $updateAcc = $Accounts->update();
}
else 
{ // Save
    $savedAcc = $Accounts->save();
}

Результат:

Picqer\Financials\Exact\ApiException : Error 400: Bad Request - Error in query syntax.

Как нам нужно обновить записи для Exact Online Dashboard?

1 Ответ

0 голосов
/ 23 апреля 2019

Наконец-то я решил проблему, написав пользовательские методы

$AccInfo = $Accounts->filter("Email eq 'nishanthjay@gmail.com'");

if($AccInfo)
{ // Update
    $updateAcc = $Accounts->customUpdate($AccInfo[0]->ID);
    echo '<pre>'; print_r($updateAcc);
}
else 
{ // Save
    $savedAcc = $Accounts->save();
}

Я написал свои собственные методы из ..\src\Picqer\Financials\Exact\Persistance\Storable.php

public function customUpdate($primaryKey='')
{
    $this->fill($this->update2($primaryKey));
    return $this;
}

public function update2($primaryKey='')
{
    return $this->connection()->put($this->url() . "(guid'$primaryKey')", $this->json());
}

Для любого, кто точно знает, как обновить ExactOnline. Вы всегда можете ответить на заданный вопрос с помощью вызова встроенной функции, известной как update().

...