在美国版本的QuickBooks Online中成功添加客户,但在加拿大版本的QBO中通过PHP中的Intuit API



我使用的是QBO IPP PHP SDK QuickBooks V3 API。错误是

"6000:[在处理您的请求时发生了业务验证错误,业务验证错误:此操作所需的某些内容已不可用。其他用户可能已将其删除。请刷新屏幕以查看当前信息。]">

6000:[在处理您的请求时发生了业务验证错误,业务验证错误:您一次只能添加或编辑一个名称。请重试

但当我通过相同的API获得客户详细信息时,我成功地获得了所有客户详细信息。

任何人都可以指引我。对不起,我忘了告诉你我用的是加拿大版的快速图书https://ca.qbo.intuit.com".

这是我为Add客户提供的示例代码,但错误对我来说仍然无法理解

我正在使用V3 API

$CustomerService=新QuickBooks_PP_Service_Customer((;

$Customer = new QuickBooks_IPP_Object_Customer();
$Customer->setTitle('MR');
$Customer->setGivenName('Abdul');
$Customer->setMiddleName('Hanan');
$Customer->setFamilyName('Cheema');
$Customer->setFullyQualifiedName('FullyQualifiedName cheema');
$Customer->setDisplayName('Abdul Hanan Cheema ' . mt_rand(0, 1000));
    $Customer->setCompanyName('Seed Corporation');
    $Customer->setPrintOnCheckName('PrintOnCheckName See');
    $Customer->setActive('1');
    $Customer->setDefaultTaxCodeRef('12');
    $Customer->setTaxable('0');
    $Customer->setJob('jobSee');
    $Customer->setBillWithParent('0');
    $Customer->setBalance('100');
    $Customer->setBalanceWithJobs('0');
    $Customer->setCurrencyRef('CAD');
    $Customer->setPreferredDeliveryMethod('Email');
   // $Customer->setJob('jobSee');

// Terms (e.g. Net 30, etc.)
$Customer->setSalesTermRef(4);
// Phone #
$PrimaryPhone = new QuickBooks_IPP_Object_PrimaryPhone();
$PrimaryPhone->setFreeFormNumber('860-532-0099');
$Customer->setPrimaryPhone($PrimaryPhone);
// Mobile #
$Mobile = new QuickBooks_IPP_Object_Mobile();
$Mobile->setFreeFormNumber('860-532-0099');
$Customer->setMobile($Mobile);
// Fax #
$Fax = new QuickBooks_IPP_Object_Fax();
$Fax->setFreeFormNumber('860-532-0099');
$Customer->setFax($Fax);
// Bill address
$BillAddr = new QuickBooks_IPP_Object_BillAddr();
$BillAddr->setLine1('Office#2 Ali Tower');
$BillAddr->setLine2('GUlburg3');
$BillAddr->setCity('Lahore');
$BillAddr->setCountrySubDivisionCode('PK');
$BillAddr->setPostalCode('44000');
$Customer->setBillAddr($BillAddr);
// Email
$PrimaryEmailAddr = new QuickBooks_IPP_Object_PrimaryEmailAddr();
$PrimaryEmailAddr->setAddress('support@consolibyte.com');
$Customer->setPrimaryEmailAddr($PrimaryEmailAddr);
if ($resp = $CustomerService->add($Context, $realm, $Customer))
{
    print('Our new customer ID is: [' . $resp . '] (name "' . $Customer->getDisplayName() . '")');
}
else
{
    print($CustomerService->lastError($Context));
}

提前感谢

对于此错误:

"6000:[在处理您的请求,业务验证错误:需要执行此操作不再可用。其他用户可能已将其删除。请刷新您的屏幕以查看当前信息。]">

你需要检查你所指的一切(SalesTerm、TaxCode(,并确保它们确实存在。其中一个没有。

对于此错误:

"6000:[在处理您的请求,业务验证错误:您只能添加或编辑一个名称一次。请再试一次。">

确保一次只添加/编辑一件事。

进行更新时,需要先进行读取,以获取实体的最新元数据和synctoken。然后您应该使用它来进行更新。完全或稀疏。怀疑您没有发送用于更新的Id或正确的同步令牌。请在此处粘贴您的请求/响应xml。

在应用层中,Employee、Customer和Vendor实体之间有一个锁,以确保唯一的名称约束。当您尝试使用并行线程修改/创建多个对象时,就会出现上述错误。请对以上3个名称实体依次调用API。如果您仍然面临任何错误,您可以使用相应的请求(和API请求ID(和响应XML来更新您的帖子。

感谢

我使用ItemRef来引用Customer,而不是AnyIntuitObject引用,例如销售条款引用、IncomeAccountRef等

最新更新