1

注文と支払いのデータを Magento から Quickbooks デスクトップ バージョンにインポートしています。以下に 2 つのクエリを示します。これらは正常な応答を返しますが、データはインポートされません。何かアイデアはありますか?

まず、注文スタックを形成するためのクエリを作成します

$qb_order = new QuickBooks_IPP_Object_Invoice();

        $qb_meta = new QuickBooks_IPP_Object_MetaData();
        $qb_meta->setCreateTime($order->getCreatedAt());
        $qb_meta->setLastUpdatedTime($order->getUpdatedAt());
        $qb_order->setMetaData($qb_meta);

        $qb_header = new QuickBooks_IPP_Object_Header();
        $qb_header->setDocNumber($order->getIncrementId());
        if (!$qb_customer_id = $this->_getQbCustomerId($order->getCustomerId())) return false;
        $qb_header->setCustomerId($qb_customer_id);
        $qb_header->setShipDate($order->getDeliveryDate());
        $qb_header->setSubTotalAmt($order->getBaseSubtotal());
        $qb_header->setTaxAmt($order->getBaseTaxAmount());
        $qb_header->setTotalAmt($order->getBaseGrandTotal());
        $qb_header->setARAccountId("Accounts Receivable");

        if ($address = $order->getBillingAddress()) {
            $qb_header->setBillAddr($this->_convertAddress($address, "Billing"));
        }

        if ($address = $order->getShippingAddress()) {
            $qb_header->setShipAddr($this->_convertAddress($address, "Shipping"));
        }

        $qb_header->setDiscountAmt($order->getBaseDiscountAmount());
        $qb_order->setHeader($qb_header);

        foreach($order->getItemsCollection() as $item) {
            $qb_order->addLine($this->_convertOrderItem($item));
    }

クエリの後に形成される XML は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<Add xmlns="http://www.intuit.com/sb/cdm/v2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    RequestId="4562cdf8407178e362082c0441dffa74" 
    xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ./RestDataFilter.xsd ">
    <OfferingId>ipp</OfferingId>
    <ExternalRealmId>631645715</ExternalRealmId>
    <Object xsi:type="Invoice">
        <Header>
            <DocNumber>100001570</DocNumber>
            <CustomerId>103699</CustomerId>
            <ShipDate>2013-02-21</ShipDate>
            <SubTotalAmt>33.0000</SubTotalAmt>
            <TaxAmt>2.6400</TaxAmt>
            <TotalAmt>35.64</TotalAmt>
            <ARAccountId>Accounts Receivable</ARAccountId>
            <BillAddr>
                <Line1>⁣&lt;/Line1>
                <Line2></Line2>
                <Line3></Line3>
                <Line4></Line4>
                <City>⁣&lt;/City>
                <Country>⁣&lt;/Country>
                <CountrySubDivisionCode>⁣&lt;/CountrySubDivisionCode>
                <PostalCode>⁣&lt;/PostalCode>
                <Tag>Billing</Tag>
            </BillAddr>
            <ShipAddr>
                <Line1>⁣&lt;/Line1>
                <Line2></Line2>
                <Line3></Line3>
                <Line4></Line4>
                <City>⁣&lt;/City>
                <Country>⁣&lt;/Country>
                <CountrySubDivisionCode>⁣&lt;/CountrySubDivisionCode>
                <PostalCode>⁣&lt;/PostalCode>
                <Tag>Shipping</Tag>
            </ShipAddr>
            <DiscountAmt>0.0000</DiscountAmt>
        </Header>
        <Line>
            <Desc>Special Product For POS
sdf</Desc>
            <Amount>33.0000</Amount>
            <ItemType>Product</ItemType>
            <UnitPrice>33.0000</UnitPrice>
            <Qty>1</Qty>
        </Line>
    </Object>
</Add>

サーバーの応答は次のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
  <Success RequestId="4562cdf8407178e362082c0441dffa74">
    <ObjectRef>
      <Id idDomain="NG">494527</Id>
      <SyncToken>1</SyncToken>
      <LastUpdatedTime>2013-02-21T05:44:12Z</LastUpdatedTime>
    </ObjectRef>
    <RequestName>InvoiceAdd</RequestName>
    <ProcessedTime>2013-02-21T05:44:12Z</ProcessedTime>
  </Success>
</RestResponse>

================================================== ===============

注文に対する支払いを作成するためのコードの 2 番目のセットを次に示します。再び同じ問題、XML は成功したがデータはインポートされなかった:

$order = Mage::getModel("sales/order")->load($invoice->getOrderId());
        if (!$qb_order_id = $this->getHelper()->getObjectQbId($order)) return false;
        $qb_payment = new QuickBooks_IPP_Object_Payment();

        $qb_meta = new QuickBooks_IPP_Object_MetaData();
        $qb_meta->setCreateTime($invoice->getCreatedAt());
        $qb_meta->setLastUpdatedTime($invoice->getUpdatedAt());
        $qb_payment->setMetaData($qb_meta);

        $qb_header = new QuickBooks_IPP_Object_Header();
        $qb_header->setDocNumber($invoice->getIncrementId());
        $qb_header->setTxnDate($invoice->getCreatedAt());
        if (!$qb_customer_id = $this->_getQbCustomerId($order->getCustomerId())) return false;
        $qb_header->setCustomerId($qb_customer_id);
        $qb_header->setTotalAmt($invoice->getBaseGrandTotal());
        $qb_header->setProcessPayment('false');

        $qb_payment->setHeader($qb_header);

        $qb_line = new QuickBooks_IPP_Object_Line();
        $qb_line->setAmount($invoice->getBaseGrandTotal());
        $qb_line->setTxnId($qb_order_id);
        $qb_payment->addLine($qb_line);

以下は、コードの後に​​形成される XML です。

<?xml version="1.0" encoding="UTF-8"?>
<Add xmlns="http://www.intuit.com/sb/cdm/v2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    RequestId="dc07317b838eb3d0c89e310b4984468a" 
    xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ./RestDataFilter.xsd ">
    <OfferingId>ipp</OfferingId>
    <ExternalRealmId>631645715</ExternalRealmId>
    <Object xsi:type="Payment">
        <Header>
            <DocNumber>100000265</DocNumber>
            <TxnDate>2013-02-21</TxnDate>
            <CustomerId>103699</CustomerId>
            <TotalAmt>35.64</TotalAmt>
            <ProcessPayment>false</ProcessPayment>
        </Header>
        <Line>
            <Amount>35.6400</Amount>
            <TxnId>494527</TxnId>
        </Line>
    </Object>
</Add>

サーバーからの回答は次のとおりです。

<?xml version="1.0" ?>
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
  <Success RequestId="dc07317b838eb3d0c89e310b4984468a">
    <ObjectRef>
      <Id idDomain="NG">494529</Id>
      <SyncToken>1</SyncToken>
      <LastUpdatedTime>2013-02-21T05:48:07Z</LastUpdatedTime>
    </ObjectRef>
    <RequestName>PaymentAdd</RequestName>
    <ProcessedTime>2013-02-21T05:48:07Z</ProcessedTime>
  </Success>
</RestResponse>
4

1 に答える 1

1

まず、明確にするために、正しいプラットフォーム用に構築していることを確認してください - Intuit FAQ (2013 年 2 月現在) によると、これがあなたの会社のためだけの内部統合である場合、Intuit Anywhere/ を使用するべきではありません。 IPP。よくある質問から:

Q: カスタム (非 SaaS、シングルテナント) ソリューションを Intuit Anywhere と統合したいと考えています。これはできますか?

A: 現在ではありませんが、検討中です。

ちなみに、QuickBooks for Windows との内部統合の場合、Web Connector は Intuit Anywhere よりもはるかに信頼性が高く、トラブルシューティングが容易です。

とはいえ...あなたの問題は、おそらくあなたが言及している(そうではない)項目に関連している可能性があります。QuickBooks では、すべての項目が QuickKBooks の特定の項目レコードに関連付けられています (GUI の [項目名/SKU] ドロップダウンです)。

ただし、広告申込情報は次のようになります。

  <Line>
    <Desc>Special Product For POS sdf</Desc>
    <Amount>33.0000</Amount>
    <ItemType>Product</ItemType>
    <UnitPrice>33.0000</UnitPrice>
    <Qty>1</Qty>
   </Line>

アイテムの「タイプ」のみを参照してください (例: 「在庫」、「製品」、「サービス」など)。

各項目に次のいずれかのタグを付ける必要があります。

<ItemName>Your QuickBooks Item Name</ItemName>

または:

<ItemId>123</ItemId>

ドキュメントや Web に出回っているQuickBooks IDS/Intuit Anywhere の例を見ると、すべての項目で ItemName または ItemId が使用されていることがわかります。

また、より多くの情報が得られるように、ライト バック エラーをフェッチする方法を調べることもできます (PHP DevKit には現在、これらのエラーをフェッチするためのネイティブ メソッドがないことに注意してください。ただし、これは私たちが取り組んでいるものです) - さらにサポートが必要な場合は、私に連絡してください)。

于 2013-02-21T12:27:10.340 に答える