2017-05-23 50 views
0

我正在嘗試創建Quickbooks Online(QBO)發票。我可以在QBO中創建發票,但金額和餘額設置爲0.00。我已確認發送給QBO的發票(QBOInvoice)包含正確的信息,但是我收到的發票(resultInvoice)沒有規定的金額和餘額。Quickbooks Online不正確保存發票

任何指導或建議?謝謝。

    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; 
+0

發送您發送給QuickBooks的實際XML或JSON。 –

回答

0

我想出了問題所在。我傳遞了QBO公司中不存在的SalesItemLineDetail值。所以我沒有發送正確的值。但...

該API簡單地悄悄地改變了發票餘額和總金額,然後接受了新的發票。

在我看來,QBO API應該已經阻止了操作,發出了警告,或者不會覆蓋所提供的發票餘額和總額。

我用Intuit登錄了一張支持票,並提供了這個問題和解決方案。