【问题标题】:Quickbooks Desktop multiple entity custom fieldsQuickbooks Desktop 多实体自定义字段
【发布时间】:2018-07-20 12:04:36
【问题描述】:

我正在使用 Web 连接器与 QuickBooks 桌面版通信,在 Web 端我使用 consolibyte https://github.com/consolibyte/quickbooks-php。现在我有一个用例,我需要使用客户和员工自定义字段。我能够插入、更新自定义字段,到目前为止一切都很好。问题来了,在一个联合字节库中,我们定义了所有动作

$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 连接器时,客户和员工自定义字段请求和响应函数都会被调用,那么我应该如何编写代码以仅调用特定实体函数(客户或员工)?或者在 conolibyte 库中有什么方法可以区分它是谁的调用?

【问题讨论】:

    标签: php xml quickbooks


    【解决方案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 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多