15

SalesReceipt オブジェクトを照会できます。

    public bool GetSalesReceipt(string sRefNum, string sAccount, out ISalesReceiptRet ret)
    {
        ret = null;

        IMsgSetRequest msr = sm.CreateMsgSetRequest("US", 4, 0);
        msr.Attributes.OnError = ENRqOnError.roeStop;

        ISalesReceiptQuery q = msr.AppendSalesReceiptQueryRq();
        q.metaData.SetValue(ENmetaData.mdMetaDataAndResponseData);
        q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.RefNumber.SetValue(sRefNum);
        q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains);
        q.ORTxnQuery.TxnFilter.AccountFilter.ORAccountFilter.FullNameList.Add(sAccount);
        q.IncludeLineItems.SetValue(true);

        IMsgSetResponse resp = sm.DoRequests(msr);
        if (resp.ResponseList.Count == 0)
            return false;

        IResponseList rl = resp.ResponseList;
        if (rl.Count == 1)
        {
            IResponse r = rl.GetAt(0);
            if (r.Detail == null)
                return false;

            if (r.StatusCode != 0)
                return false;

            if (r.Type.GetValue() == (short)ENResponseType.rtSalesReceiptQueryRs)
            {
                ISalesReceiptRetList crl = (ISalesReceiptRetList)r.Detail;
                if (crl.Count == 1)
                    ret = crl.GetAt(0);
            }
        }

        if (ret == null)
            return false;

        return true;
    }

SalesReceipt には、ORSalesReceiptLineRetList に SalesReceipt Lines のリストがありますが、それらのどの行も支払明細ではありません。支払いラインの SalesReceipt オブジェクトから TxnLineID を取得する方法はありません (私が見つけることができます)。

私がやろうとしているのは、SalesReceipt から特定の TxnLineID を見つけて、それをクリア済みとしてマークできるようにすることです。検索を行うと、取引行があることがわかります (クレジット カード バッチ:Visa/MC アカウントの下の行)。その特定の行の TxnLineID を見つけるにはどうすればよいですか?

qbトランザクション

これは、UI で [Cleared] 列のボックスをクリックして実行した、クリア済みとしてマークされたトランザクションを示すスクリーンショットです。

ここに画像の説明を入力

4

3 に答える 3

1

私が見ている研究から、これはおそらくあなたへの答えです:

https://idnforums.intuit.com/messageview.aspx?catid=7&threadid=12760&highlight_key=y&keyword1=TxnLineID

「("US",7,0) を使用する必要があったときに、古いバージョンの参照 ("US",1,1) で SDK を呼び出した古いコードをいくつか復活させました。」

また

https://idnforums.intuit.com/messageview.aspx?catid=7&threadid=10776

少なくとも、彼らはあなたの問題をさらに支援できるかもしれません.

それが役に立てば幸い。

于 2013-02-07T22:52:49.327 に答える
1

仕訳と販売領収書は、QuickBooksの 2 つのまったく異なるオブジェクト タイプです。

したがって、この:

Unfortunately, if the transaction I'm querying for is part of a SalesReceipt,

投稿したコード (完全にジャーナル エントリに関するもの) と組み合わせると、まったく意味がありません。

Sales Receipts を探している場合は、 Sales Receipts を照会する必要があります。Journal Entries を探している場合は、 Journal Entries を照会する必要があります。一方を照会することはできず、もう一方が返されることを期待できません。

于 2013-02-11T12:31:59.477 に答える
1

私の理解では、売上領収書には個別の支払い明細がありません。請求書を使用すると、明細を含む支払いを後で受け取ることができますが、販売領収書を使用すると、支払いはすでに行われているため、情報は販売領収書自体の一部として取得されます。スクリーンショットに表示されている支払い明細行は、領収書に保存されている情報から生成されます。

これは、売上領収書が単一の支払い方法しか許可しない理由と、分割支払いができない理由も説明します。売上領収書の全額が受領されたと見なされるため、支払い方法自体に関する情報のみが保存されます。

返された ;のPaymentMethodRefCheckNumberDepositToAccountRefおよびCreditCardTxnInfoプロパティを見てください。ISalesReceiptRet私が見つけた最も近いリンク可能なドキュメントは、 Sales Receipt を追加するためのものですが、利用可能なプロパティを一覧表示するにはそれで十分なはずです (彼らのOSR ツールはよりきれいですが、特定の結果セットにリンクする方法を提供しません)。

Interop.QBFC5Lib.dllReflector (またはお好みの同等のもの) で調べることも役立つ場合があります。私にとっては、公式ドキュメントを調べようとするよりも速いことがよくありました。


TxnLineID を使用して支払明細を決済済みとしてマークしたいというのは、何を意味しているのかわかりません。領収書に未決済残高が表示されているということであれば、これは既知の問題のようです。

または、クレジット カード トランザクションのステータスを確認したい場合は、 のResultCodeおよびResultMessageプロパティを参照できますISalesReceiptRet.CreditCardTxnInfo.CreditCardTxnResultInfo

クレジット カードによる支払いがある領収書の変更には、いくつかの制限があることに注意してください。プログラマーズガイドから:

元の SalesReceipt で使用される支払方法がクレジット カードであり、qbmsXML 要求および応答を介して QBMS によって提供されるクレジット カード取引データを使用する場合、顧客、支払方法、または明細項目の変更を含む合計取引金額を変更することはできません。それは取引の合計金額を変更します。


更新:私のテストでは、領収書をクリアするときに TxnLineID は必要ないようです。あなたのコードから続けて、一度入力したらret、次はあなたが望むことをするはずです:

msr.ClearRequests();

IClearedStatusMod csm = msr.AppendClearedStatusModRq();
csm.TxnID.SetValue(ret.TxnID.GetValue());
// Leave TxnLineID null
csm.ClearedStatus.SetValue(ENClearedStatus.csCleared);

resp = sm.DoRequests(msr);
// Confirm status here
于 2013-02-19T18:53:24.687 に答える