Calcinai Xero-PHP и конечная точка платежного ведомости AU SuperFund

Использование библиотеки Xero-PHP calcinai по https://github.com/calcinai/xero-php

У меня есть бланк, который я заполняю, где новый сотрудник вводит все свои данные, подписывает их и отправляет. После отправки он отправляет все свои данные в Xero.

Я могу получить все личные и банковские реквизиты, отправленные должным образом, но мне не повезло, когда я понимаю, как добавить супер сотрудника.

Из того, что я могу сказать, мне нужно получить SuperFundID, чтобы иметь возможность создавать SuperFundMembership сотрудника. Итак, я пытался использовать $xero->load('\\XeroPHP\\Models\\PayrollAU\\SuperFund')

Пытался: $xero->load('\\XeroPHP\\Models\\PayrollAU\\SuperFund')->where("ABN", [an ABN])->execute(): Не работает, потому что в соответствии с консолью / историей Xero "свойство ABN для предложения Where или Order не поддерживается", хотя в документации по адресу https://developer.xero.com/documentation/payroll-api/superfunds говорится, что я может "Фильтровать по любому элементу"

Пытался: $xero->load('\\XeroPHP\\Models\\PayrollAU\\SuperFund')->setParameter("ABN", "65714394898")->execute(); которые отправляют запрос [url]superfunds?ABN=65714394898 и возвращает объект Collection со ВСЕМИ SuperFunds, хранящимися в моем Xero, как [storage:ArrayObject:private] => Array (a private array of SuperFund objects), Учитывая мои начинающие навыки PHP, я не знаю, как получить супер фонд, который мне нужен, или как получить доступ к этому массиву. Кроме того, мне кажется не очень эффективным, чтобы получить ВСЕ супер средства, когда я только после одного. Выполнение действия load...execute без предложения setParameter возвращает один и тот же массив всего.

О готовности сдаться, но я знаю, что есть что-то глупо очевидное, что я не делаю.

1 ответ

Решение

Вы по какой-то причине должны загрузить список ВСЕХ SuperFunds и просмотреть их, чтобы найти нужный.

// Given a USI, try to find and return Xero's ID of the SuperFund
function findIDByUSI(&$xero, $usi)
{
    $funds[] = $xero->load('\\XeroPHP\\Models\\PayrollAU\\SuperFund')->execute();
    foreach($funds[0] as $fund)
    {
        if($fund->getUSI() == $usi)
            return $fund->getSuperFundID();
    }
    return null;
}

Если если не существует, вы можете попробовать создать его, а затем получить его идентификатор.

Другие вопросы по тегам