Calcinai Xero-PHP 和 Payroll AU SuperFund 端点

Calcinai Xero-PHP and the Payroll AU SuperFund endpoint

使用来自 https://github.com/calcinai/xero-php

的 calcinai Xero-PHP 库

我正在制作一份入职表格,新员工可以在其中填写所有详细信息、签名并提交。提交后,它将所有详细信息发送给 Xero。

我可以正确发送所有个人和银行帐户详细信息,但我不知道如何添加员工的超级帐户。

据我所知,我需要获取 SuperFundID 才能创建员工的 SuperFundMembership。所以我一直在尝试使用 $xero->load('\XeroPHP\Models\PayrollAU\SuperFund')

尝试过:$xero->load('\XeroPHP\Models\PayrollAU\SuperFund')->where("ABN", [an ABN])->execute():不起作用,因为显然根据 Xero console/history "ABN property is not supported for Where or Order clause",即使 https://developer.xero.com/documentation/payroll-api/superfunds 的文档说我可以 "Filter by an any element "

已尝试:$xero->load('\XeroPHP\Models\PayrollAU\SuperFund')->setParameter("ABN", "65714394898")->execute(); 发送请求 [url]superfunds?ABN=65714394898 和 returns 一个集合对象,其中所有 SuperFunds 作为 [storage:ArrayObject:private] => Array (a private array of SuperFund objects) 存储在我的 Xero 中。鉴于我的新手 PHP 技能,我不知道如何获得我想要的超级基金或如何访问该数组。此外,当我只想要一笔资金时,获得所有超级基金对我来说似乎不是很有效。在没有 setParameter 子句的情况下执行加载...执行操作 returns 相同的所有内容数组。

即将准备放弃,但我知道有些事情显然很愚蠢我没有做。

出于某种原因,您必须加载所有超级基金的列表,然后遍历它们以找到正确的基金。

// 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;
}

如果不存在你可以尝试创建它,然后获取它的ID。