예제 #1
0
        internal static ITransferInventoryRet ReturnInventory(QuickBooksReturnInventoryDocumentDto orderDoc)
        {
         

            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.roeStop;

                     
                     var salesmanCode = orderDoc.SalesmanCode;
                     var fromSite = GetStockSiteBySalesperson(salesmanCode);

                     var toSite =string.Empty;

                     if (!string.IsNullOrEmpty(fromSite))
                     {
                         toSite = GetIssuingWarehouse(fromSite);
                     }
                    

                     if (string.IsNullOrEmpty(toSite))
                     {
                         toSite = "Unspecified Site";
                     }

                     ITransferInventoryAdd transferInventoryAddRq = requestMsgSet.AppendTransferInventoryAddRq();

                     transferInventoryAddRq.FromInventorySiteRef.FullName.SetValue(fromSite);
                     transferInventoryAddRq.ToInventorySiteRef.FullName.SetValue(toSite);

                     transferInventoryAddRq.TxnDate.SetValue(DateTime.Parse(DateTime.Now.ToString()));//orderDoc.DateOfIssue.ToString())); //Certain date form the incoming document
                     
               
                    

                
                    foreach (var lineItem in orderDoc.LineItems)
                    {
                        ITransferInventoryLineAdd transferInventoryLineAddList = transferInventoryAddRq.TransferInventoryLineAddList.Append();

                        IItemInventoryRet product = GetProductByCode(lineItem.ProductCode);
                        var prod = product.FullName.GetValue();
                        if (product != null)
                            transferInventoryLineAddList.ItemRef.FullName.SetValue(product.FullName.GetValue());
                        transferInventoryLineAddList.QuantityToTransfer.SetValue(Convert.ToDouble(Math.Round(lineItem.Quantity, 2)));//Set the value of the qantity being transfered
                    }



                     responseMsgSet = sessionManager.DoRequests(requestMsgSet);
                     IResponse response = responseMsgSet.ResponseList.GetAt(0);

                     int statusCode = response.StatusCode;
                     ITransferInventoryRet transferInventoryRet = response.Detail as ITransferInventoryRet;
                     if (statusCode == 0)
                     {
                         Console.WriteLine("Success");
                     }
                     else
                     {
                         MessageBox.Show(response.StatusMessage);
                     }

                     //sessionManager.ClearErrorRecovery();
                     sessionManager.EndSession();
                     boolSessionBegun = false;
                     sessionManager.CloseConnection();
                     Log(QBCRUDEAction.Add, "TransferInventoryReturns", (transferInventoryRet == null ? "" : transferInventoryRet.RefNumber.GetValue()), response);
                     return transferInventoryRet;

           
            
            }
            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;
        }
        private List<QuickBooksReturnInventoryDocumentDto> MapReturnsToQuickBooks(Guid id)
        {
            var docs = new List<QuickBooksReturnInventoryDocumentDto>();

            try
            {
               
                if(id!=Guid.Empty)
                {
                    var returnnote = ObjectFactory.GetInstance<IReturnsNoteRepository>().GetById(id);

                        var returnInventory = new QuickBooksReturnInventoryDocumentDto()
                            {
                                DocumentType = returnnote.DocumentType,
                                GenericReference = returnnote.DocumentReference,
                                SalesmanName = returnnote.DocumentIssuerUser.Username,
                                SalesmanCode = returnnote.DocumentIssuerUser.Code,
                                DateOfIssue = returnnote.DocumentDateIssued,
                            };
                            foreach(var lineItem in returnnote._lineItems)
                            {
                                        var returnInventoryLineItem=new QuickBooksReturnInventoryDocLineItemDto(){

                                        LineItemId = lineItem.Id,
                                        ProductName = lineItem.Product.Description,
                                        ProductCode = lineItem.Product.ProductCode,
                                        Quantity = lineItem.Qty
                                    };
                                        returnInventory.LineItems.Add(returnInventoryLineItem);
                            }
                    docs.Add(returnInventory);
                }

                
                return docs;
            }
            catch (Exception ex)
            {
                
                throw;
            }
        }
예제 #3
0
 public  static ITransferInventoryRet ReturnInventory(QuickBooksReturnInventoryDocumentDto documentDto)
 {
     return QBFC_Core.ReturnInventory(documentDto);
 }