XERO PHP API прикрепляет файл к накладной - файл не включается при отправке - PullRequest
1 голос
/ 31 марта 2020

Я работаю над интеграцией пользовательской системы PHP с XERO и могу создавать счета-фактуры и т. Д. c. Теперь нам нужно прикрепить некоторые файлы к накладной.

Примеры API PHP не имеют функции для этого, только функцию для прикрепления файла к учетной записи, поэтому я использовал это в качестве основы и просмотрел онлайн-документацию для функции createInvoiceAttachmentByFileName (), которая аналогична функции createAccountAttachmentByFileName (), за исключением того, что у нее есть дополнительный параметр ($ include_online).

Функция завершается успешно и возвращает правильный результат, но она похоже, игнорирует параметр $ include_online. Неважно, что я установил, оно никогда не включается.

Ниже приведен мой код функции.
Кто-нибудь делал это раньше и может, может быть, скажет мне, что я делаю неправильно?

Я использую v 1.4.0 XERO PHP API

Спасибо

Андре

public function addInvoiceAttachment($invoice_xero_id, $file_path)
{
    $res = "OK";
    // Get the file name
    $sep_pos = strrpos($file_path, '/');
    $filename = substr($file_path, $sep_pos+1);

    $handle = fopen($file_path, "r");
    $contents = fread($handle, filesize($file_path));
    fclose($handle);

    $include_online = True;

    try
    {
      $result = $this->apiInstance->createInvoiceAttachmentByFileName($this->xeroTenantId, $invoice_xero_id, $filename, $include_online, $contents);
      trigger_error("addInvoiceAttachment: result = ".print_r($result, true));
    }
    catch (Exception $e) 
    {
      trigger_error('Exception when calling AccountingApi->createInvoiceAttachmentByFileName: '.$e->getMessage());
      $res = $e->getMessage();
    }

        return $res;
  } // addInvoiceAttachment
  // --------------------------------------------------------------------------

1 Ответ

0 голосов
/ 24 апреля 2020

У меня была та же проблема, и в API Xero была ошибка, когда этот параметр игнорировался. Решение состоит в том, чтобы изменить следующее в lib/api/AccountingApi.php файле

В функции createInvoiceAttachmentByFileNameRequest в строке 8203 (по крайней мере, в моем файле) изменить:

С:

$this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''),

Кому:

$this->config->getHost() . $resourcePath . "?IncludeOnline=" . ($include_online ? "true" : "false") . ($query ? "&{$query}" : ''),

Это что-то вроде хака, но это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...