C# Quickbooks Online未正确保存发票
我正在尝试创建Quickbooks Online(QBO)发票。我可以在QBO中创建发票,但是金额和余额设置为0.00。我已确认,我传递给QBO的发票(QBOInvoice)包含正确的信息,但是,我收到的发票(resultInvoice)没有规定的金额和余额 有什么指导或建议吗?谢谢C# Quickbooks Online未正确保存发票,c#,winforms,quickbooks-online,C#,Winforms,Quickbooks Online,我正在尝试创建Quickbooks Online(QBO)发票。我可以在QBO中创建发票,但是金额和余额设置为0.00。我已确认,我传递给QBO的发票(QBOInvoice)包含正确的信息,但是,我收到的发票(resultInvoice)没有规定的金额和余额 有什么指导或建议吗?谢谢 Invoice QBOinvoice = new Invoice(); QBOinvoice.DocNumber = Guid.NewGuid
Invoice QBOinvoice = new Invoice();
QBOinvoice.DocNumber = Guid.NewGuid().ToString("N").Substring(0, 10);
QBOinvoice.Deposit = new Decimal(0.00);
QBOinvoice.DepositSpecified = true;
QBOinvoice.AllowIPNPayment = false;
QBOinvoice.AllowIPNPaymentSpecified = true;
QBOinvoice.BillAddr = customer.BillAddr;
QBOinvoice.ShipAddr = customer.ShipAddr;
QBOinvoice.CustomerRef = new ReferenceType()
{
name = customer.DisplayName,
Value = customer.Id
};
QBOinvoice.DueDate = DateTime.UtcNow.Date;
QBOinvoice.DueDateSpecified = true;
QBOinvoice.PrintStatus = PrintStatusEnum.NotSet;
QBOinvoice.PrintStatusSpecified = true;
QBOinvoice.EmailStatus = EmailStatusEnum.NotSet;
QBOinvoice.EmailStatusSpecified = true;
var serviceRecord = db.t_CleaningRecords.Where(p => p.ID == MOSESInvoice.ServiceRecordID).Single();
QBOinvoice.ShipDate = serviceRecord.ServiceDate ?? DateTime.Parse("01/01/1900"); // Used to address the fact that the DB column allows for nulls;
QBOinvoice.ARAccountRef = new ReferenceType()
{
type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Account),
name = "Account Receivable",
Value = "QB:37"
};
QBOinvoice.Balance = MOSESInvoice.InvoiceAmount;
QBOinvoice.BalanceSpecified = true;
QBOinvoice.TotalAmt = MOSESInvoice.InvoiceAmount;
QBOinvoice.TotalAmtSpecified = true;
// Create Sales Line Item
Line invoiceline = new Line();
invoiceline.Id = "1";
//invoiceline.LineNum = "1";
invoiceline.Description = servloc.StreetAddress.ToString() + " :: " + MOSESInvoice.ServiceDescription;
//invoiceline.Description = servloc.StreetAddress.ToString() + " :: " + servdef.ServiceDefinitionName.ToString(); // This maps to Sales Definition Name & Street Address.
invoiceline.Amount = Convert.ToDecimal(MOSESInvoice.InvoiceAmount);
invoiceline.AmountSpecified = true;
invoiceline.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
invoiceline.DetailTypeSpecified = true;
SalesItemLineDetail slidetails = new SalesItemLineDetail();
slidetails.ItemRef = new ReferenceType() { name = "B2C - Every 1 Week" }; // Product/Service column on Line Item Detail. 1 = Services. 2 = Hours.
slidetails.ServiceDate = serviceRecord.ServiceDate ?? DateTime.Parse("01/01/1900");
invoiceline.AnyIntuitObject = slidetails;
QBOinvoice.Line = new Line[] { invoiceline };
Invoice resultInvoice = serviceme.Add(QBOinvoice) as Invoice;
db.SaveChanges();
return QBOinvoice;
我知道问题出在哪里了。我传递的SalesItemLineDetail值在我的QBO公司中不存在。因此,我未能发送正确的值。但是 API简单而安静地更改了发票余额和总金额,然后接受了新的发票 在我看来,QBO API应该阻止该操作、发出警告,或者不覆盖所提供的发票余额和总金额
我用Intuit记录了一张支持票,并提供了此问题和解决方案。将实际发送的XML或JSON发布到QuickBooks。