QBOv3 XML Validation Fault 2500 (Невалиден референтен идентификатор)

Опитвам се да създам тестова фактура в quickbooks с помощта на quickbooks-ruby gem. Забележка: Имам тестов акаунт в QB, който няма нищо: фактура, клиент и т.н. Това е нов акаунт, създаден само с цел тестване. И така, ето моят код:

service = Quickbooks::Service::Invoice.new
service.company_id = current_user.company_id
service.access_token = create_consumer

qb_invoice = Quickbooks::Model::Invoice.new
qb_invoice.customer_id = 123

line_item = Quickbooks::Model::InvoiceLineItem.new
line_item.amount = 100
line_item.sales_item! do |detail|
  detail.unit_price = 100
  detail.quantity = 1
  detail.item_id = 1
end

qb_invoice.line_items << line_item

res = service.create qb_invoice
p res.id #exception!

def create_consumer
  OAuth::AccessToken.new(.....)
end

Заявка:

   METHOD = post
   RESOURCE = https://qb.sbfinance.intuit.com/v3/company/fdsfdsfdsfds123/invoice

<?xml version="1.0" encoding="utf-8"?>
<Invoice xmlns="http://schema.intuit.com/finance/v3" sparse="false">
  <Line>
    <Amount>100.0</Amount>
    <DetailType>SalesItemLineDetail</DetailType>
    <SalesItemLineDetail>
    <ItemRef>1</ItemRef>
    <UnitPrice>100.0</UnitPrice>
    <RatePercent>0.0</RatePercent>
    <Qty>1.0</Qty>
    </SalesItemLineDetail>
  </Line>
  <CustomerRef>123</CustomerRef>
  <TotalAmt>0.0</TotalAmt>
  <Balance>0.0</Balance>
  <Deposit>0.0</Deposit>
</Invoice>

и отговор с грешка:

RESPONSE CODE = 400

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-03-06T19:30:49.168-08:00">
  <Fault type="ValidationFault">
    <Error code="2500" element="">
      <Message>Invalid Reference Id</Message>
      <Detail>Invalid Reference Id : Something you're trying to use has been deleted. Check the fields with accounts, customers, items, vendors or employees.
      </Detail>
    </Error>
  </Fault>
</IntuitResponse>

Може ли да е, защото клиент с id = 123 не съществува? Ако не, каква е причината тогава?


person アレックス    schedule 07.03.2014    source източник


Отговори (1)


Моля, проверете дали имате клиент (ID-123) и артикул (Id-1) във вашия акаунт.

Ако не, създайте тези два записа с помощта на apiexplorer/код и използвайте съответните идентификатори на обекти.

ApiExplorer - https://developer.intuit.com/apiexplorer?apiname=V3QBO

EntityRef - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference

ApiExplorer -

въведете описание на изображението тук

Справка - https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0015_firstrequest

Благодаря

person Manas Mukherjee    schedule 07.03.2014
comment
има елементи от менюто, наречени Клиенти (не клиенти). Това е, нали? И какъв е id, къде мога да го видя? Предполагам, че това е в url, наречен nameId=1 (qbo.intuit.com/app/customerdetail ?nameId=1), правилно? - person アレックス; 07.03.2014
comment
Клиент и клиент се отнасят за едно и също нещо (зависи какъв термин сте избрали, докато настройвате своя QBO акаунт). Можете да създадете клиент от QB UI и да извлечете подробностите (включително ID) с помощта на APIExplorer (който извиква REST крайна точка на клиента). Трябва да използвате този идентификатор на клиента в извикването на API за създаване на фактура. - person Manas Mukherjee; 07.03.2014
comment

Искам да направя филтър в Qlikview, но искам да избера някои данни в този филтър, а не всички,

Можете ли да ми помогнете, моля.

Помощта се оценява

Благодаря ти

- person アレックス; 12.03.2014
comment
и как мога да получа itemID? - person アレックス; 12.03.2014
comment
Ако извикате getAll крайна точка на обект ITEM, тогава ще получите всички елементи като XML/json в отговор. Оттам ще разберете itemID. Моля, вижте документите за обект на фактура - developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/. - person Manas Mukherjee; 12.03.2014
comment
съжалявам, не намерих никакво споменаване на метода getAll там. - person アレックス; 12.03.2014
comment
в api explorer -› елемент на developer.intuit.com/apiexplorer?apiname=V3QBO#Item също няма getAll. Имате предвид, заявка с изберете * от елемент? - person アレックス; 12.03.2014
comment
да вярно. Моля, използвайте крайна точка на заявката. Исках да кажа това от страна на devkit. Има обвивка като findAll/getAll върху крайната точка на заявката. - person Manas Mukherjee; 12.03.2014
comment
още един въпрос моля. Не намерих как да посоча име за артикул и фактура. Възможно ли е и как? - person アレックス; 15.03.2014
comment
ops, всъщност съществува име за елемент. - person アレックス; 15.03.2014
comment
Не е необходимо да предоставяте препратката към артикула, но QBO ще използва по подразбиране един от артикулите във вашия акаунт (най-нисък QB id?), когато транзакцията приключи. - person Minimul; 01.04.2014