2016-11-15 2 views
0

Я пытаюсь добавить элемент в quickbooks онлайн, используя Keith Palmer/Consolibyte sdk. Я основал мой пример в примере, представленном в sdk, однако, похоже, что в версии sdk недостаточно информации, поэтому «добавить элемент» не удается. Просматривая документацию из intuit, кажется, что мне нужно добавить несколько дополнительных полей. Однако, когда я их добавляю, они просто игнорируются sdk и не добавляются в xml, переданный в quickbooks.consolibyte sdk add item

<?php 

$ItemService = new QuickBooks_IPP_Service_Item(); 
$Item = new QuickBooks_IPP_Object_Item(); 

$Item->setName('My 1st Item'); 
$Item->setIncomeAccountRef('66'); 
$Item->setExpenseAccountRef('67'); 
$Item->setAssetAccountRef('65'); 
$Item->setType('Inventory'); 

$Item->setTrackQtyOnHand = ('true');  //MISSING FROM XML OUTPUT 
$Item->setQtyOnHand = ('10');    //MISSING FROM XML OUTPUT 
$Item->setInvStartDate = ('2015-01-01'); //MISSING FROM XML OUTPUT 

if ($resp = $ItemService->add($Context, $realm, $Item)) 
{ 
print('Our new Item ID is: [' . $resp . ']'); 
} 
else 
{ 
print($ItemService->lastError($Context)); 
print("\n\n\n\n"); 

print('REQUEST: <code>' . htmlspecialchars($ItemService->lastRequest()) . '</code><br><br><br>'); 
print("\n\n\n\n"); 
print('RESPONSE: <code>' .  htmlspecialchars($ItemService->lastResponse()) . '</code><br><br><br>'); 

} 


print('<br><br><br><br>'); 
print("\n\n\n\n\n\n\n\n"); 
print('Request [' . $IPP->lastRequest() . ']'); 
print("\n\n\n\n"); 
print('Response [' . $IPP->lastResponse() . ']'); 
print("\n\n\n\n\n\n\n\n\n"); 

?> 

</pre> 

<?php 

require_once dirname(__FILE__) . '/views/footer.tpl.php'; 

Если я вручную добавить элементы в XML и войти в API Explorer, то он работает, как ожидалось, так что проблема, кажется, получает необходимые дополнительные услуги в XML.

Вот вывод XML из моего кода выше:

<Item xmlns="http://schema.intuit.com/finance/v3"> 
<Name>My 3rd Item</Name> 
<Type>Inventory</Type> 
<IncomeAccountRef>66</IncomeAccountRef> 
<ExpenseAccountRef>67</ExpenseAccountRef> 
<AssetAccountRef>65</AssetAccountRef> 
</Item> 

Это не удается добавить элемент в последние 3 ниже поля отсутствуют на выходе XML

$Item->setTrackQtyOnHand = ('true'); 
$Item->setQtyOnHand = ('10'); 
$Item->setInvStartDate = ('2015-01-01'); 

Если я ввожу этот кода непосредственно в API-интерфейс, тогда элемент добавляется в быстрые книги, как ожидалось.

<Item xmlns="http://schema.intuit.com/finance/v3"> 
<Name>My 2nd Item</Name> 
<Type>Inventory</Type> 
<IncomeAccountRef>66</IncomeAccountRef> 
<ExpenseAccountRef>67</ExpenseAccountRef> 
<AssetAccountRef>65</AssetAccountRef> 

<TrackQtyOnHand>true</TrackQtyOnHand> 
<QtyOnHand>10</QtyOnHand> 
<InvStartDate>2015-01-01</InvStartDate> 
</Item> 

Я просмотрел папку SDK, но я не уверен, где я, чтобы найти код, который строит вывод XML.

ответ

0

Ни один из них не являются действительными PHP способа вызова метода:

$Item->setTrackQtyOnHand = ('true');  //MISSING FROM XML OUTPUT 
$Item->setQtyOnHand = ('10');    //MISSING FROM XML OUTPUT 
$Item->setInvStartDate = ('2015-01-01'); //MISSING FROM XML OUTPUT 

Вызов функции принимает следующий формат:

$Object->someMethod('value'); 

Так что ваш код должен выглядеть следующим образом:

$Item->setTrackQtyOnHand ('true');  //MISSING FROM XML OUTPUT 
$Item->setQtyOnHand('10');    //MISSING FROM XML OUTPUT 
$Item->setInvStartDate('2015-01-01'); //MISSING FROM XML OUTPUT 

Ознакомьтесь с документацией по синтаксису PHP:

+0

Aaargh Копирование и вставка ошибок! Я даже не заметил их там! Большое спасибо за указание на это! Я замечаю, что ваши форумы не работают. Есть ли планы оживить их? – red1974