Quickbooks Desktop多个实体自定义字段

时间:2018-07-20 12:04:37

标签: php xml quickbooks

我正在使用Web连接器与QuickBooks桌面版本进行通信,而在Web端,我正在使用consolibyte https://github.com/consolibyte/quickbooks-php。现在,我有一个用例,需要使用“客户”和“员工”自定义字段。到目前为止,我可以插入,更新自定义字段。问题来了,在consolibyte库中,我们定义了所有操作

$map = array(QUICKBOOKS_MOD_DATAEXT  => array( 'employee_custom_field_request',
                                'employee_custom_field_response',
                                'customer_custom_field_request',
                                'customer_custom_field_response'
                                )

现在,如果我只需要更新员工自定义字段,我将排队请求

$Queue = new QuickBooks_WebConnector_Queue('mysqli://username:password@localhost/quickbook'); $Queue->enqueue(QUICKBOOKS_MOD_DATAEXT, $id);

因此,每当我运行Web连接器时,都会同时调用客户和员工自定义字段的请求和响应功能,所以我应该如何编码以仅调用特定的实体功能(客户或员工)?还是consolibyte库中有什么方法可以区分调用者?

1 个答案:

答案 0 :(得分:1)

这里有两个选项-

这些常量QUICKBOOKS_MOD_DATAEXT完全是任意的。例如您可以改为:

$Queue->enqueue('CustomFieldForCustomer', $id);
$Queue->enqueue('CustomFieldForEmployee', $another_id);

只要您对->enqueue(...)的调用中的内容与$map中的内容相匹配,便可以在其中使用所需的任何内容。因此,只需组成一些新的常数。

另一种选择是传递额外的额外数据。例如:

$Queue->enqueue(QUICKBOOKS_MOD_DATAEXT, $your_id, null, array( 'this_is_for_a' => 'customer' );

然后在调用函数时:

function CUSTOMER_OR_EMPLOYEE_custom_field_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $xml, $idents)
{
    if ($extra['this_is_for_a'] == 'customer') 
    {
         // ... do something for customers
    } 
    else 
    {
        // ... do something for employees 
    }
}