Calcinai Xero-PHP和Payroll AU SuperFund端点

时间:2017-07-24 07:29:44

标签: php arrays xero-api

使用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对象,其中包含存储在我的Xero中的所有SuperFunds为[storage:ArrayObject:private] => Array (a private array of SuperFund objects)。鉴于我的新手PHP技能,我不知道如何获得我追求的超级基金或如何访问该阵列。而且,当我只在一个人之后获得所有超级基金时,我似乎没有效率。在没有setParameter子句的情况下执行load ... execute操作会返回所有内容的相同数组。

关于准备放弃,但我知道有一些愚蠢的事我不做。

1 个答案:

答案 0 :(得分:0)

由于某种原因,您必须加载所有SuperFunds的列表,并循环浏览它们以找到合适的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;
}

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