private static SaleOrderListItem MapSelector(QuickBooksOrderDocumentDto n) { return new SaleOrderListItem() { DocumentDateIssued = n.DocumentDateIssued, GenericReference = n.GenericReference??n.ExternalReference, ExternalReference = n.ExternalReference??n.GenericReference, OrderDateRequired = n.OrderDateRequired, OutletName = n.OutletName, TotalDiscount = n.TotalDiscount, TotalGross = n.TotalGross, TotalNet = n.TotalNet, TotalVAT = n.TotalVat }; }
private List<QuickBooksOrderDocumentDto> MapQuickBooks(Guid docId, bool includeReceiptsAndInvoice = false) { var docs = new List<QuickBooksOrderDocumentDto>(); try { var mainOrder = ObjectFactory.GetInstance<IMainOrderRepository>().GetById(docId); if (mainOrder != null) { var outlet = mainOrder.IssuedOnBehalfOf as Outlet; #region order var order = new QuickBooksOrderDocumentDto { DocumentDateIssued = mainOrder.DocumentDateIssued.ToShortDateString(), OrderDateRequired = mainOrder.DateRequired.ToShortDateString(), ExternalReference = mainOrder.ExternalDocumentReference, GenericReference = mainOrder.DocumentReference, OutletName = outlet != null ? outlet.Name : "", OutletCode = outlet != null ? outlet.CostCentreCode : "", DocumentType = mainOrder.DocumentType, TotalGross = mainOrder.TotalGross, TotalNet = mainOrder.TotalNet, TotalVat = mainOrder.TotalVat, TotalDiscount = mainOrder.TotalDiscount, OrderType = mainOrder.OrderType, Note = mainOrder.Note, SalesmanName = mainOrder.DocumentIssuerUser.Username, SalesmanCode = mainOrder.DocumentIssuerUser.Code, LineItems = mainOrder.ItemSummary.Select(line => new QuickBooksOrderDocLineItem() { ProductCode = line.Product. ProductCode, ProductDescription = line.Product. Description, Quantity = line.Qty, GrossValue = line.TotalGross, TotalNet = line.TotalNet, LineItemValue = line.Value, TotalDiscount = line.ProductDiscount, TotalVat = line.TotalVat, VATClass = line.Product.VATClass!=null?line.Product.VATClass.Name:"", // PaymentRef = outlet!=null?outlet.VatClass.Name:"" }).ToList() }; docs.Add(order); #endregion if (includeReceiptsAndInvoice) { #region Invoice var invoice = ObjectFactory.GetInstance<IInvoiceRepository>().GetInvoiceByOrderId(mainOrder.Id); if (invoice != null) { var doc = new QuickBooksOrderDocumentDto { DocumentType = invoice.DocumentType, ExternalReference = mainOrder.ExternalDocumentReference, //I use this field to attached to parent order GenericReference = invoice.DocumentReference, OutletName =outlet !=null? outlet.Name:"", OutletCode = outlet !=null? outlet.CostCentreCode:" ", OrderDateRequired = mainOrder.DateRequired.ToShortDateString(), SalesmanCode = invoice.DocumentIssuerUser.Code, SalesmanName = invoice.DocumentIssuerUser.Username, DocumentDateIssued = invoice.DocumentDateIssued.ToShortDateString(), LineItems = invoice.LineItems.Select(n => new QuickBooksOrderDocLineItem() { ProductDescription = n.Product. Description, ProductCode = n.Product. ProductCode, Quantity = n.Qty, LineItemValue = n.Value + n.LineItemVatValue, GrossValue = n.LineItemTotal, TotalVat = n.LineItemVatTotal }).ToList() }; docs.Add(doc); } #endregion #region Receipts if (invoice != null) { var receipts = ObjectFactory.GetInstance<IReceiptRepository>().GetByInvoiceId(invoice.Id); docs.AddRange(receipts.Select(receipt => new QuickBooksOrderDocumentDto { DocumentType = receipt.DocumentType, ExternalReference = mainOrder.ExternalDocumentReference, GenericReference = receipt.DocumentReference, OutletName = outlet != null ? outlet.Name : "", //receipt.DocumentRecipientCostCentre. //Name, OutletCode = outlet != null ? outlet.CostCentreCode : " ", //receipt.DocumentRecipientCostCentre. //CostCentreCode, OrderDateRequired = mainOrder.DateRequired. ToShortDateString(), DocumentDateIssued = receipt.DocumentDateIssued. ToShortDateString(), //LineItems=invoice.LineItems.Select(line=> //new QuickBooksOrderDocLineItem() // { // ProductDescription = // line.Product. // Description, // ProductCode = // line.Product. // ProductCode, // Quantity = line.Qty, // LineItemValue = // line.Value + // line.LineItemVatValue, // GrossValue = // line.LineItemTotal, // TotalVat = // line.LineItemVatTotal, // PaymentType = line.p // }).ToList() LineItems=receipt.LineItems.Select( line => new QuickBooksOrderDocLineItem() { LineItemValue = line.Value, PaymentRef = line.PaymentRefId, PaymentType = line.PaymentType.ToString() }).ToList() })); } #endregion } } return docs; } catch (Exception ex) { throw ex; } }
internal static ISalesReceiptRet QBAddSalesReceipt(QuickBooksOrderDocumentDto receipt, string memo = "", string templateRefName = "Custom Sales Receipt") { if (receipt.DocumentType != DocumentType.Receipt) throw new ArgumentException("document is not an an Receipt"); bool boolSessionBegun = false; QBSessionManager sessionManager = new QBSessionManager(); try { IMsgSetRequest requestMsgSet; IMsgSetResponse responseMsgSet; sessionManager.OpenConnection("", _appName); sessionManager.BeginSession(qdbpath, ENOpenMode.omDontCare); boolSessionBegun = true; requestMsgSet = GetLatestMsgSetRequest(sessionManager); requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue; string errecid = "{" + Guid.NewGuid().ToString() + "}"; sessionManager.ErrorRecoveryID.SetValue(errecid); sessionManager.EnableErrorRecovery = true; sessionManager.SaveAllMsgSetRequestInfo = true; #region error recovery if (sessionManager.IsErrorRecoveryInfo()) { IMsgSetRequest reqMsgSet = null; IMsgSetResponse resMsgSet = null; resMsgSet = sessionManager.GetErrorRecoveryStatus(); if (resMsgSet.Attributes.MessageSetStatusCode.Equals("600")) { MessageBox.Show( "The oldMessageSetID does not match any stored IDs, and no newMessageSetID is provided."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9001")) { MessageBox.Show( "Invalid checksum. The newMessageSetID specified, matches the currently stored ID, but checksum fails."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9002")) { MessageBox.Show("No stored response was found."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9004")) { MessageBox.Show("Invalid MessageSetID, greater than 24 character was given."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9005")) { MessageBox.Show("Unable to store response."); } else { IResponse res = resMsgSet.ResponseList.GetAt(0); int sCode = res.StatusCode; if (sCode == 0) { MessageBox.Show("Last request was processed and customer was added successfully!"); } else if (sCode > 0) { MessageBox.Show("There was a warning but last request was processed successfully!"); } else { MessageBox.Show("It seems that there was an error in processing last request"); reqMsgSet = sessionManager.GetSavedMsgSetRequest(); resMsgSet = sessionManager.DoRequests(reqMsgSet); IResponse resp = resMsgSet.ResponseList.GetAt(0); int statCode = resp.StatusCode; if (statCode == 0) { string resStr = null; ISalesReceiptRet custRet = resp.Detail as ISalesReceiptRet; resStr = resStr + "Following customer has been successfully submitted to QuickBooks:\n\n\n"; if (custRet.TxnID != null) { resStr = resStr + "ListID Number = " + Convert.ToString(custRet.TxnID.GetValue()) + "\n"; } Log(QBCRUDEAction.ErrorRecovery, "Invoice", (custRet == null ? "" : custRet.RefNumber.GetValue()), resp); } } } sessionManager.ClearErrorRecovery(); //MessageBox.Show("Proceeding with current transaction."); } #endregion ISalesReceiptAdd salesReceiptAddRq = requestMsgSet.AppendSalesReceiptAddRq(); salesReceiptAddRq.CustomerRef.FullName.SetValue(receipt.OutletName); //salesReceiptAddRq.TemplateRef.FullName.SetValue(templateRefName);//Custom Sales Receipt salesReceiptAddRq.Memo.SetValue(memo); salesReceiptAddRq.TxnDate.SetValue(Convert.ToDateTime(receipt.DocumentDateIssued)); salesReceiptAddRq.RefNumber.SetValue(receipt.GenericReference.Substring((receipt.GenericReference.Length - 11), 11)); foreach (var receiptLineItem in receipt.LineItems) { IItemInventoryRet product = GetProductByCode(receiptLineItem.ProductCode); if (product == null) continue; ISalesReceiptLineAdd salesReceiptLineAddRq = salesReceiptAddRq.ORSalesReceiptLineAddList.Append().SalesReceiptLineAdd; salesReceiptLineAddRq.Amount.SetValue(Convert.ToDouble(Math.Round(receiptLineItem.GrossValue,2))); //salesReceiptLineAddRq.Quantity.SetValue(1); salesReceiptLineAddRq.ORRatePriceLevel.Rate.SetValue(Convert.ToDouble(receiptLineItem.LineItemValue)); salesReceiptLineAddRq.Quantity.SetValue(Convert.ToDouble(receiptLineItem.Quantity)); salesReceiptLineAddRq.ItemRef.FullName.SetValue(product.FullName.GetValue()); salesReceiptLineAddRq.Desc.SetValue(receiptLineItem.ProductDescription); //salesReceiptLineAddRq. salesReceiptLineAddRq.Other1.SetValue(receiptLineItem.PaymentType); try { salesReceiptLineAddRq.TaxAmount.SetValue(Convert.ToDouble(Math.Round(receiptLineItem.TotalVat, 2))); } catch (Exception e) { Console.WriteLine(e); Log(e.Message); } } responseMsgSet = sessionManager.DoRequests(requestMsgSet); IResponse response = responseMsgSet.ResponseList.GetAt(0); ISalesReceiptRet salesReceipRet = response.Detail as ISalesReceiptRet; int statusCode = response.StatusCode; if (statusCode == 0) { Console.WriteLine("Success"); } sessionManager.ClearErrorRecovery(); sessionManager.EndSession(); boolSessionBegun = false; sessionManager.CloseConnection(); Log(QBCRUDEAction.Add, "SalesReceipt", (salesReceipRet == null ? "" : salesReceipRet.RefNumber.GetValue()), response); return salesReceipRet; } catch (Exception ex) { if (boolSessionBegun) { sessionManager.EndSession(); sessionManager.CloseConnection(); } string error = (ex.Message.ToString() + "\nStack Trace: \n" + ex.StackTrace + "\nExiting the application"); Log(error); MessageBox.Show(error); } return null; }
internal static IReceivePaymentRet QbAddPayment(QuickBooksOrderDocumentDto receipt, string qbInvoiceTxnId, string accountRef, List<string> references) { if (receipt.DocumentType != DocumentType.Receipt) throw new ArgumentException("document is not an an Receipt"); bool boolSessionBegun = false; QBSessionManager sessionManager = new QBSessionManager(); try { IMsgSetRequest requestMsgSet; IMsgSetResponse responseMsgSet; sessionManager.OpenConnection("", _appName); sessionManager.BeginSession(qdbpath, ENOpenMode.omDontCare); boolSessionBegun = true; requestMsgSet = GetLatestMsgSetRequest(sessionManager); requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue; string errecid = "{" + Guid.NewGuid().ToString() + "}"; sessionManager.ErrorRecoveryID.SetValue(errecid); sessionManager.EnableErrorRecovery = true; sessionManager.SaveAllMsgSetRequestInfo = true; #region error recovery if (sessionManager.IsErrorRecoveryInfo()) { IMsgSetRequest reqMsgSet = null; IMsgSetResponse resMsgSet = null; resMsgSet = sessionManager.GetErrorRecoveryStatus(); if (resMsgSet.Attributes.MessageSetStatusCode.Equals("600")) { MessageBox.Show( "The oldMessageSetID does not match any stored IDs, and no newMessageSetID is provided."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9001")) { MessageBox.Show( "Invalid checksum. The newMessageSetID specified, matches the currently stored ID, but checksum fails."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9002")) { MessageBox.Show("No stored response was found."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9004")) { MessageBox.Show("Invalid MessageSetID, greater than 24 character was given."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9005")) { MessageBox.Show("Unable to store response."); } else { IResponse res = resMsgSet.ResponseList.GetAt(0); int sCode = res.StatusCode; if (sCode == 0) { MessageBox.Show("Last request was processed and customer was added successfully!"); } else if (sCode > 0) { MessageBox.Show("There was a warning but last request was processed successfully!"); } else { MessageBox.Show("It seems that there was an error in processing last request"); reqMsgSet = sessionManager.GetSavedMsgSetRequest(); resMsgSet = sessionManager.DoRequests(reqMsgSet); IResponse resp = resMsgSet.ResponseList.GetAt(0); int statCode = resp.StatusCode; if (statCode == 0) { string resStr = null; IReceivePaymentRet custRet = resp.Detail as IReceivePaymentRet; resStr = resStr + "Following customer has been successfully submitted to QuickBooks:\n\n\n"; if (custRet.TxnID != null) { resStr = resStr + "ListID Number = " + Convert.ToString(custRet.TxnID.GetValue()) + "\n"; } Log(QBCRUDEAction.ErrorRecovery, "Invoice", (custRet == null ? "" : custRet.RefNumber.GetValue()), resp); } } } sessionManager.ClearErrorRecovery(); //MessageBox.Show("Proceeding with current transaction."); } #endregion //var iterator =1; //IItemInventoryRet product = GetProductByCode(receiptLineItem.ProductCode); //if (product == null) continue; IReceivePaymentAdd receivePaymentAddRq = requestMsgSet.AppendReceivePaymentAddRq(); receivePaymentAddRq.CustomerRef.FullName.SetValue(receipt.OutletName); receivePaymentAddRq.TxnDate.SetValue(Convert.ToDateTime(receipt.DocumentDateIssued)); receivePaymentAddRq.RefNumber.SetValue(receipt.GenericReference.Substring((receipt.GenericReference.Length - 11), 11)); var paymentmethod = "Cash"; var quickBooksOrderDocLineItem = receipt.LineItems.FirstOrDefault(); if (quickBooksOrderDocLineItem != null && !string.IsNullOrEmpty(quickBooksOrderDocLineItem.PaymentType)) { paymentmethod = quickBooksOrderDocLineItem.PaymentType; } //var paymentmethod = quickBooksOrderDocLineItem.PaymentType; receivePaymentAddRq.PaymentMethodRef.FullName.SetValue(paymentmethod); receivePaymentAddRq.ARAccountRef.ListID.SetValue(accountRef); //decimal total = 0m; //foreach (var item in receipt.LineItems) //{ // total += item.LineItemValue; //} var total = receipt.LineItems.Sum(receiptLineItem => receiptLineItem.LineItemValue); receivePaymentAddRq.TotalAmount.SetValue(Convert.ToDouble(Math.Round(total, 2))); receivePaymentAddRq.ORApplyPayment.IsAutoApply.SetValue(true); try { // receivePaymentAddRq.SetValue(Convert.ToDouble(Math.Round(receiptLineItem.TotalVat, 2))); } catch (Exception e) { Console.WriteLine(e); Log(e.Message); } responseMsgSet = sessionManager.DoRequests(requestMsgSet); IResponse response = responseMsgSet.ResponseList.GetAt(0); IReceivePaymentRet salesReceipRet = response.Detail as IReceivePaymentRet; int statusCode = response.StatusCode; if (statusCode == 0) { Console.WriteLine("Success"); } sessionManager.ClearErrorRecovery(); sessionManager.EndSession(); boolSessionBegun = false; sessionManager.CloseConnection(); Log(QBCRUDEAction.Add, "SalesReceipt", (salesReceipRet == null ? "" : salesReceipRet.RefNumber.GetValue()), response); return salesReceipRet; } catch (Exception ex) { if (boolSessionBegun) { sessionManager.EndSession(); sessionManager.CloseConnection(); } string error = (ex.Message.ToString() + "\nStack Trace: \n" + ex.StackTrace + "\nExiting the application"); Log(error); MessageBox.Show(error); } return null; }
internal static ISalesOrderRet QBAddSalesOrder( QuickBooksOrderDocumentDto orderDoc, string externalOrderRef) { if (orderDoc.DocumentType != DocumentType.Order) throw new ArgumentException("document is not an an order"); var stockSiteRef = GetStockSiteBySalesperson(orderDoc.SalesmanCode); if (string.IsNullOrEmpty(stockSiteRef)) { stockSiteRef = "Unspecified Site"; } bool boolSessionBegun = false; QBSessionManager sessionManager = new QBSessionManager(); try { IMsgSetRequest requestMsgSet; IMsgSetResponse responseMsgSet; sessionManager.OpenConnection("", _appName); sessionManager.BeginSession(qdbpath, ENOpenMode.omDontCare); boolSessionBegun = true; requestMsgSet = GetLatestMsgSetRequest(sessionManager); requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue; string errecid = "{" + Guid.NewGuid().ToString() + "}"; sessionManager.ErrorRecoveryID.SetValue(errecid); sessionManager.EnableErrorRecovery = true; sessionManager.SaveAllMsgSetRequestInfo = true; #region error recovery if (sessionManager.IsErrorRecoveryInfo()) { IMsgSetRequest reqMsgSet = null; IMsgSetResponse resMsgSet = null; resMsgSet = sessionManager.GetErrorRecoveryStatus(); if (resMsgSet.Attributes.MessageSetStatusCode.Equals("600")) { MessageBox.Show( "The oldMessageSetID does not match any stored IDs, and no newMessageSetID is provided."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9001")) { MessageBox.Show( "Invalid checksum. The newMessageSetID specified, matches the currently stored ID, but checksum fails."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9002")) { MessageBox.Show("No stored response was found."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9004")) { MessageBox.Show("Invalid MessageSetID, greater than 24 character was given."); } else if (resMsgSet.Attributes.MessageSetStatusCode.Equals("9005")) { MessageBox.Show("Unable to store response."); } else { IResponse res = resMsgSet.ResponseList.GetAt(0); int sCode = res.StatusCode; if (sCode == 0) { MessageBox.Show("Last request was processed and customer was added successfully!"); } else if (sCode > 0) { MessageBox.Show("There was a warning but last request was processed successfully!"); } else { MessageBox.Show("It seems that there was an error in processing last request"); reqMsgSet = sessionManager.GetSavedMsgSetRequest(); resMsgSet = sessionManager.DoRequests(reqMsgSet); IResponse resp = resMsgSet.ResponseList.GetAt(0); int statCode = resp.StatusCode; if (statCode == 0) { string resStr = null; ISalesOrderRet custRet = resp.Detail as ISalesOrderRet; resStr = resStr + "Following sale/order has been successfully submitted to QuickBooks:\n\n\n"; if (custRet.TxnID != null) { resStr = resStr + "ListID Number = " + Convert.ToString(custRet.TxnID.GetValue()) + "\n"; Log(resStr); } } } } sessionManager.ClearErrorRecovery(); //MessageBox.Show("Proceeding with current transaction."); } #endregion ISalesOrderAdd saleOrderAddRq = requestMsgSet.AppendSalesOrderAddRq(); //Set field value for MatchCriterion //inventorySiteQuery.ORInventorySiteQuery.InventorySiteFilter.ORNameFilter.NameFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains); ////Set field value for Name //inventorySiteQuery.ORInventorySiteQuery.InventorySiteFilter.ORNameFilter.NameFilter.Name.SetValue(orderDoc.SalesmanName); //var value=inventorySiteQuery.IncludeRetElementList.Count.ToString(); //var counted = inventorySiteQuery.ORInventorySiteQuery.FullNameList.Count.ToString(); // IInventorySiteRetList list=requestMsgSet.appendinventorys saleOrderAddRq.CustomerRef.FullName.SetValue(orderDoc.OutletName); saleOrderAddRq.DueDate.SetValue(Convert.ToDateTime(orderDoc.OrderDateRequired)); saleOrderAddRq.Memo.SetValue(orderDoc.Note); saleOrderAddRq.RefNumber.SetValue(externalOrderRef); //Get the Stock Site to be used to populate the inventory Site Ref saleOrderAddRq.TxnDate.SetValue(Convert.ToDateTime(orderDoc.DocumentDateIssued)); foreach (var lineItem in orderDoc.LineItems) { IItemInventoryRet product = GetProductByCode(lineItem.ProductCode); if (product == null) continue; ISalesOrderLineAdd saleOrderLineAddRq = saleOrderAddRq.ORSalesOrderLineAddList.Append().SalesOrderLineAdd; saleOrderLineAddRq.ItemRef.FullName.SetValue(product.FullName.GetValue()); saleOrderLineAddRq.Quantity.SetValue(Convert.ToDouble(lineItem.Quantity)); saleOrderLineAddRq.Amount.SetValue(Convert.ToDouble(Math.Round(lineItem.TotalNet,2))); //saleOrderLineAddRq if(!string.IsNullOrEmpty(lineItem.VATClass)) { saleOrderLineAddRq.SalesTaxCodeRef.FullName.SetValue(lineItem.VATClass); saleOrderLineAddRq.TaxAmount.SetValue(Convert.ToDouble(Math.Round(lineItem.TotalVat, 2))); } //saleOrderLineAddRq.InventorySiteRef.FullName.SetValue("ELDORET"); saleOrderLineAddRq.InventorySiteRef.FullName.SetValue(stockSiteRef); //This feature is not supported in the specified version of qbXML. //catch (Exception EX_NAME) { // Console.WriteLine(EX_NAME); // Log(EX_NAME.Message); //} saleOrderLineAddRq.Desc.SetValue(lineItem.ProductDescription); saleOrderLineAddRq.ORRatePriceLevel.Rate.SetValue(Convert.ToDouble(lineItem.LineItemValue)); } responseMsgSet = sessionManager.DoRequests(requestMsgSet); IResponse response = responseMsgSet.ResponseList.GetAt(0); int statusCode = response.StatusCode; ISalesOrderRet salesOrderRet = response.Detail as ISalesOrderRet; if (statusCode == 0) { Console.WriteLine("Success"); } else { MessageBox.Show(response.StatusMessage); } sessionManager.ClearErrorRecovery(); sessionManager.EndSession(); boolSessionBegun = false; sessionManager.CloseConnection(); Log(QBCRUDEAction.Add, "SalesOrder", (salesOrderRet == null ? "" : salesOrderRet.RefNumber.GetValue()), response); return salesOrderRet; } catch (Exception ex) { if (boolSessionBegun) { //sessionManager.EndSession(); //sessionManager.CloseConnection(); } string error = (ex.Message.ToString() + "\nStack Trace: \n" + ex.StackTrace + "\nExiting the application"); Log(error); throw new Exception(ex.Message); } return null; }
public static IReceivePaymentRet AddPayment(QuickBooksOrderDocumentDto receipt, string qbInvoiceTxnId, string accountRef,List<string> references) { IReceivePaymentRet salesReceiptRet = QBFC_Core.QbAddPayment(receipt, qbInvoiceTxnId, accountRef, references); return salesReceiptRet; }
public static ISalesReceiptRet AddSaleReceipt(QuickBooksOrderDocumentDto receipt) { ISalesReceiptRet salesReceiptRet = QBFC_Core.QBAddSalesReceipt(receipt); return salesReceiptRet; }
public static IInvoiceRet AddInvoice(QuickBooksOrderDocumentDto invoice, string qbSaleOrderTxnId, string saleOrderCustomerName, string externalInvoiceRef, string account) { IInvoiceRet invoiceRet = QBFC_Core.QBAddInvoice(invoice, qbSaleOrderTxnId, saleOrderCustomerName, externalInvoiceRef, account); return invoiceRet; }
public static ISalesOrderRet AddOrder(QuickBooksOrderDocumentDto order, string externalOrderRef) { ISalesOrderRet salesOrderRet = QBFC_Core.QBAddSalesOrder(order, externalOrderRef); return salesOrderRet; }