protected Outlet Map(OutletImport outletImport, List<string> mappingvalidationList)
        {
            var outletCode = outletImport.Code;
            var exists = Queryable.FirstOrDefault(_context.tblCostCentre, p => p.Cost_Centre_Code.ToLower().Trim() == outletImport.Code.ToLower().Trim() && p.CostCentreType == (int)CostCentreType.Outlet);
            Guid id = exists != null ? exists.Id : Guid.NewGuid();

            var routeId = Queryable.Where(_context.tblRoutes, p => p.Code == outletImport.RouteCode).Select(p=>p.RouteID).FirstOrDefault();
            var vatClassId =Queryable.Where(_context.tblVATClass, p => p.Name == outletImport.VATClassCode).Select(p => p.id).FirstOrDefault();
            
            var route = _routeRepository.GetById(routeId);
            if(route==null){mappingvalidationList.Add(string.Format((string) "Invalid Route Code {0}", (object) outletImport.RouteCode));}

            var outletTypeId = Queryable.Where(_context.tblOutletType, p => p.Code == outletImport.OutletType).Select(p=>p.id).FirstOrDefault();
            var outletType = _outletTypeRepository.GetById(outletTypeId);
            if(outletType==null){mappingvalidationList.Add(string.Format((string) "Invalid Outlet Type Code {0}",(object) outletImport.OutletType));}

            var outletCategoryId = Queryable.Where(_context.tblOutletCategory, p => p.Code == outletImport.OutletCategory).Select(p => p.id).FirstOrDefault();
            var outletCategory = _outletCategoryRepository.GetById(outletCategoryId);
            if (outletCategory == null) { mappingvalidationList.Add(string.Format((string) "Invalid Outlet Category Code {0}", (object) outletImport.OutletCategory)); }

           
            var outletProductPricingTier = _productPricingTierRepository.GetByCode(outletImport.PricingTierCode);
            if(outletProductPricingTier==null){mappingvalidationList.Add(string.Format((string) "Invalid Outlet Product Pricing Tier Code {0}", (object) outletImport.PricingTierCode));}

            var specialProductPricingTier = _productPricingTierRepository.GetByCode(outletImport.SpecialPricingTierCode);
            var VATClass = _vatClassRepository.GetById(vatClassId);
            var parentCostCentre = _costCentreRepository.GetByCode(outletImport.DistributorCode,CostCentreType.Distributor);
            var discountGroup = _discountGroupRepository.GetByCode(outletImport.DiscountGroupCode);

            if (parentCostCentre == null) { mappingvalidationList.Add(string.Format((string) "Invalid Distributor Code {0}", (object) outletImport.DistributorCode)); }

            var outlet = new Outlet(id);
            outlet.Name = outletImport.Name;
            outlet.CostCentreCode = outletCode;//outletImport.Code;
            outlet.Route = route;
            outlet.OutletCategory = outletCategory;
            outlet.OutletType = outletType;
            outlet.OutletProductPricingTier = outletProductPricingTier;
            outlet.SpecialPricingTier = specialProductPricingTier;
            outlet.VatClass = VATClass;
            outlet.ParentCostCentre = parentCostCentre != null ? new CostCentreRef {Id = parentCostCentre.Id} : null;
            outlet.CostCentreType=CostCentreType.Outlet;
            outlet.DiscountGroup = discountGroup;
            outlet._Status=EntityStatus.Active;
            return outlet;

        }
Beispiel #2
0
         static void PullCustomers()
        {
            bool boolSessionBegun = false;
            QBSessionManager sessionManager = new QBSessionManager();
            List<OutletImport> customers = new List<OutletImport>();
            List<RouteRegionInfo> routeRegionInfos=new List<RouteRegionInfo>();
            try
            {
                IMsgSetRequest requestMsgSet;
                IMsgSetResponse responseMsgSet;
                sessionManager.OpenConnection("", _appName);
                sessionManager.BeginSession(qdbpath, ENOpenMode.omDontCare);
                boolSessionBegun = true;
                requestMsgSet = GetLatestMsgSetRequest(sessionManager);
                requestMsgSet.Attributes.OnError = ENRqOnError.roeStop;

                ICustomerQuery custQ = requestMsgSet.AppendCustomerQueryRq();
               // custQ.ORCustomerListQuery.FullNameList.
                responseMsgSet = sessionManager.DoRequests(requestMsgSet);

                IResponse response = responseMsgSet.ResponseList.GetAt(0);
                ICustomerRetList customerRetList = response.Detail as ICustomerRetList;

                
                if (customerRetList != null && customerRetList.Count != 0)
                {
                    var company = GetCurrentCompany();
                    for (var i = 0; i < customerRetList.Count; i++)
                    {
                       ICustomerRet  customerRet = customerRetList.GetAt(i);
                       if (customerRet != null && customerRet.IsActive.GetValue())
                        {
                            var outlet = new OutletImport
                                             {
                                                 DistributrCode = company != null ? company.CompanyName.GetValue() : "default",
                                                 OutletName = customerRet.FullName != null ? customerRet.FullName.GetValue() : "",
                                                 OutletCode = customerRet.Name != null ? customerRet.Name.GetValue() : ""
                                             };
                            if(customerRet.CustomerTypeRef !=null)
                                outlet.Outletype = customerRet.CustomerTypeRef.FullName.GetValue();
                            if (customerRet.SalesTaxCodeRef != null)
                                outlet.VatClassCode = "";//customerRet.SalesTaxCodeRef.FullName.GetValue();
                            if (customerRet.PriceLevelRef !=null)
                            outlet.PricingTierCode = customerRet.PriceLevelRef.FullName.GetValue();
                           
                            if (customerRet.SalesRepRef !=null)
                            {
                                outlet.RouteCode = customerRet.SalesRepRef.FullName.GetValue();
                              
                            }
                            else
                            {
                                continue;
                            }
                            if (customerRet.ShipAddress != null)
                            {
                                var address = customerRet.ShipAddress;
                              var route=  new RouteRegionInfo()
                                    {
                                        Salemanref = outlet.RouteCode,
                                        Region = address.State != null ? address.State.GetValue() : ""
                                    };
                              if (route != null && string.IsNullOrEmpty(route.Region))
                                  routeRegionInfos.Add(route);
                            }

                            
                            customers.Add(outlet);
                        }
                    }
                }

                sessionManager.EndSession();
                boolSessionBegun = false;
                sessionManager.CloseConnection();
                if (customers.Any())
                {
                    DumpExportFilesAsync(customers.ToCsv(), MasterDataCollective.Outlet.ToString());
                }
                if(routeRegionInfos.Any())
                {
                    
                }
            }
            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);

            }
          
        }