在联系人上设置销售跟踪类别

时间:2020-05-20 10:54:45

标签: xero-api

虽然我可以通过UI设置联系人的销售设置/类别,但似乎无法通过Calcinai PHP库执行此操作。

此刻我正在使用v1.x,并且已经为其他Contact创建/更新了几年了。

首先,是否应该甚至可以通过API在联系人上设置跟踪类别选择(类别和选项已经定义)。这里的大多数跟踪类别问题都与“发票”相关,而不是与“联系人”相关。

Contact.php中有各种各样的提示,提示应该可行,我尝试了多种组合,但无法正常工作。

我有点担心通过API预览器返回的Contact有效负载中的元素名称在模型中没有相同的元素名称,例如

<SalesTrackingCategories>
   <SalesTrackingCategory>
      <TrackingCategoryName>Gift Aid</TrackingCategoryName>
      <TrackingOptionName>Declined</TrackingOptionName>
   </SalesTrackingCategory>
</SalesTrackingCategories>

!= 

'Name' => [false, self::PROPERTY_TYPE_STRING, null, false, false],
'Status' => [false, self::PROPERTY_TYPE_STRING, null, false, false],
'Options' => [false, self::PROPERTY_TYPE_OBJECT, 'Accounting\\TrackingCategory\\TrackingOption', true, true],
'Option' => [false, self::PROPERTY_TYPE_STRING, null, false, true]

我看到Helpers.php中提到了“肮脏的骇客”,但这似乎并不能解决我的问题。

同样,我尝试了很多事情,包括:

$TrackingOption = new XeroPHP\Models\Accounting\TrackingCategory\TrackingOption();
$TrackingOption->setTrackingOptionID("37ae930d-f576-44fc-b1d8-86b7f96c0205");

$TrackingCategory = new TrackingCategory();
$TrackingCategory->setTrackingCategoryID("4031ea9e-37a0-40cb-8539-d3127a501828");                                    
$TrackingCategory->addOption($TrackingOption);

$contact->setName($contactname)
->setFirstName($primarypersonfirst)
->setLastName($primarypersonlast)
->setEmailAddress($primarypersonemail)
->setContactStatus(\XeroPHP\Models\Accounting\Contact::CONTACT_STATUS_ACTIVE)
->setContactNumber($contactnumber)
->addSalesTrackingCategory($TrackingCategory)

有人设法做到这一点吗?我会很感激任何指针。

1 个答案:

答案 0 :(得分:0)

已排序,是的,可以将销售跟踪类别添加到联系人。

我暂时保留了Calcinai代码的v1.x版本,但是从Master的最新版本中修补了以下类(我需要通过EOY将其全部升级到OAuth2)。

  • 模型/会计/TrackingCategory.php
  • 模型/会计/TrackingCategory/TrackingOption.php

然后,以下内容将起作用:

$trackingcat = new XeroPHP\Models\Accounting\TrackingCategory($xero); 
$trackingcat->setTrackingCategoryName("cat name");
$trackingcat->setTrackingOptionName("Yes");
$contact->addSalesTrackingCategory($trackingcat);