Ошибка проверки XML QBOv3 2500 (неверный идентификатор ссылки)

Я пытаюсь создать тестовый счет в quickbooks, используя драгоценный камень quickbooks-ruby. Примечание. У меня есть тестовая учетная запись в 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/code и используйте соответствующие идентификаторы объектов.

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

EntityRef — https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference< /а>

АпиЭксплорер -

введите здесь описание изображения

Ссылка — https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0015_firstrequest< /а>

Спасибо

person Manas Mukherjee    schedule 07.03.2014
comment
Клиент и клиент относятся к одному и тому же (это зависит от того, какой термин вы выбрали при настройке учетной записи QBO). Вы можете создать клиента из пользовательского интерфейса QB и получить сведения (включая идентификатор) с помощью APIExplorer (который вызывает конечную точку REST клиента). Вам нужно использовать этот идентификатор клиента в вызове API создания счета. - person Manas Mukherjee; 07.03.2014
comment
Спасибо за исчерпывающий ответ. Однако что такое itemID, действительно ли он мне нужен? Я создал только клиента, и мне удалось создать новый счет через API. Почему мне не нужен itemID, есть идеи? - 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 -> элемент по адресу developer.intuit.com/apiexplorer?apiname=V3QBO#Item также нет getAll. Вы имеете в виду запрос с select * from Item? - person アレックス; 12.03.2014
comment
да исправить. Пожалуйста, используйте конечную точку запроса. Я хотел сказать это со стороны devkit. Он имеет оболочку вроде findAll/getAll поверх конечной точки запроса. - person Manas Mukherjee; 12.03.2014
comment
пожалуйста, еще один вопрос. Я не нашел, как указать имя для товара и счета. Возможно ли это и как? - person アレックス; 15.03.2014
comment
упс, на самом деле имя для элемента существует. - person アレックス; 15.03.2014
comment
Вам не нужно указывать ссылку на элемент, однако по умолчанию QBO будет использовать один из элементов в вашей учетной записи (самый низкий идентификатор QB?), когда транзакция будет завершена. - person Minimul; 01.04.2014