C#QuickBooks无法添加支票
我正在尝试添加使用C#将佣金从我的系统转移到QuickBooks的功能,除了添加支票请求之外,我已经有了一整套功能。目前,我得到了这个输出 选中添加 ExpenseLineAddList: 元素(2)-所需对象为空 ExpenseLineAddList结束 检查结束添加 这是代码。不幸的是,它有点长,但这正是围绕必要位的东西C#QuickBooks无法添加支票,c#,quickbooks,C#,Quickbooks,我正在尝试添加使用C#将佣金从我的系统转移到QuickBooks的功能,除了添加支票请求之外,我已经有了一整套功能。目前,我得到了这个输出 选中添加 ExpenseLineAddList: 元素(2)-所需对象为空 ExpenseLineAddList结束 检查结束添加 这是代码。不幸的是,它有点长,但这正是围绕必要位的东西 MySql.Data.MySqlClient.MySqlConnection CheckConn = new MySql.Data.MySqlCli
MySql.Data.MySqlClient.MySqlConnection CheckConn = new MySql.Data.MySqlClient.MySqlConnection();
MySqlCommand CheckCmd = new MySqlCommand();
CheckConn.ConnectionString = myConnectionString;
CheckConn.Open();
CheckCmd.Connection = CheckConn;
CheckCmd.CommandText = "select `companies`.`ParentCompanyName`, `DateTimeStart`, `DateTimeEnd` from `commissiontransfers` join `orders` using (`InvoiceID`) join `companies` using (`CompanyID`) where `Transfered`=0 group by `ParentCompanyName`;";
MySqlDataReader CheckReader = CheckCmd.ExecuteReader();
DataTable Checks;
using (CheckReader)
{
Checks = new System.Data.DataTable();
Checks.Load(CheckReader);
}
CheckReader.Close();
CheckReader.Dispose();
CheckConn.Close();
CheckConn.Dispose();
foreach (DataRow Check in Checks.Rows)
{
IMsgSetRequest AddCheckMsgSet = sessionManager.CreateMsgSetRequest("US", 8, 0);
AddCheckMsgSet.Attributes.OnError = ENRqOnError.roeContinue;
ICheckAdd CheckAddRq = AddCheckMsgSet.AppendCheckAddRq();
CheckAddRq.AccountRef.FullName.SetValue("Bank Account");
CheckAddRq.PayeeEntityRef.FullName.SetValue(Convert.ToString(Check["ParentCompanyName"]));
CheckAddRq.Memo.SetValue("Date Range: From " + Convert.ToDateTime(Check["DateTimeStart"]).ToString("MM/dd/yyyy") + " to " + Convert.ToDateTime(Check["DateTimeEnd"]).ToString("MM/dd/yyyy"));
CheckAddRq.IsToBePrinted.SetValue(true);
MySql.Data.MySqlClient.MySqlConnection CommissionTransferConn = new MySql.Data.MySqlClient.MySqlConnection();
MySqlCommand CommissionTransferCmd = new MySqlCommand();
CommissionTransferConn.ConnectionString = myConnectionString;
CommissionTransferConn.Open();
CommissionTransferCmd.Connection = CommissionTransferConn;
CommissionTransferCmd.CommandText = "select `CommissionTransferID`, round(`OrderCommission`-`FactoryCommission`-`ShippingCommission`, 2) `Total`, `orders`.`DateTimePaid`, `companies`.`OldQBName`, `orders`.`Customer` from `commissiontransfers` join `orders` using (`InvoiceID`) join `companies` using (`CompanyID`) where `Transfered`=0;";
MySqlDataReader CommissionTransferReader = CommissionTransferCmd.ExecuteReader();
DataTable CommissionTransfers;
using (CommissionTransferReader)
{
CommissionTransfers = new System.Data.DataTable();
CommissionTransfers.Load(CommissionTransferReader);
}
CommissionTransferReader.Close();
CommissionTransferReader.Dispose();
CommissionTransferConn.Close();
CommissionTransferConn.Dispose();
foreach (DataRow CommissionTransfer in CommissionTransfers.Rows)
{
IExpenseLineAdd ExpenseLineAdd = CheckAddRq.ExpenseLineAddList.Append();
ExpenseLineAdd = CheckAddRq.ExpenseLineAddList.Append();
ExpenseLineAdd.AccountRef.FullName.SetValue("Contract Labor:1099's");
ExpenseLineAdd.Amount.SetValue(Convert.ToDouble(CommissionTransfer["Total"]));
ExpenseLineAdd.Memo.SetValue(Convert.ToString(CommissionTransfer["Customer"]) + " - " + Convert.ToDateTime(CommissionTransfer["DateTimePaid"]).ToString("MM/dd/yyyy"));
ExpenseLineAdd.ClassRef.FullName.SetValue(Convert.ToString(CommissionTransfer["OldQBName"]));
GetFirstRow("update `commissiontransfers` set `Transfered`=1 where `CommissionTransferID`='" + CommissionTransfer["CommissionTransferID"] + "';");
}
CheckAddRq.IncludeRetElementList.Add("TxnID");
try {
IMsgSetResponse CheckResponseMsgSet = sessionManager.DoRequests(AddCheckMsgSet);
IResponse CheckResponse = CheckResponseMsgSet.ResponseList.GetAt(0);
MessageBox.Show(CheckResponse.StatusCode + ": " + CheckResponse.StatusMessage);
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
看起来好像我的
AddCheckMsgSet
变量是空的,但我一辈子都搞不清楚为什么会是空的。非常感谢您的帮助 当然,我花了三个小时来解决这个问题,然后在我把它发布到这里之后,我自己解决了它。嗯,问题与这些线路有关
IExpenseLineAdd ExpenseLineAdd = CheckAddRq.ExpenseLineAddList.Append();
ExpenseLineAdd = CheckAddRq.ExpenseLineAddList.Append();
我所需要做的就是去掉第二行,因为我已经追加了一个新的费用行,第二次追加导致第一个请求为空。希望这对将来的人有所帮助,因为我只在尝试连接QuickBooks时遇到问题