public static Line ToIppInvoiceLine(this Models.Services.QuickBooksOnlineServicesSdk.CreateInvoice.Line line) { var ippInvoiceLine = new Line(); var lineDetail = new SalesItemLineDetail() { Qty = line.Qty, QtySpecified = true, ItemRef = new ReferenceType() { Value = line.ItemValue, name = line.ItemName }, ItemElementName = ItemChoiceType.UnitPrice, AnyIntuitObject = line.UnitPrice, }; ippInvoiceLine.AnyIntuitObject = lineDetail; ippInvoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; ippInvoiceLine.DetailTypeSpecified = true; ippInvoiceLine.Amount = line.UnitPrice * line.Qty; ippInvoiceLine.AmountSpecified = true; return(ippInvoiceLine); }
/// <summary> /// Create Invoice /// </summary> /// <param name="context"></param> /// <param name="customer"></param> /// <returns>invoice</returns> public static Invoice InvoiceCreate(ServiceContext context, Customer customer) { Item item = QBOHelper.QBO.ItemCreate(context); Line line = new Line { DetailType = LineDetailTypeEnum.SalesItemLineDetail, DetailTypeSpecified = true, Description = "Sample for Reimburse Charge with Invoice.", Amount = new Decimal(40), AmountSpecified = true }; SalesItemLineDetail lineDetail = new SalesItemLineDetail { ItemRef = new ReferenceType { name = item.Name, Value = item.Id } }; line.AnyIntuitObject = lineDetail; Line[] lines = { line }; Invoice invoice = new Invoice { Line = lines, CustomerRef = new ReferenceType { name = customer.DisplayName, Value = customer.Id }, TxnDate = DateTime.Now.Date }; Invoice apiResponse = QBOHelper.Helper.AddToQBO(context, invoice); return(apiResponse); }
internal static Invoice CreateInvoice(DataService dataService, QueryService <Account> queryService, Customer customer) { Item item = ItemCreate(dataService, queryService); Line line = new Line { DetailType = LineDetailTypeEnum.SalesItemLineDetail, DetailTypeSpecified = true, Description = "Sample for Reimburse Charge with Invoice.", Amount = new Decimal(40), AmountSpecified = true }; SalesItemLineDetail lineDetail = new SalesItemLineDetail { ItemRef = new ReferenceType { name = item.Name, Value = item.Id } }; line.AnyIntuitObject = lineDetail; Line[] lines = { line }; Invoice invoice = new Invoice { Line = lines, CustomerRef = new ReferenceType { name = customer.DisplayName, Value = customer.Id }, TxnDate = DateTime.Now.Date }; Invoice response = dataService.Add(invoice); return(response); }
/// <summary> /// Test QBO api call /// </summary> public async System.Threading.Tasks.Task QboApiCall() { //try //{ // if ((dictionary.ContainsKey("accessToken")) && (dictionary.ContainsKey("realmId"))) // { // Output("Making QBO API Call."); OAuth2RequestValidator oauthValidator = new OAuth2RequestValidator(dictionary["accessToken"]); ServiceContext context = new ServiceContext(dictionary["realmId"], IntuitServicesType.QBO, oauthValidator); context.IppConfiguration.BaseUrl.Qbo = "https://sandbox-quickbooks.api.intuit.com/"; // //serviceContext.IppConfiguration.BaseUrl.Qbo = "https://quickbooks.api.intuit.com/";//prod context.IppConfiguration.MinorVersion.Qbo = "62"; //context.IppConfiguration.Logger.RequestLog.EnableRequestResponseLogging = //context.IppConfiguration.Logger.RequestLog.ServiceRequestLoggingLocation = @"C:\Documents\Serilog_log"; CLogger cu = new CLogger(); context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.CustomLogger = cu.GetCustomLogger(); //context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.EnableSerilogRequestResponseLoggingForRollingFile = true; //context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.EnableSerilogRequestResponseLoggingForConsole = true; //context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.EnableSerilogRequestResponseLoggingForTrace = true; //context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.EnableSerilogRequestResponseLoggingForDebug = true; //context.IppConfiguration.AdvancedLogger.RequestAdvancedLog.ServiceRequestLoggingLocationForFile = @"C:\Documents\Serilog_log"; QueryService <Invoice> in2 = new QueryService <Invoice>(context); var inn22 = in2.ExecuteIdsQueryForCount("Select * From Invoice"); var inn23 = in2.ExecuteIdsQueryForCount("Select count(*) From Invoice"); var inn24 = in2.ExecuteIdsQueryForCount("Select * From Invoice where Id='27' StartPosition 1 MaxResults 1"); QueryService <Invoice> in1 = new QueryService <Invoice>(context); var inn2 = in1.ExecuteIdsQuery("Select * From Invoice").ToList(); Invoice inn1 = in1.ExecuteIdsQuery("Select * From Invoice where Id='27' StartPosition 1 MaxResults 1").First(); QueryService <ReimburseCharge> rb1 = new QueryService <ReimburseCharge>(context); var rb2 = rb1.ExecuteIdsQuery("Select * From ReimburseCharge").ToList(); ReimburseCharge rbb1 = rb1.ExecuteIdsQuery("Select * From ReimburseCharge StartPosition 1 MaxResults 1").First(); QueryService <RecurringTransaction> re1 = new QueryService <RecurringTransaction>(context); RecurringTransaction r1 = re1.ExecuteIdsQuery("Select * From RecurringTransaction StartPosition 1 MaxResults 1").First(); DataService dataService = new DataService(context); //List<Intuit.Ipp.Data.IEntity> entityList1 = new List<Intuit.Ipp.Data.IEntity>(); //entityList1.Add(new Intuit.Ipp.Data.Customer()); //DateTimeOffset do1 = new DateTimeOffset(2020, 7, 1, 4, 29, 52, new TimeSpan(-7, 0, 0)); //var CDCResponse1 = dataService.CDC(entityList1, do1.LocalDateTime).entities; //Customer cust = new Customer(); //cust.DisplayName = "memo11"; //Batch batch = dataService.CreateNewBatch(); //batch.Add(cust, "CreateCustomer", OperationEnum.create); //batch.Add("select * from Customer", "CustomerQuery"); //batch.Execute(); //RecurringTransaction recur1 = new RecurringTransaction(); //Invoice inv1 = new Invoice(); //inv1.Id = r1.AnyIntuitObject.Id; //inv1.SyncToken = r1.AnyIntuitObject.SyncToken; //recur1.AnyIntuitObject = inv1; //var s = dataService.Delete(recur1); RecurringTransaction recur = new RecurringTransaction(); //Find Customer QueryService <Customer> customerQueryService = new QueryService <Customer>(context); Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault <Customer>(); //Find Tax Code for Invoice - Searching for a tax code named 'StateSalesTax' in this example QueryService <TaxCode> stateTaxCodeQueryService = new QueryService <TaxCode>(context); TaxCode stateTaxCode = stateTaxCodeQueryService.ExecuteIdsQuery("Select * From TaxCode StartPosition 1 MaxResults 1").FirstOrDefault <TaxCode>(); //Find Account - Accounts Receivable account required QueryService <Account> accountQueryService = new QueryService <Account>(context); Account account = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Accounts Receivable' StartPosition 1 MaxResults 1").FirstOrDefault <Account>(); //Find Item QueryService <Item> itemQueryService = new QueryService <Item>(context); Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault <Item>(); //Find Term QueryService <Term> termQueryService = new QueryService <Term>(context); Term term = termQueryService.ExecuteIdsQuery("Select * From Term StartPosition 1 MaxResults 1").FirstOrDefault <Term>(); Invoice invoice = new Invoice(); //SalesReceipt invoice = new SalesReceipt(); //DocNumber - QBO Only, otherwise use DocNumber invoice.AutoDocNumber = true; invoice.AutoDocNumberSpecified = true; //TxnDate invoice.TxnDate = DateTime.Now.Date; invoice.TxnDateSpecified = true; //PrivateNote invoice.PrivateNote = "This is a private note"; //Line Line invoiceLine = new Line(); //Line Description invoiceLine.Description = "Invoice line description."; //Line Amount invoiceLine.Amount = 330m; invoiceLine.AmountSpecified = true; //Line Detail Type invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; invoiceLine.DetailTypeSpecified = true; //Line Sales Item Line Detail SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); //Line Sales Item Line Detail - ItemRef lineSalesItemLineDetail.ItemRef = new ReferenceType() { name = item.Name, Value = item.Id }; //Line Sales Item Line Detail - UnitPrice lineSalesItemLineDetail.AnyIntuitObject = 33m; lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; //Line Sales Item Line Detail - Qty lineSalesItemLineDetail.Qty = 10; lineSalesItemLineDetail.QtySpecified = true; //Line Sales Item Line Detail - TaxCodeRef //For US companies, this can be 'TAX' or 'NON' lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() { Value = "NON" }; //Line Sales Item Line Detail - ServiceDate //lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date; //lineSalesItemLineDetail.ServiceDateSpecified = true; //Assign Sales Item Line Detail to Line Item invoiceLine.AnyIntuitObject = lineSalesItemLineDetail; //Assign Line Item to Invoice invoice.Line = new Line[] { invoiceLine }; //TxnTaxDetail TxnTaxDetail txnTaxDetail = new TxnTaxDetail(); txnTaxDetail.TxnTaxCodeRef = new ReferenceType() { name = stateTaxCode.Name, Value = stateTaxCode.Id }; //Line taxLine = new Line(); //taxLine.DetailType = LineDetailTypeEnum.TaxLineDetail; //TaxLineDetail taxLineDetail = new TaxLineDetail(); ////Assigning the fist Tax Rate in this Tax Code //taxLineDetail.TaxRateRef = stateTaxCode.SalesTaxRateList.TaxRateDetail[0].TaxRateRef; //taxLine.AnyIntuitObject = taxLineDetail; //txnTaxDetail.TaxLine = new Line[] { taxLine }; invoice.TxnTaxDetail = txnTaxDetail; //Customer (Client) invoice.CustomerRef = new ReferenceType() { name = customer.DisplayName, Value = customer.Id }; //Billing Address PhysicalAddress billAddr = new PhysicalAddress(); billAddr.Line1 = "123 Main St."; billAddr.Line2 = "Unit 506"; billAddr.City = "Brockton"; billAddr.CountrySubDivisionCode = "MA"; billAddr.Country = "United States"; billAddr.PostalCode = "02301"; billAddr.Note = "Billing Address Note"; invoice.BillAddr = billAddr; //Shipping Address PhysicalAddress shipAddr = new PhysicalAddress(); shipAddr.Line1 = "100 Fifth Ave."; shipAddr.City = "Waltham"; shipAddr.CountrySubDivisionCode = "MA"; shipAddr.Country = "United States"; shipAddr.PostalCode = "02452"; shipAddr.Note = "Shipping Address Note"; invoice.ShipAddr = shipAddr; //SalesTermRef invoice.SalesTermRef = new ReferenceType() { name = term.Name, Value = term.Id }; //DueDate invoice.DueDate = DateTime.Now.AddDays(30).Date; invoice.DueDateSpecified = true; //ARAccountRef invoice.ARAccountRef = new ReferenceType() { name = account.Name, Value = account.Id }; invoice.RecurringInfo = new RecurringInfo() { Active = true, ActiveSpecified = true, Name = "RecurTemplate143", RecurType = "Automated", ScheduleInfo = new RecurringScheduleInfo() { DayOfMonth = 1, DayOfMonthSpecified = true, DaysBefore = 2, DaysBeforeSpecified = true, IntervalType = "Monthly", MaxOccurrences = 2, MaxOccurrencesSpecified = true, NumInterval = 1, NumIntervalSpecified = true } }; // List<IEntity> n = new List<IEntity>(); // n.Add(invoice) ; recur.AnyIntuitObject = invoice; RecurringTransaction recurAdded = dataService.Add <RecurringTransaction>(recur); //QueryService<Customer> customerQueryService = new QueryService<Customer>(context); //Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault<Customer>(); ReportService reportService = new ReportService(context); //Date should be in the format YYYY - MM - DD //Response format hsold be JSON as that is only supported rigth now for reports //reportService.accounting_method = "Index"; //reportService.start_date = "2018-01-01"; //reportService.end_date = "2018-07-01"; reportService.low_pp_date = "2020-01-01"; reportService.high_pp_date = "2020-06-01"; reportService.custom_pp = "yes"; //reportService.classid = "2800000000000634813"; //reportService.date_macro = "Last Month"; //reportService.summarize_column_by = "Month"; //List<String> columndata = new List<String>(); //columndata.Add("tx_date"); //columndata.Add("dept_name"); //string coldata = String.Join(",", columndata); //reportService.columns = coldata; var report1 = reportService.ExecuteReport("ProfitAndLoss"); // try // { // //Find Customer // QueryService<Customer> customerQueryService = new QueryService<Customer>(context); // Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault<Customer>(); // //Find Tax Code for Invoice - Searching for a tax code named 'StateSalesTax' in this example // QueryService<TaxCode> stateTaxCodeQueryService = new QueryService<TaxCode>(context); // TaxCode stateTaxCode = stateTaxCodeQueryService.ExecuteIdsQuery("Select * From TaxCode StartPosition 1 MaxResults 1").FirstOrDefault<TaxCode>(); // //Find Account - Accounts Receivable account required // QueryService<Account> accountQueryService = new QueryService<Account>(context); // Account account = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Accounts Receivable' StartPosition 1 MaxResults 1").FirstOrDefault<Account>(); // //Find Item // QueryService<Item> itemQueryService = new QueryService<Item>(context); // Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault<Item>(); // //Find Term // QueryService<Term> termQueryService = new QueryService<Term>(context); // Term term = termQueryService.ExecuteIdsQuery("Select * From Term StartPosition 1 MaxResults 1").FirstOrDefault<Term>(); // Invoice invoice = new Invoice(); // //DocNumber - QBO Only, otherwise use DocNumber // invoice.AutoDocNumber = true; // invoice.AutoDocNumberSpecified = true; // //TxnDate // invoice.TxnDate = DateTime.Now.Date; // invoice.TxnDateSpecified = true; // //PrivateNote // invoice.PrivateNote = "This is a private note"; // //Line // Line invoiceLine = new Line(); // //Line Description // invoiceLine.Description = "Invoice line description."; // //Line Amount // invoiceLine.Amount = 330m; // invoiceLine.AmountSpecified = true; // //Line Detail Type // invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; // invoiceLine.DetailTypeSpecified = true; // //Line Sales Item Line Detail // SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); // //Line Sales Item Line Detail - ItemRef // lineSalesItemLineDetail.ItemRef = new ReferenceType() // { // //name = item.Name, // Value = "9321" // //Value = item.Id // }; // //Line Sales Item Line Detail - UnitPrice // lineSalesItemLineDetail.AnyIntuitObject = 33m; // lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; // //Line Sales Item Line Detail - Qty // lineSalesItemLineDetail.Qty = 10; // lineSalesItemLineDetail.QtySpecified = true; // //Line Sales Item Line Detail - TaxCodeRef // //For US companies, this can be 'TAX' or 'NON' // lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() // { // Value = "NON" // }; // //Line Sales Item Line Detail - ServiceDate // //lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date; // //lineSalesItemLineDetail.ServiceDateSpecified = true; // //Assign Sales Item Line Detail to Line Item // invoiceLine.AnyIntuitObject = lineSalesItemLineDetail; // //Assign Line Item to Invoice // invoice.Line = new Line[] { invoiceLine }; // //TxnTaxDetail // //TxnTaxDetail txnTaxDetail = new TxnTaxDetail(); // //txnTaxDetail.TxnTaxCodeRef = new ReferenceType() // //{ // // name = stateTaxCode.Name, // // Value = stateTaxCode.Id // //}; // //Line taxLine = new Line(); // //taxLine.DetailType = LineDetailTypeEnum.TaxLineDetail; // //TaxLineDetail taxLineDetail = new TaxLineDetail(); // ////Assigning the fist Tax Rate in this Tax Code // //taxLineDetail.TaxRateRef = stateTaxCode.SalesTaxRateList.TaxRateDetail[0].TaxRateRef; // //taxLine.AnyIntuitObject = taxLineDetail; // //txnTaxDetail.TaxLine = new Line[] { taxLine }; // //invoice.TxnTaxDetail = txnTaxDetail; // //Customer (Client) // invoice.CustomerRef = new ReferenceType() // { // name = customer.DisplayName, // Value = customer.Id // }; // //Billing Address // PhysicalAddress billAddr = new PhysicalAddress(); // billAddr.Line1 = "123 Main St."; // billAddr.Line2 = "Unit 506"; // billAddr.City = "Brockton"; // billAddr.CountrySubDivisionCode = "MA"; // billAddr.Country = "United States"; // billAddr.PostalCode = "02301"; // billAddr.Note = "Billing Address Note"; // invoice.BillAddr = billAddr; // //Shipping Address // PhysicalAddress shipAddr = new PhysicalAddress(); // shipAddr.Line1 = "100 Fifth Ave."; // shipAddr.City = "Waltham"; // shipAddr.CountrySubDivisionCode = "MA"; // shipAddr.Country = "United States"; // shipAddr.PostalCode = "02452"; // shipAddr.Note = "Shipping Address Note"; // invoice.ShipAddr = shipAddr; // //SalesTermRef // invoice.SalesTermRef = new ReferenceType() // { // name = term.Name, // Value = term.Id // }; // //DueDate // invoice.DueDate = DateTime.Now.AddDays(30).Date; // invoice.DueDateSpecified = true; // //ARAccountRef // invoice.ARAccountRef = new ReferenceType() // { // name = account.Name, // Value = account.Id // }; // Invoice invoiceAdded = dataService.Add<Invoice>(invoice); // //ReportService reportService = new ReportService(serviceContext); // ////Date should be in the format YYYY-MM-DD // ////Response format hsold be JSON as that is pnly supported rigth now for reports // //reportService.accounting_method = "Index"; // //reportService.start_date = "2018-01-01"; // //reportService.end_date = "2018-07-01"; // //////reportService.classid = "2800000000000634813"; // ////reportService.date_macro = "Last Month"; // //reportService.summarize_column_by = "Month"; // ////List<String> columndata = new List<String>(); // ////columndata.Add("tx_date"); // ////columndata.Add("dept_name"); // ////string coldata = String.Join(",", columndata); // ////reportService.columns = coldata; // //var report1 = reportService.ExecuteReport("TrialBalance"); // } // catch(IdsException ex) // { // throw ex; // } // //List<BatchItem> bItems = new List<BatchItem>(); // //BatchItem b1 = new BatchItem(OperationEnum.create, new Customer()); // //BatchItem b2= new BatchItem(OperationEnum.create, new Customer()); // //bItems.Add(b1); // //bItems.Add(b2); // //var result = Batch<Customer>(serviceContext, bItems); // QueryService<Invoice> inv = new QueryService<Invoice>(context); // var respInvoice = inv.ExecuteIdsQuery("select * from Invoice where Id='8633'").FirstOrDefault(); // DataService objService = new DataService(context); // var respVoidedInvoice=objService.Void(respInvoice); // DataService commonServiceQBO = new DataService(context); // //Item item = new Item(); // //List<Item> results = commonServiceQBO.FindAll<Item>(item, 1, 1).ToList<Item>(); // QueryService<Invoice> inService = new QueryService<Invoice>(context); // var In = inService.ExecuteIdsQuery("SELECT count(*) FROM Invoice").Count(); // Batch batch = commonServiceQBO.CreateNewBatch(); // batch.Add("select count(*) from Account", "queryAccount"); // batch.Execute(); // if (batch.IntuitBatchItemResponses != null && batch.IntuitBatchItemResponses.Count() > 0) // { // IntuitBatchResponse res = batch.IntuitBatchItemResponses.FirstOrDefault(); // List<Account> acc = res.Entities.ToList().ConvertAll(item => item as Account); // }; // Output("QBO call successful."); // lblQBOCall.Visible = true; // lblQBOCall.Text = "QBO Call successful"; // } //} //catch (IdsException ex) //{ // //if (ex.Message == "Unauthorized-401") // //{ // // Output("Invalid/Expired Access Token."); // // var tokenResp = await oauthClient.RefreshTokenAsync(dictionary["refreshToken"]); // // if (tokenResp.AccessToken != null && tokenResp.RefreshToken != null) // // { // // dictionary["accessToken"] = tokenResp.AccessToken; // // dictionary["refreshToken"] = tokenResp.RefreshToken; // // await QboApiCall(); // // } // // else // // { // // Output("Error while refreshing tokens: " + tokenResp.Raw); // // } // //} // //else // //{ // // Output(ex.Message); // //} //} //catch (Exception ex) //{ // Output("Invalid/Expired Access Token."); //} }
private Invoice CreateInvoice(DataService dataService, ServiceContext serviceContext, Item item) { //Initialize an Invoice object Invoice invoice = new Invoice(); //invoice.Deposit = new Decimal(0.00); //invoice.DepositSpecified = true; //Invoice is always created for a customer so lets retrieve reference to a customer and set it in Invoice QueryService <Customer> querySvc = new QueryService <Customer>(serviceContext); Customer customer = querySvc.ExecuteIdsQuery("SELECT * FROM Customer WHERE CompanyName like 'Amy%'").FirstOrDefault(); invoice.CustomerRef = new ReferenceType() { Value = customer.Id }; List <Line> lineList = new List <Line>(); Line line = new Line(); line.Description = "Description"; line.Amount = new Decimal(100.00); line.AmountSpecified = true; lineList.Add(line); invoice.Line = lineList.ToArray(); SalesItemLineDetail salesItemLineDetail = new SalesItemLineDetail(); salesItemLineDetail.Qty = new Decimal(1.0); salesItemLineDetail.QtySpecified = true; salesItemLineDetail.ItemRef = new ReferenceType() { Value = item.Id }; line.AnyIntuitObject = salesItemLineDetail; line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; line.DetailTypeSpecified = true; //Set other properties such as Total Amount, Due Date, Email status and Transaction Date invoice.DueDate = DateTime.UtcNow.Date; invoice.DueDateSpecified = true; invoice.TotalAmt = new Decimal(10.00); invoice.TotalAmtSpecified = true; invoice.EmailStatus = EmailStatusEnum.NotSet; invoice.EmailStatusSpecified = true; invoice.Balance = new Decimal(10.00); invoice.BalanceSpecified = true; invoice.TxnDate = DateTime.UtcNow.Date; invoice.TxnDateSpecified = true; invoice.TxnTaxDetail = new TxnTaxDetail() { TotalTax = Convert.ToDecimal(10), TotalTaxSpecified = true, }; return(dataService.Add <Invoice>(invoice)); }
/// <summary> /// Create Receivables Invoice /// </summary> /// <param name="dtInvoice"></param> /// <returns></returns> public string CreateReceivablesInvoice(DataTable dtInvoice) { if (services == null) { CreateService(); } Invoice invoice = new Invoice(); //invoice.TemplateRef.name = "Trinity Stairs Invoice"; invoice.TemplateRef = new ReferenceType() { type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.CompanyInfo), name = "Type", Value = "Trinity Stairs Invoice" }; invoice.Id = Convert.ToString(dtInvoice.Rows[0]["InvoiceID"]); invoice.CustomerRef = new ReferenceType() { type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Customer), //name = "Customer Name", Value = (string)dtInvoice.Rows[0]["CustomerName"] }; //invoice.ClassRef.name = (string)dtInvoice.Rows[0]["RegionName"]; invoice.ClassRef = new ReferenceType() { type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Class), //name = "Class Region", Value = (string)dtInvoice.Rows[0]["RegionName"] }; if (dtInvoice.Rows[0]["SalesOrderNumber"] != DBNull.Value) { string tempPONumber = (string)dtInvoice.Rows[0]["SalesOrderNumber"]; if (tempPONumber.Length > 25) { tempPONumber = tempPONumber.Remove(25); } invoice.PONumber = tempPONumber; } invoice.TxnDate = (DateTime)dtInvoice.Rows[0]["InvoiceDate"]; //invoice.DueDate.SetValue((DateTime)dtInvoice.Rows[0]["InvoiceDate"]); //if (dtInvoice.Rows[0]["ScheduledDate"] != DBNull.Value) // invoice.Other.SetValue(((DateTime)dtInvoice.Rows[0]["ScheduledDate"]).ToShortDateString()); invoice.ShipAddr = new PhysicalAddress() { Line1 = (string)dtInvoice.Rows[0]["AddressStreet"], City = (string)dtInvoice.Rows[0]["AddressCity"], CountrySubDivisionCode = (string)dtInvoice.Rows[0]["AddressState"], PostalCode = (string)dtInvoice.Rows[0]["AddressZip"] }; //invoice.SalesTaxLineAdd.ORSalesTaxLineAdd.Amount.SetValue(Convert.ToDouble(dtInvoice.Rows[0]["InvoiceTax"])); // invoice.ShippingLineAdd.Amount.SetValue(Convert.ToDouble(dtInvoice.Rows[0]["InvoiceShipping"])); //invoice.ARAccountRef.name = (string)dtInvoice.Rows[0]["RegionARGLCode"]; bool isTaxable = false; if (dtInvoice.Rows[0]["InvoiceTax"] != DBNull.Value && Convert.ToDouble(dtInvoice.Rows[0]["InvoiceTax"]) != 0) { invoice.TxnTaxDetail = new TxnTaxDetail(); invoice.TxnTaxDetail.TotalTax = (decimal)dtInvoice.Rows[0]["InvoiceTax"]; invoice.TxnTaxDetail.TotalTaxSpecified = true; } { isTaxable = true; } //Add Invoice Lines foreach (DataRow dtRow in dtInvoice.Rows) { Line invoiceLine = new Line(); //invoiceLine.ItemRef.FullName.SetValue((string)dtRow["Jobtype"]); invoiceLine.Description = ((string)dtRow["InvoiceLineText"]); invoiceLine.Amount = (Convert.ToDecimal(dtRow["InvoiceLineTotalAmount"])); //if (isTaxable) //{ // invoiceLine..IsTaxable.SetValue(true); //} } //if (dtInvoice.Rows[0]["InvoiceDiscount"] != null && Convert.ToDouble(dtInvoice.Rows[0]["InvoiceDiscount"]) != 0) //{ // IORInvoiceLineAdd invoiceLine = invoice.ORInvoiceLineAddList.Append(); // invoiceLine.InvoiceLineAdd.ItemRef.FullName.SetValue((string)dtInvoice.Rows[0]["Jobtype"]); // invoiceLine.InvoiceLineAdd.Desc.SetValue("Discount"); // invoiceLine.InvoiceLineAdd.Amount.SetValue(Convert.ToDouble(dtInvoice.Rows[0]["InvoiceDiscount"])); // if (isTaxable) // { // invoiceLine.InvoiceLineAdd.IsTaxable.SetValue(true); // } //} //if (dtInvoice.Rows[0]["InvoiceShipping"] != null && Convert.ToDouble(dtInvoice.Rows[0]["InvoiceShipping"]) != 0) //{ // IORInvoiceLineAdd invoiceLine = invoice.ORInvoiceLineAddList.Append(); // invoiceLine.InvoiceLineAdd.ItemRef.FullName.SetValue((string)dtInvoice.Rows[0]["Jobtype"]); // invoiceLine.InvoiceLineAdd.Desc.SetValue("Shipping"); // invoiceLine.InvoiceLineAdd.Amount.SetValue(Convert.ToDouble(dtInvoice.Rows[0]["InvoiceShipping"])); // if (isTaxable) // { // invoiceLine.InvoiceLineAdd.IsTaxable.SetValue(true); // } //} // invoice.Id = sentInvKey; invoice.DocNumber = Guid.NewGuid().ToString("N").Substring(0, 10); //invoice.CustomerMemo = new MemoRef() //{ // Value = sentInvAddr //}; //invoice.TotalAmt = sentInvAmount; invoice.TotalAmtSpecified = true; //invoice.shipping ?? = sentShippingAmount //invoice = sentDiscountAmount; //invoice.DueDate = sentInvoiceDate; //invoice.DueDateSpecified = true; invoice.ARAccountRef = new ReferenceType() { type = Enum.GetName(typeof(objectNameEnumType), objectNameEnumType.Account), name = "Account Receivable", Value = string.Concat("QB:", (string)dtInvoice.Rows[0]["RegionARGLCode"]) }; invoice.TxnDate = DateTime.Today.Date; invoice.TxnDateSpecified = true; invoice.ApplyTaxAfterDiscount = false; invoice.ApplyTaxAfterDiscountSpecified = true; List <Line> invLines = new List <Line>(); int ivLineCnt = 0; foreach (System.Data.DataRow dtRow in dtInvoice.Rows) { Line line = new Line(); line.Description = (string)dtRow["InvoiceLineText"]; line.Amount = decimal.Round((decimal)dtRow["InvoiceLineTotalAmount"], 2); line.AmountSpecified = true; line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; line.DetailTypeSpecified = true; line.Id = (ivLineCnt + 1).ToString(); ivLineCnt++; if ((string)dtRow["InvoiceLineText"] == "Sales") { line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; } else if ((string)dtRow["InvoiceLineText"] == "Shipping") { line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; } else if ((string)dtRow["InvoiceLineText"] == "Discount") { line.DetailType = LineDetailTypeEnum.DiscountLineDetail; } else if ((string)dtRow["InvoiceLineText"] == "Deposit") { line.DetailType = LineDetailTypeEnum.DepositLineDetail; } else { line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; } line.DetailTypeSpecified = true; line.Id = (ivLineCnt + 1).ToString(); //Line Sales Item Line Detail SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); //Line Sales Item Line Detail - ItemRef lineSalesItemLineDetail.ItemRef = new ReferenceType() { name = "Sales", Value = "1" }; //Line Sales Item Line Detail - UnitPrice lineSalesItemLineDetail.AnyIntuitObject = decimal.Round((decimal)dtRow["InvoiceLineTotalAmount"], 2); lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; //Line Sales Item Line Detail - Qty lineSalesItemLineDetail.Qty = 1; lineSalesItemLineDetail.QtySpecified = true; //Line Sales Item Line Detail - TaxCodeRef //For US companies, this can be 'TAX' or 'NON' lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() { Value = "TAX" }; //Line Sales Item Line Detail - ServiceDate lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date; lineSalesItemLineDetail.ServiceDateSpecified = true; //Assign Sales Item Line Detail to Line Item line.AnyIntuitObject = lineSalesItemLineDetail; invLines.Add(line); line.DetailTypeSpecified = true; line.Id = (ivLineCnt + 1).ToString(); ivLineCnt++; invLines.Add(line); } invoice.Line = invLines.ToArray(); Invoice resultBill = services.Add(invoice) as Invoice; return("Invoice Loaded"); }
public void Invoice_Create() { //Find Customer QueryService <Customer> customerQueryService = GetQueryService <Customer>(); Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault <Customer>(); //Find Tax Code for Invoice - Searching for a tax code named 'StateSalesTax' in this example QueryService <TaxCode> stateTaxCodeQueryService = GetQueryService <TaxCode>(); TaxCode stateTaxCode = stateTaxCodeQueryService.ExecuteIdsQuery("Select * From TaxCode Where Name='StateSalesTax' StartPosition 1 MaxResults 1").FirstOrDefault <TaxCode>(); //Find Account - Accounts Receivable account required QueryService <Account> accountQueryService = GetQueryService <Account>(); Account account = accountQueryService.ExecuteIdsQuery("Select * From Account Where AccountType='Accounts Receivable' StartPosition 1 MaxResults 1").FirstOrDefault <Account>(); //Find Item QueryService <Item> itemQueryService = GetQueryService <Item>(); Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault <Item>(); //Find Term QueryService <Term> termQueryService = GetQueryService <Term>(); Term term = termQueryService.ExecuteIdsQuery("Select * From Term StartPosition 1 MaxResults 1").FirstOrDefault <Term>(); Invoice qbInvoice = new Invoice(); //DocNumber - QBO Only, otherwise use DocNumber qbInvoice.AutoDocNumber = true; qbInvoice.AutoDocNumberSpecified = true; //TxnDate qbInvoice.TxnDate = DateTime.Now.Date; qbInvoice.TxnDateSpecified = true; //PrivateNote qbInvoice.PrivateNote = "This is a private note"; //Line Line invoiceLine = new Line(); //Line Description invoiceLine.Description = "Invoice line description."; //Line Amount invoiceLine.Amount = 330m; invoiceLine.AmountSpecified = true; //Line Detail Type invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; invoiceLine.DetailTypeSpecified = true; //Line Sales Item Line Detail SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); //Line Sales Item Line Detail - ItemRef lineSalesItemLineDetail.ItemRef = new ReferenceType() { name = item.Name, Value = item.Id }; //Line Sales Item Line Detail - UnitPrice lineSalesItemLineDetail.AnyIntuitObject = 33m; lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; //Line Sales Item Line Detail - Qty lineSalesItemLineDetail.Qty = 10; lineSalesItemLineDetail.QtySpecified = true; //Line Sales Item Line Detail - TaxCodeRef //For US companies, this can be 'TAX' or 'NON' lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() { Value = "TAX" }; //Line Sales Item Line Detail - ServiceDate lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date; lineSalesItemLineDetail.ServiceDateSpecified = true; //Assign Sales Item Line Detail to Line Item invoiceLine.AnyIntuitObject = lineSalesItemLineDetail; //Assign Line Item to Invoice qbInvoice.Line = new Line[] { invoiceLine }; //TxnTaxDetail /* * TxnTaxDetail txnTaxDetail = new TxnTaxDetail(); * txnTaxDetail.TxnTaxCodeRef = new ReferenceType() * { * name = stateTaxCode.Name, * Value = stateTaxCode.Id * }; * Line taxLine = new Line(); * taxLine.DetailType = LineDetailTypeEnum.TaxLineDetail; * TaxLineDetail taxLineDetail = new TaxLineDetail(); * //Assigning the fist Tax Rate in this Tax Code * taxLineDetail.TaxRateRef = stateTaxCode.SalesTaxRateList.TaxRateDetail[0].TaxRateRef; * taxLine.AnyIntuitObject = taxLineDetail; * txnTaxDetail.TaxLine = new Line[] { taxLine }; * invoice.TxnTaxDetail = txnTaxDetail;*/ //Customer (Client) qbInvoice.CustomerRef = new ReferenceType() { name = customer.DisplayName, Value = customer.Id }; //Billing Address PhysicalAddress billAddr = new PhysicalAddress(); billAddr.Line1 = "123 Main St."; billAddr.Line2 = "Unit 506"; billAddr.City = "Brockton"; billAddr.CountrySubDivisionCode = "MA"; billAddr.Country = "United States"; billAddr.PostalCode = "02301"; billAddr.Note = "Billing Address Note"; qbInvoice.BillAddr = billAddr; //Shipping Address PhysicalAddress shipAddr = new PhysicalAddress(); shipAddr.Line1 = "100 Fifth Ave."; shipAddr.City = "Waltham"; shipAddr.CountrySubDivisionCode = "MA"; shipAddr.Country = "United States"; shipAddr.PostalCode = "02452"; shipAddr.Note = "Shipping Address Note"; qbInvoice.ShipAddr = shipAddr; //SalesTermRef qbInvoice.SalesTermRef = new ReferenceType() { name = term.Name, Value = term.Id }; //DueDate qbInvoice.DueDate = DateTime.Now.AddDays(30).Date; qbInvoice.DueDateSpecified = true; //ARAccountRef qbInvoice.ARAccountRef = new ReferenceType() { name = account.Name, Value = account.Id }; var addedInvoice = DataService.Add(qbInvoice); }
public void Invoice_CreateWithLeastRequiredFields() { //Valid Customer and Item are required. //Find Customer QueryService <Customer> customerQueryService = GetQueryService <Customer>(); Customer customer = customerQueryService.ExecuteIdsQuery("Select * From Customer StartPosition 1 MaxResults 1").FirstOrDefault <Customer>(); //Find Item QueryService <Item> itemQueryService = GetQueryService <Item>(); Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault <Item>(); Invoice qbInvoice = new Invoice(); //TxnDate qbInvoice.TxnDate = DateTime.Now.Date; qbInvoice.TxnDateSpecified = true; //Line Line invoiceLine = new Line(); //Line Description invoiceLine.Description = "Invoice line description."; //Line Amount //Amount must be equal to unit price * quantity. invoiceLine.Amount = 100m; invoiceLine.AmountSpecified = true; //Line Detail Type invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; invoiceLine.DetailTypeSpecified = true; //Line Sales Item Line Detail SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); //Line Sales Item Line Detail - ItemRef //****Valid Item Id is require for line Items***** lineSalesItemLineDetail.ItemRef = new ReferenceType() { name = item.Name, Value = item.Id }; //Line Sales Item Line Detail - UnitPrice lineSalesItemLineDetail.AnyIntuitObject = 10m; lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; //Line Sales Item Line Detail - Qty lineSalesItemLineDetail.Qty = 10; lineSalesItemLineDetail.QtySpecified = true; //Line Sales Item Line Detail - TaxCodeRef //For US companies, this can be 'TAX' or 'NON' //lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() //{ // Value = "TAX" //}; //Line Sales Item Line Detail - ServiceDate lineSalesItemLineDetail.ServiceDate = DateTime.Now.Date; lineSalesItemLineDetail.ServiceDateSpecified = true; //Assign Sales Item Line Detail to Line Item invoiceLine.AnyIntuitObject = lineSalesItemLineDetail; //Assign Line Item to Invoice qbInvoice.Line = new Line[] { invoiceLine, invoiceLine }; //Customer (Client) qbInvoice.CustomerRef = new ReferenceType() { name = customer.DisplayName, Value = customer.Id }; //SalesTermRef //qbInvoice.SalesTermRef = new ReferenceType() //{ // name = term.Name, // Value = term.Id //}; //DueDate qbInvoice.DueDate = DateTime.Now.AddDays(30).Date; qbInvoice.DueDateSpecified = true; var addedInvoice = DataService.Add(qbInvoice); }
public void Invoice_Create2() { Invoice qbInvoice = new Invoice(); Customer customer = null; Item item = null; Account account = null; DataService dataService = new DataService(ServiceContext); qbInvoice.TxnDate = DateTime.Parse("8/15/85"); qbInvoice.TxnDateSpecified = true; qbInvoice.DueDate = DateTime.Parse("1/1/2111"); qbInvoice.DueDateSpecified = true; //Establish customer QueryService <Customer> customerService = new QueryService <Customer>(ServiceContext); var r = customerService.ExecuteIdsQuery($"Select * From Customer"); string companyName = "Children's Miracle Network"; var customerMatch = r.FirstOrDefault(x => x.CompanyName == companyName); //Create customer, if it does not exist. if (customerMatch == null) { Customer customerToCreate = new Customer { CompanyName = companyName, DisplayName = companyName, Notes = "Created by Nucirrus." }; customer = dataService.Add <Customer>(customerToCreate); } else { customer = customerMatch; } qbInvoice.CustomerRef = new ReferenceType() { name = customer.DisplayName, Value = customer.Id }; //create an account for nucirrus var exportAccounts = GetQueryService <Account>().ExecuteIdsQuery($"Select * from Account where name = 'ExternalInvoice' StartPosition 1 MaxResults 1"); if (!exportAccounts.Any()) { account = dataService.Add <Account>(new Account { Name = "ExternalInvoice", AccountType = AccountTypeEnum.Income, AccountTypeSpecified = true }); } else { account = exportAccounts.First(); } string jobName = "First Job"; //QueryService<Item> itemQueryService = GetQueryService<Item>(); //item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault<Item>(); ////Find or Create Item QueryService <Item> itemQueryService = new QueryService <Item>(ServiceContext); var items = itemQueryService.ExecuteIdsQuery($"Select * From Item Where Name = '{jobName}'"); if (!items.Any()) { //use account in item creation. Item newItem = new Item { Name = jobName, Type = ItemTypeEnum.Service, TypeSpecified = true, IncomeAccountRef = new ReferenceType { name = account.Name, Value = account.Id }, PurchaseCost = 10m, PurchaseCostSpecified = true }; item = dataService.Add <Item>(newItem); } else { item = items.First(); } List <Line> lineItems = new List <Line>(); Line invoiceLine = new Line(); //Line Description invoiceLine.Description = $"Description."; //Line Amount invoiceLine.Amount = 100m; invoiceLine.AmountSpecified = true; //Line Detail Type invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail; invoiceLine.DetailTypeSpecified = true; //Line Sales Item Line Detail SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); //Line Sales Item Line Detail - ItemRef lineSalesItemLineDetail.ItemRef = new ReferenceType() { name = item.Name, Value = item.Id }; //Line Sales Item Line Detail - UnitPrice lineSalesItemLineDetail.AnyIntuitObject = 10m; lineSalesItemLineDetail.ItemElementName = ItemChoiceType.UnitPrice; //Line Sales Item Line Detail - Qty lineSalesItemLineDetail.Qty = 10m; lineSalesItemLineDetail.QtySpecified = true; //Line Sales Item Line Detail - TaxCodeRef //For US companies, this can be 'TAX' or 'NON' lineSalesItemLineDetail.TaxCodeRef = new ReferenceType() { Value = "TAX" }; //Line Sales Item Line Detail - ServiceDate lineSalesItemLineDetail.ServiceDate = DateTime.Parse("12/1/1999"); lineSalesItemLineDetail.ServiceDateSpecified = true; //Assign Sales Item Line Detail to Line Item invoiceLine.AnyIntuitObject = lineSalesItemLineDetail; //Assign Line Item to Invoice lineItems.Add(invoiceLine); qbInvoice.Line = lineItems.ToArray(); var createdInvoice = DataService.Add(qbInvoice); Assert.IsNotNull(createdInvoice); }
/// <summary> /// This API creates an Invoice /// </summary> private Invoice CreateInvoice(string realmId, Customer customer, Item item) { // Step 1: Initialize OAuth2RequestValidator and ServiceContext ServiceContext serviceContext = IntializeContext(realmId); // Step 2: Initialize an Invoice object Invoice invoice = new Invoice(); // invoice.Deposit = new Decimal(0.00); //invoice.DepositSpecified = true; // Step 3: Invoice is always created for a customer so lets retrieve reference to a customer and set it in Invoice /*QueryService<Customer> querySvc = new QueryService<Customer>(serviceContext); * Customer customer = querySvc.ExecuteIdsQuery("SELECT * FROM Customer WHERE CompanyName like 'Amy%'").FirstOrDefault();*/ invoice.CustomerRef = new ReferenceType() { Value = customer.Id }; // Step 4: Invoice is always created for an item so lets retrieve reference to an item and a Line item to the invoice /* QueryService<Item> querySvcItem = new QueryService<Item>(serviceContext); * Item item = querySvcItem.ExecuteIdsQuery("SELECT * FROM Item WHERE Name = 'Lighting'").FirstOrDefault();*/ List <Line> lineList = new List <Line>(); Line line = new Line(); line.Description = "Description"; line.Amount = new Decimal(100.00); line.AmountSpecified = true; SalesItemLineDetail salesItemLineDetail = new SalesItemLineDetail(); salesItemLineDetail.Qty = new Decimal(1.0); salesItemLineDetail.ItemRef = new ReferenceType() { Value = item.Id }; line.AnyIntuitObject = salesItemLineDetail; line.DetailType = LineDetailTypeEnum.SalesItemLineDetail; line.DetailTypeSpecified = true; lineList.Add(line); invoice.Line = lineList.ToArray(); // Step 5: Set other properties such as Total Amount, Due Date, Email status and Transaction Date invoice.DueDate = DateTime.UtcNow.Date; invoice.DueDateSpecified = true; invoice.TotalAmt = new Decimal(10.00); invoice.TotalAmtSpecified = true; invoice.EmailStatus = EmailStatusEnum.NotSet; invoice.EmailStatusSpecified = true; invoice.Balance = new Decimal(10.00); invoice.BalanceSpecified = true; invoice.TxnDate = DateTime.UtcNow.Date; invoice.TxnDateSpecified = true; invoice.TxnTaxDetail = new TxnTaxDetail() { TotalTax = Convert.ToDecimal(10), TotalTaxSpecified = true, }; return(invoice); }