【问题标题】:Add Sales Tax Item using QBFC使用 QBFC 添加销售税项目
【发布时间】:2023-12-24 19:28:01
【问题描述】:

有没有办法使用 QBFC 添加销售税项目?

示例: 销售税 A 4%

营业税 B 10%

我可以从 Quickbooks 轻松添加它,但我需要一种使用 QBFC 从外部应用程序添加的方法。

任何帮助将不胜感激。

【问题讨论】:

    标签: quickbooks intuit-partner-platform qbfc


    【解决方案1】:

    您可以在On Screen Reference 中找到一个很好的示例。

    在屏幕顶部,从“选择消息”下拉列表中选择 ItemSalesTaxAdd。从那里单击 C# 选项卡,您将看到以下示例代码:

    //The following sample code is generated as an illustration of
    //Creating requests and parsing responses ONLY
    //This code is NOT intended to show best practices or ideal code
    //Use at your most careful discretion
    
    using System;
    using System.Net;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.IO;
    using Interop.QBFC10;
    
    namespace com.intuit.idn.samples
    {
        public class Sample
        {
            public void DoItemSalesTaxAdd()
            {
                bool sessionBegun = false;
                bool connectionOpen = false;
                QBSessionManager sessionManager = null;
    
                try
                {
                    //Create the session Manager object
                    sessionManager = new QBSessionManager();
    
                    //Create the message set request object to hold our request
                    IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("US",1,.0);
                    requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
    
                    BuildItemSalesTaxAddRq(requestMsgSet);
    
                    //Connect to QuickBooks and begin a session
                    sessionManager.OpenConnection("","Sample Code from OSR");
                    connectionOpen = true;
                    sessionManager.BeginSession("", ENOpenMode.omDontCare);
                    sessionBegun = true;
    
                    //Send the request and get the response from QuickBooks
                    IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
    
                    //End the session and close the connection to QuickBooks
                    sessionManager.EndSession();
                    sessionBegun = false;
                    sessionManager.CloseConnection();
                    connectionOpen = false;
    
                    WalkItemSalesTaxAddRs(responseMsgSet);
    
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Error");
                    if (sessionBegun)
                    {
                        sessionManager.EndSession();
                    }
                    if (connectionOpen)
                    {
                        sessionManager.CloseConnection();
                    }
                }
            }
    
    
            void BuildItemSalesTaxAddRq(IMsgSetRequest requestMsgSet)
            {
                IItemSalesTaxAdd ItemSalesTaxAddRq= requestMsgSet.AppendItemSalesTaxAddRq();
                //Set field value for Name
                ItemSalesTaxAddRq.Name.SetValue("ab");
                //Set field value for BarCodeValue
                ItemSalesTaxAddRq.BarCode.BarCodeValue.SetValue("ab");
                //Set field value for AssignEvenIfUsed
                ItemSalesTaxAddRq.BarCode.AssignEvenIfUsed.SetValue(true);
                //Set field value for AllowOverride
                ItemSalesTaxAddRq.BarCode.AllowOverride.SetValue(true);
                //Set field value for IsActive
                ItemSalesTaxAddRq.IsActive.SetValue(true);
                //Set field value for ListID
                ItemSalesTaxAddRq.ClassRef.ListID.SetValue("200000-1011023419");
                //Set field value for FullName
                ItemSalesTaxAddRq.ClassRef.FullName.SetValue("ab");
                //Set field value for ItemDesc
                ItemSalesTaxAddRq.ItemDesc.SetValue("ab");
                //Set field value for TaxRate
                ItemSalesTaxAddRq.TaxRate.SetValue(20.00);
                //Set field value for ListID
                ItemSalesTaxAddRq.TaxVendorRef.ListID.SetValue("200000-1011023419");
                //Set field value for FullName
                ItemSalesTaxAddRq.TaxVendorRef.FullName.SetValue("ab");
                //Set field value for ExternalGUID
                ItemSalesTaxAddRq.ExternalGUID.SetValue(Guid.NewGuid().ToString());
                //Set field value for IncludeRetElementList
                //May create more than one of these if needed
                ItemSalesTaxAddRq.IncludeRetElementList.Add("ab");
            }
    
    
            void WalkItemSalesTaxAddRs(IMsgSetResponse responseMsgSet)
            {
                if (responseMsgSet == null) return;
    
                IResponseList responseList = responseMsgSet.ResponseList;
                if (responseList == null) return;
    
                //if we sent only one request, there is only one response, we'll walk the list for this sample
                for (int i=0; i<responseList.Count; i++)
                {
                    IResponse response = responseList.GetAt(i);
                    //check the status code of the response, 0=ok, >0 is warning
                    if (response.StatusCode >= 0)
                    {
                        //the request-specific response is in the details, make sure we have some
                        if (response.Detail != null)
                        {
                            //make sure the response is the type we're expecting
                            ENResponseType responseType = (ENResponseType)response.Type.GetValue();
                            if (responseType == ENResponseType.rtItemSalesTaxAddRs)
                            {
                                //upcast to more specific type here, this is safe because we checked with response.Type check above
                                IItemSalesTaxRet ItemSalesTaxRet = (IItemSalesTaxRet)response.Detail;
                                WalkItemSalesTaxRet(ItemSalesTaxRet);
                            }
                        }
                    }
                }
            }
    
    
            void WalkItemSalesTaxRet(IItemSalesTaxRet ItemSalesTaxRet)
            {
                if (ItemSalesTaxRet == null) return;
    
                //Go through all the elements of IItemSalesTaxRet
                //Get value of ListID
                string ListID1 = (string)ItemSalesTaxRet.ListID.GetValue();
                //Get value of TimeCreated
                DateTime TimeCreated2 = (DateTime)ItemSalesTaxRet.TimeCreated.GetValue();
                //Get value of TimeModified
                DateTime TimeModified3 = (DateTime)ItemSalesTaxRet.TimeModified.GetValue();
                //Get value of EditSequence
                string EditSequence4 = (string)ItemSalesTaxRet.EditSequence.GetValue();
                //Get value of Name
                string Name5 = (string)ItemSalesTaxRet.Name.GetValue();
                //Get value of BarCodeValue
                if (ItemSalesTaxRet.BarCodeValue != null)
                {
                    string BarCodeValue6 = (string)ItemSalesTaxRet.BarCodeValue.GetValue();
                }
                //Get value of IsActive
                if (ItemSalesTaxRet.IsActive != null)
                {
                    bool IsActive7 = (bool)ItemSalesTaxRet.IsActive.GetValue();
                }
                if (ItemSalesTaxRet.ClassRef != null)
                {
                    //Get value of ListID
                    if (ItemSalesTaxRet.ClassRef.ListID != null)
                    {
                        string ListID8 = (string)ItemSalesTaxRet.ClassRef.ListID.GetValue();
                    }
                    //Get value of FullName
                    if (ItemSalesTaxRet.ClassRef.FullName != null)
                    {
                        string FullName9 = (string)ItemSalesTaxRet.ClassRef.FullName.GetValue();
                    }
                }
                //Get value of ItemDesc
                if (ItemSalesTaxRet.ItemDesc != null)
                {
                    string ItemDesc10 = (string)ItemSalesTaxRet.ItemDesc.GetValue();
                }
                //Get value of TaxRate
                if (ItemSalesTaxRet.TaxRate != null)
                {
                    double TaxRate11 = (double)ItemSalesTaxRet.TaxRate.GetValue();
                }
                if (ItemSalesTaxRet.TaxVendorRef != null)
                {
                    //Get value of ListID
                    if (ItemSalesTaxRet.TaxVendorRef.ListID != null)
                    {
                        string ListID12 = (string)ItemSalesTaxRet.TaxVendorRef.ListID.GetValue();
                    }
                    //Get value of FullName
                    if (ItemSalesTaxRet.TaxVendorRef.FullName != null)
                    {
                        string FullName13 = (string)ItemSalesTaxRet.TaxVendorRef.FullName.GetValue();
                    }
                }
                //Get value of ExternalGUID
                if (ItemSalesTaxRet.ExternalGUID != null)
                {
                    string ExternalGUID14 = (string)ItemSalesTaxRet.ExternalGUID.GetValue();
                }
                if (ItemSalesTaxRet.DataExtRetList != null)
                {
                    for (int i15 = 0; i15 < ItemSalesTaxRet.DataExtRetList.Count; i15++)
                    {
                        IDataExtRet DataExtRet = ItemSalesTaxRet.DataExtRetList.GetAt(i15);
                        //Get value of OwnerID
                        if (DataExtRet.OwnerID != null)
                        {
                            string OwnerID16 = (string)DataExtRet.OwnerID.GetValue();
                        }
                        //Get value of DataExtName
                        string DataExtName17 = (string)DataExtRet.DataExtName.GetValue();
                        //Get value of DataExtType
                        ENDataExtType DataExtType18 = (ENDataExtType)DataExtRet.DataExtType.GetValue();
                        //Get value of DataExtValue
                        string DataExtValue19 = (string)DataExtRet.DataExtValue.GetValue();
                    }
                }
            }
    
    
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以将每个税项添加为行项目。确保将发票设置为 0 税,因此税不会在税的基础上计算。

      您需要支付订单项销售税 A 和另一个订单项销售税 B。

      【讨论】: