コード例 #1
0
 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
                };
 }
コード例 #2
0
        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;
            }

        }
コード例 #3
0
ファイル: QBFC_Core.cs プロジェクト: asanyaga/BuildTest
        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;
        }
コード例 #4
0
ファイル: QBFC_Core.cs プロジェクト: asanyaga/BuildTest
        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;
        }
コード例 #5
0
ファイル: QBFC_Core.cs プロジェクト: asanyaga/BuildTest
        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;
        }
コード例 #6
0
 public static IReceivePaymentRet AddPayment(QuickBooksOrderDocumentDto receipt, string qbInvoiceTxnId, string accountRef,List<string> references)
 {
     IReceivePaymentRet salesReceiptRet = QBFC_Core.QbAddPayment(receipt, qbInvoiceTxnId, accountRef, references);
     return salesReceiptRet;
 }
コード例 #7
0
 public static ISalesReceiptRet AddSaleReceipt(QuickBooksOrderDocumentDto receipt)
 {
     ISalesReceiptRet salesReceiptRet = QBFC_Core.QBAddSalesReceipt(receipt);
     return salesReceiptRet;
 }
コード例 #8
0
 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;
 }
コード例 #9
0
 public static ISalesOrderRet AddOrder(QuickBooksOrderDocumentDto order, string externalOrderRef)
 {
     ISalesOrderRet salesOrderRet = QBFC_Core.QBAddSalesOrder(order, externalOrderRef);
     return salesOrderRet;
 }