0

使用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 控制台/历史记录“Where 或 Order 子句不支持 ABN 属性”,即使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 技能,我不知道如何获得我想要的超级基金或如何访问该数组。此外,当我只追求一个时,获得所有的超级基金对我来说似乎不是很有效。在没有 setParameter 子句的情况下执行 load...execute 操作会返回相同的所有内容数组。

快要放弃了,但我知道有些愚蠢的事情我没有做。

4

1 回答 1

0

出于某种原因,您必须加载所有 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;
}

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

于 2017-08-25T05:09:17.407 回答