protected override void Process()
        {
            log.DebugFormat("Start auction attribute processing config connecotors");

            foreach (Connector connector in base.Connectors.Where(c => ((ConnectorType)c.ConnectorType).Has(ConnectorType.WebAssortment)))
            {
                log.DebugFormat("Start auction attribute Process web import for {0}", connector.Name);
                try
                {
                    DateTime start = DateTime.Now;
                    log.InfoFormat("Start process auction attributes:{0}", start);

                    Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();
                    XDocument products;

                    products = new XDocument(soap.GetAssortment(connector.ConnectorID, null, false));

                    Processor processor = new Processor(products, log, connector);

                    processor.ConcentratorItemNumbers.AddRange(products.Root.Elements("Product").Select(x => int.Parse(x.Attribute("ProductID").Value)));

                    try
                    {
                        processor.ProcessAttributes(soap, connector, false, null, true);
                    }
                    catch (Exception ex)
                    {
                        log.Error("ProductAttributes error", ex);
                    }
                }
                catch (Exception ex)
                {
                    log.Fatal(ex);
                }

                log.DebugFormat("Finish Attribute Process web import for {0}", connector.Name);
            }
        }
Exemplo n.º 2
0
        protected override void Process()
        {
            log.DebugFormat("Start Product processing config connecotors");

            foreach (Connector connector in base.Connectors.Where(c => ((ConnectorType)c.ConnectorType).Has(ConnectorType.WebAssortment)))
            {
                DateTime start = DateTime.Now;
                log.DebugFormat("Start Attribute Process web import for {0}", connector.Name);
                try
                {
                    log.InfoFormat("Start process products and attributes:{0}", start);

                    Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();
                    XDocument products;

#if DEBUG
                    if (System.IO.File.Exists(@"c:\products.xml"))
                    {
                        products = XDocument.Parse(System.IO.File.ReadAllText(@"c:\products.xml"));
                    }
                    else
                    {
#endif
                    products = new XDocument(soap.GetAssortment(connector.ConnectorID, null, true));
#if DEBUG
                    products.Save(@"C:\products.xml", SaveOptions.DisableFormatting);
                }
#endif
                    Processor processor = new Processor(products, log, connector);

                    processor.ConcentratorItemNumbers.AddRange(products.Root.Elements("Product").Select(x => int.Parse(x.Attribute("ProductID").Value)));

                    //log.Info("Start import brands");
                    //processor.ImportBrands();
                    //log.Info("Finish import brands");
                    //log.Info("Start import productgroups");
                    //processor.ImportProductGroups();
                    //log.Info("Finish import productgroups");
                    //log.Info("Start import Products");
                    //processor.ImportProducts();
                    //log.Info("Finish import Products");

                    //processor.CleanUpProducts();
                    //processor.CleanUpProductGroupMapping();

                    try
                    {
                        processor.ProcessAttributes(soap, connector, false, null, true);
                    }
                    catch (Exception ex)
                    {
                        log.Error("ProductAttributes error", ex);
                    }
                }
                catch (Exception ex)
                {
                    log.Fatal(ex);
                }


                log.DebugFormat("Finish Attribute Process web import for {0}", connector.Name);
            }
        }
Exemplo n.º 3
0
        public void PostSalesOrderToEDI(EDISalesOrder ediOrder)
        {
            if (!Connector.BSKIdentifier.HasValue)
            {
                Logger.WarnFormat("Connector doesn't have a BSK Identifier");
                return;
            }

            WebOrderRequest request = new WebOrderRequest();

            request.Version        = "1.0";
            request.WebOrderHeader = new WebOrderRequestHeader();
            request.WebOrderHeader.ShipToCustomer = new Concentrator.Web.Objects.EDI.Customer();

            //request.WebOrderHeader.ShipToCustomer.EanIdentifier = webOrderInfo.CustomerID;
            if (ediOrder.IsPickupOrder)
            {
                request.WebOrderHeader.ShipToCustomer.EanIdentifier = "F" + ediOrder.ShopID;
            }
            else
            {
                request.WebOrderHeader.ShipToCustomer.EanIdentifier = ediOrder.CustomerID;
            }

            request.WebOrderHeader.ShipToCustomer.Contact             = new Contact();
            request.WebOrderHeader.ShipToCustomer.Contact.Name        = Configuration.AppSettings.Settings["ContactName"].Value.ToString();
            request.WebOrderHeader.ShipToCustomer.Contact.Email       = Configuration.AppSettings.Settings["ContactEmail"].Value.ToString();
            request.WebOrderHeader.ShipToCustomer.Contact.PhoneNumber = Configuration.AppSettings.Settings["ContactPhoneNumber"].Value.ToString();
            request.WebOrderHeader.ShipToShopID  = ediOrder.CustomerShipping.StoreNumber;
            request.WebOrderHeader.ShipmentCosts = ediOrder.ShippingAmount;

            if (ediOrder.IsPickupOrder)
            {
                if (!string.IsNullOrEmpty(ediOrder.CustomerShipping.CustomerPO) && ediOrder.CustomerShipping.CustomerPO != null)
                {
                    request.WebOrderHeader.CustomerOrderReference = "Winkel#:" + ediOrder.CustomerShipping.CustomerPO;
                }
                else
                {
                    request.WebOrderHeader.CustomerOrderReference = "Winkel#:" + ediOrder.WebsiteOrderID + "/" + ediOrder.CustomerShipping.MailingName;
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(ediOrder.CustomerBilling.CustomerPO) && ediOrder.CustomerBilling.CustomerPO != null)
                {
                    request.WebOrderHeader.CustomerOrderReference = ediOrder.CustomerBilling.CustomerPO;
                }
                else
                {
                    request.WebOrderHeader.CustomerOrderReference = Connector.Name + " - " + ediOrder.CustomerBilling.MailingName;
                }
            }
            request.WebOrderHeader.WebSiteOrderNumber = ediOrder.WebsiteOrderID.ToString();
            request.WebOrderHeader.OrderLanguageCode  = ediOrder.OrderLanguageCode;

            request.WebOrderHeader.RequestedDate = DateTime.Now.AddDays(1);
            request.WebOrderHeader.EdiVersion    = "2.0";
            if (ediOrder.IsPickupOrder)
            {
                request.WebOrderHeader.BSKIdentifier = Connector.ConnectorSettings.GetValueByKey("ShopOrderBSK", Connector.BSKIdentifier.Value);
            }
            else
            {
                request.WebOrderHeader.BSKIdentifier = Connector.BSKIdentifier.Value;
            }


            request.WebOrderHeader.RouteCode = "TRA";

            if (!string.IsNullOrEmpty(ediOrder.CustomerShipping.ServicePointID))
            {
                request.WebOrderHeader.RouteCode = "KIALA";
            }

            if (ediOrder.IsPickupOrder)
            {
                request.WebOrderHeader.PaymentTermsCode  = ediOrder.Payment;
                request.WebOrderHeader.PaymentInstrument = "T";
            }
            else
            {
                #region Determine Payment Codes
                try
                {
                    request.WebOrderHeader.PaymentInstrument = "T";
                    request.WebOrderHeader.PaymentTermsCode  = ediOrder.Payment;
                }
                catch (Exception ex)
                {
                    Dictionary <string, string> error = new Dictionary <string, string>();
                    error.Add("--p", "Fout tijdens het verwerken van de betaling");
                }
                #endregion
            }

            request.WebOrderHeader.CustomerOverride = new CustomerOverride();

            request.WebOrderHeader.CustomerOverride.CustomerContact = new Contact();


            request.WebOrderHeader.CustomerOverride.Dropshipment                     = !ediOrder.IsPickupOrder;
            request.WebOrderHeader.CustomerOverride.CustomerContact.Email            = ediOrder.CustomerShipping.EmailAddress;
            request.WebOrderHeader.CustomerOverride.CustomerContact.ServicePointCode = ediOrder.CustomerShipping.ServicePointCode;
            request.WebOrderHeader.CustomerOverride.CustomerContact.ServicePointID   = ediOrder.CustomerShipping.ServicePointID;
            request.WebOrderHeader.CustomerOverride.CustomerContact.KialaCompanyName = ediOrder.CustomerShipping.KialaCompanyName;


            request.WebOrderHeader.CustomerOverride.OrderAddress = new Address();

            request.WebOrderHeader.CustomerOverride.OrderAddress.AddressLine1   = ediOrder.CustomerShipping.Addressline1;
            request.WebOrderHeader.CustomerOverride.OrderAddress.AddressLine2   = !string.IsNullOrEmpty(ediOrder.CustomerShipping.Addressline2) ? ediOrder.CustomerShipping.Addressline2 : string.Empty;
            request.WebOrderHeader.CustomerOverride.OrderAddress.Name           = ediOrder.CustomerShipping.MailingName;
            request.WebOrderHeader.CustomerOverride.OrderAddress.ZipCode        = ediOrder.CustomerShipping.ZIPcode;
            request.WebOrderHeader.CustomerOverride.OrderAddress.City           = ediOrder.CustomerShipping.City;
            request.WebOrderHeader.CustomerOverride.OrderAddress.Country        = ediOrder.CustomerShipping.Country;
            request.WebOrderHeader.CustomerOverride.OrderAddress.HouseNumber    = ediOrder.CustomerShipping.Number;
            request.WebOrderHeader.CustomerOverride.OrderAddress.HouseNumberExt = ediOrder.CustomerShipping.NumberExtension;
            request.WebOrderHeader.CustomerOverride.OrderAddress.Street         = ediOrder.CustomerShipping.Street;

            request.WebOrderDetails = new WebOrderRequestDetail[ediOrder.OrderLines.Count];

            request.WebCustomer = new CreateCustomer();
            request.WebCustomer.CustomerContact = new WebContact();

            request.WebCustomer.CustomerContact.Email           = ediOrder.CustomerBilling.EmailAddress;
            request.WebCustomer.CustomerAddress                 = new WebAddress();
            request.WebCustomer.CustomerAddress.AddressLine1    = ediOrder.CustomerBilling.Addressline1;
            request.WebCustomer.CustomerAddress.AddressLine2    = ediOrder.CustomerBilling.Addressline2;
            request.WebCustomer.CustomerAddress.Country         = ediOrder.CustomerBilling.Country;
            request.WebCustomer.CustomerAddress.City            = ediOrder.CustomerBilling.City;
            request.WebCustomer.CustomerAddress.Name            = ediOrder.CustomerBilling.MailingName;
            request.WebCustomer.CustomerAddress.ZipCode         = ediOrder.CustomerBilling.ZIPcode;
            request.WebCustomer.CustomerAddress.Number          = ediOrder.CustomerBilling.Number;
            request.WebCustomer.CustomerAddress.NumberExtension = ediOrder.CustomerBilling.NumberExtension;
            request.WebCustomer.CustomerAddress.Street          = ediOrder.CustomerBilling.Street;

            int rowcount = 0;
            Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();


            foreach (var salesDetail in ediOrder.OrderLines)
            {
                var    additionalProduct = AdditionalOrderProducts.FirstOrDefault(x => x.ConnectorProductID == salesDetail.ManufacturerID);
                string productID         = string.Empty;

                if (additionalProduct != null)
                {
                    Logger.DebugFormat("Found additional productID for {0}, connectorid {1}", salesDetail.ManufacturerID, Connector.ConnectorID);
                    productID = additionalProduct.VendorProductID;
                }
                else
                {
                    Logger.DebugFormat("Try get productID for {0}, manufactuerID {1}, brand {2} connectorid {3}", salesDetail.ConcentratorProductID, salesDetail.ManufacturerID, salesDetail.BrandName, Connector.ConnectorID);
                    productID = salesDetail.ConcentratorProductID.ToString();//oap.GetVendorItemNumber(salesDetail.ConcentratorProductID, salesDetail.ManufacturerID, salesDetail.BrandName, Connector.ConnectorID);
                    Logger.DebugFormat("Found product {0} for {1}, connector {2}", productID, salesDetail.ConcentratorProductID, Connector.ConnectorID);
                }

                if (string.IsNullOrEmpty(productID))
                {
                    productID = soap.GetVendorItemNumber(0, salesDetail.ManufacturerID, salesDetail.BrandName, Connector.ConnectorID);
                    Logger.DebugFormat("Retry found product {0} for {1}, connector {2}", productID, salesDetail.ConcentratorProductID, Connector.ConnectorID);
                }

                request.WebOrderDetails[rowcount] = new WebOrderRequestDetail();
                request.WebOrderDetails[rowcount].ProductIdentifier = new ProductIdentifier();
                request.WebOrderDetails[rowcount].ProductIdentifier.ProductNumber      = productID;
                request.WebOrderDetails[rowcount].ProductIdentifier.EANIdentifier      = string.Empty;
                request.WebOrderDetails[rowcount].ProductIdentifier.ManufacturerItemID = salesDetail.ManufacturerID;
                request.WebOrderDetails[rowcount].Quantity          = (int)salesDetail.Quantity;
                request.WebOrderDetails[rowcount].VendorItemNumber  = string.Empty;
                request.WebOrderDetails[rowcount].WareHouseCode     = string.Empty;
                request.WebOrderDetails[rowcount].CustomerReference = new CustomerReference();
                request.WebOrderDetails[rowcount].CustomerReference.CustomerOrder = ediOrder.WebsiteOrderID.ToString();
                request.WebOrderDetails[rowcount].UnitPrice    = salesDetail.LinePrice.ToString(new CultureInfo("en-US"));
                request.WebOrderDetails[rowcount].LineDiscount = salesDetail.DiscountAmount.HasValue ? salesDetail.DiscountAmount.Value.ToString(new CultureInfo("en-US")) : null;
                request.WebOrderDetails[rowcount].BasePrice    = salesDetail.BasePrice.ToString(new CultureInfo("en-US"));

                request.WebOrderDetails[rowcount].CustomerReference.CustomerOrderLine = salesDetail.LineNumber.ToString();

                if (salesDetail.DiscountRules != null && salesDetail.DiscountRules.Count > 0)
                {
                    request.WebOrderDetails[rowcount].LineDiscounts = new WebOrderRequestOrderLineDiscount[salesDetail.DiscountRules.Count];
                    for (int i = 0; i < salesDetail.DiscountRules.Count; i++)
                    {
                        request.WebOrderDetails[rowcount].LineDiscounts[i]                = new WebOrderRequestOrderLineDiscount();
                        request.WebOrderDetails[rowcount].LineDiscounts[i].Code           = salesDetail.DiscountRules[i].RuleCode;
                        request.WebOrderDetails[rowcount].LineDiscounts[i].DiscountAmount = salesDetail.DiscountRules[i].DiscountAmount.ToString(new CultureInfo("en-US"));
                        request.WebOrderDetails[rowcount].LineDiscounts[i].IsSet          = salesDetail.DiscountRules[i].IsSetRule;
                        request.WebOrderDetails[rowcount].LineDiscounts[i].Percentage     = salesDetail.DiscountRules[i].Percentage;
                        request.WebOrderDetails[rowcount].LineDiscounts[i].RuleID         = salesDetail.DiscountRules[i].RuleID;
                    }
                }
                rowcount++;
            }

            StringBuilder requestString = new StringBuilder();

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Encoding = Encoding.UTF8;
            XmlWriter xw = XmlWriter.Create(requestString, settings);
            xw.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");


            Logger.Info(request.WebOrderHeader.ShipmentCosts);
            Logger.Info(request.WebOrderHeader.ShipmentCosts.ToString(new CultureInfo("en-US")));

            XmlSerializer           rxs = new XmlSerializer(typeof(WebOrderRequest));
            XmlSerializerNamespaces ns  = new XmlSerializerNamespaces();
            ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
            rxs.Serialize(xw, request, ns);

            //rxs.Serialize(xw, request);
            XmlDocument requestXml = new XmlDocument();
            requestXml.LoadXml(requestString.ToString());


            bool usesShipmentsCosts = Connector.ConnectorSettings.GetValueByKey <bool>("UsesShipmentCosts", false);

            Concentrator.Web.ServiceClient.OrderInbound.OrderInboundSoapClient client = new Web.ServiceClient.OrderInbound.OrderInboundSoapClient();
            var res = client.ImportOrderWithShipmentCosts(requestString.ToString(), Connector.ConnectorID, usesShipmentsCosts);


            Logger.AuditInfo(string.Format("For order : {0}, the status is: {1}, the message is :{2}", ediOrder.WebsiteOrderID, res.StatusCode, res.Message));

            if (res.StatusCode == 200 || res.StatusCode == 400)
            {
                using (var helper = new OrderHelper(Connector.Connection))
                {
                    helper.UpdateOrderStatus(
                        increment_id: ediOrder.WebsiteOrderID.ToString(),
                        state: MagentoOrderState.Processing,
                        status: MagentoOrderStatus.In_Transit
                        );
                }
            }
        }
Exemplo n.º 4
0
        protected override void Process()
        {
            using (var unit = GetUnitOfWork())
            {
                var config = GetConfiguration();
                connectionString = config.ConnectionStrings.ConnectionStrings["WPOS"].ConnectionString;

                int connectorID = int.Parse(config.AppSettings.Settings["ConnectorID"].Value);

                Connector connector = unit.Scope.Repository <Connector>().GetSingle(x => x.ConnectorID == connectorID);

                log.DebugFormat("Starting Image import for {0}", connector.Name);

                try
                {
                    DateTime start = DateTime.Now;
                    log.InfoFormat("Starting processing images:{0}", start);
                    using (Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient())
                    {
                        XDocument images;
                        images = XDocument.Parse(soap.GetFTPAssortmentImages(connectorID));

                        log.Info("Start Images import");
                        ImportImages(images, connector);
                        log.Info("Finish Images import");
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Error importing Images", ex);
                }
                log.DebugFormat("Finished Image Import for {0}", connector.Name);
            }
        }
Exemplo n.º 5
0
        protected override void Process()
        {
            try
            {
                foreach (Connector connector in base.Connectors.Where(c => ((ConnectorType)c.ConnectorType).Has(ConnectorType.Images)))
                {
                    log.DebugFormat("Start Process FTP Image import for {0}", connector.Name);
                    DateTime start = DateTime.Now;

                    Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();
                    images = new XDocument(soap.GetFTPAssortmentImages(connector.ConnectorID));
                    connectionStringName = connector.Connection;

                    log.Info("Start Brand images");
                    ProcessBrandImages(connector);
                    log.Info("Finished Brand images");

                    log.Info("Start Product Images");
                    ProcessProductImages(connector);
                    log.Info("Finished Product Images");

                    log.DebugFormat("Finished Process Image import for {0}", connector.Name);
                }
            }
            catch (Exception ex)
            {
                log.Fatal(ex);
            }
        }
Exemplo n.º 6
0
        protected override void Process()
        {
            using (var unit = GetUnitOfWork())
            {
                var config = GetConfiguration();
                connectionString = config.ConnectionStrings.ConnectionStrings["WPOS"].ConnectionString;
                int connectorID = int.Parse(config.AppSettings.Settings["ConnectorID"].Value);

                Connector connector = unit.Scope.Repository <Connector>().GetSingle(x => x.ConnectorID == connectorID);

                log.DebugFormat("Starting Product import for {0}", connector.Name);

                try
                {
                    DateTime start = DateTime.Now;
                    log.InfoFormat("Starting processing products:{0}", start);
                    using (Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient())
                    {
                        XDocument products = new XDocument(soap.GetAssortmentContent(connectorID, false, true, null, true));

                        log.Info("Start ProductGroups import");
                        ImportProductGroups(products, connector);
                        log.Info("Finish ProductGroups import");

                        log.Info("Start Productimport");
                        ImportProducts(products, connector);
                        log.Info("Finish Productimport");

                        log.Info("Start ProductGroupProducts import");
                        ImportProductGroupProducts(products, connector);
                        log.Info("Finish ProductGroupProducts import");
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Error importing Products", ex);
                }
                log.DebugFormat("Finished Productimport for {0}", connector.Name);
            }
        }
Exemplo n.º 7
0
        protected override void Process()
        {
            try
            {
                foreach (Connector connector in Connectors.Where(x => ((ConnectorType)x.ConnectorType).Has(ConnectorType.WebAssortment)))
                {
                    log.DebugFormat("Start {0} for {1}", Name, connector.Name);
                    DateTime  start = DateTime.Now;
                    XDocument products;

                    Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();
                    products = new XDocument(soap.GetStockAssortment(connector.ConnectorID, null));

                    Processor process = new Processor(products, log, connector);
                    process.ImportStock();
                }
            }
            catch (Exception ex)
            {
                log.Error("Error import stock", ex);
            }
        }
Exemplo n.º 8
0
        protected override void Process()
        {
            log.DebugFormat("Start barcode processing config connecotors");

            foreach (Connector connector in base.Connectors.Where(c => ((ConnectorType)c.ConnectorType).Has(ConnectorType.WebAssortment)))
            {
                DateTime start = DateTime.Now;
                log.DebugFormat("Start Process barcode import for {0}", connector.Name);
                try
                {
                    Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient soap = new Concentrator.Web.ServiceClient.AssortmentService.AssortmentServiceSoapClient();

                    XDocument products;
                    products = new XDocument(soap.GetAssortment(connector.ConnectorID, null, false));

                    Processor processor = new Processor(products, log, connector);
                    processor.ImportBarcode();
                }
                catch (Exception ex)
                {
                    log.Fatal(ex);
                }
                log.DebugFormat("Finish Process barcode import for {0}", connector.Name);
            }
        }