public int ImpSTKOrder(StkOrder ord)
        {
            Object ret = 0;

            //try
            //{
            //    System.Collections.Specialized.NameValueCollection args = new NameValueCollection();
            //    args.Add("@Order", ord.stkOrderSummary.AccountId.ToString());
            //    args.Add("@uOption", uOption.ToString());
            //    args.Add("@impProb", importProblem.ToString());
            //    DBContext.DBAccess access = new DBContext.DBAccess();
            //    //
            //    ret = access.ExecuteScalar("MW_UpdNISOrder", DBContext.DBAccess.DBConnection.NameSys, args);
            //    //
            //}
            //catch (Exception)
            //{
            //    writeSyncLog(1, Convert.ToInt16(ConfigurationManager.AppSettings["ServiceID"]), 1, ConfigurationManager.AppSettings["TableName"], "Table update error, order " + order);
            //}
            return(Convert.ToInt32(ret));
        }
Пример #2
0
        /// *************************************************************************************************
        /// <summary>
        ///     Version 3.0 Feb20-17
        ///     Website-Account Xml File is mapped to Object, then passed to WebServices as a JSON string.
        /// </summary>
        /// <param name="doc">Imported file content read as an XmlDocument</param>
        /// <param name="fName">File name (excluding path section)</param>
        /// <returns>Process status true if procees was completed ok, else false</returns>
        /// -------------------------------------------------------------------------------------------------
        bool IXmlFiles.ProcessStkOrderFiles(XmlDocument doc, string fName, EtlTimer syncRow)
        {
            //bool rStatus = false;
            ServiceResponse rStatus = new ServiceResponse();
            StkOrder        summary = new StkOrder();
            StkHeader       ord     = new StkHeader();

            /// ---------------------------------------------------------------------
            //  Order section
            /// ---------------------------------------------------------------------
            ord.OrderType = "stickers";
            XmlNode order = doc.DocumentElement.SelectSingleNode("/order");

            ord.OrderId     = dvs.AttributeValidation_String(order, "orderid", 15);
            ord.OrderNumber = dvs.AttributeValidation_String(order, "ordernum", 15);
            /// ---------------------------------------------------------------------
            //  Account section
            /// ---------------------------------------------------------------------
            XmlNode account = doc.DocumentElement.SelectSingleNode("/order/account");

            ord.AccountId  = dvs.AttributeValidation_String(account, "accountid", 15);
            ord.AccountNum = dvs.AttributeValidation_String(account, "accountnum", 15);
            /// ---------------------------------------------------------------------
            //  Locale Section
            /// ---------------------------------------------------------------------
            XmlNode locale = doc.DocumentElement.SelectSingleNode("/order/locale");

            ord.Language = dvs.AttributeValidation_String(locale, "lang", 5);
            ord.SiteUsed = dvs.AttributeValidation_String(locale, "siteused", 10);
            ord.Currency = dvs.AttributeValidation_String(locale, "currency", 10);
            /// ---------------------------------------------------------------------
            //  profile section
            /// ---------------------------------------------------------------------
            XmlNode profile = doc.DocumentElement.SelectSingleNode("/order/profile");

            ord.VatNum = dvs.AttributeValidation_String(profile, "vatnum", 15);
            ord.Credit = dvs.AttributeValidation_String(profile, "credit", 20);
            /// ---------------------------------------------------------------------
            //  Contact (Order) section
            /// ---------------------------------------------------------------------
            XmlNode contact = doc.DocumentElement.SelectSingleNode("/order/contact");

            ord.Email       = dvs.SingleNodeValidation_Text(contact, "email", 60);
            ord.Title       = dvs.SingleNodeValidation_Text(contact, "title", 20);
            ord.Forename    = dvs.SingleNodeValidation_Text(contact, "forename", 70);
            ord.Surname     = dvs.SingleNodeValidation_Text(contact, "surname", 70);
            ord.CompanyName = dvs.SingleNodeValidation_Text(contact, "company", 300);
            ord.Industry    = dvs.SingleNodeValidation_Text(contact, "industry", 200);
            ord.Source      = dvs.SingleNodeValidation_Text(contact, "source", 50);
            ord.Telephone   = dvs.SingleNodeValidation_Text(contact, "telephone", 30);
            /// ---------------------------------------------------------------------
            //  Address Section - (Cardholder)
            /// ---------------------------------------------------------------------
            XmlNode cardHolder = doc.DocumentElement.SelectSingleNode("/order/address[@type='cardholder']");

            //  ------------------------------------------------------------------
            ord.AddressCardHolderTown     = dvs.SingleNodeValidation_Text(cardHolder, "town", 150);
            ord.AddressCardHolderCounty   = dvs.SingleNodeValidation_Text(cardHolder, "county", 150);
            ord.AddressCardHolderPostCode = dvs.SingleNodeValidation_Text(cardHolder, "postcode", 30);
            ord.AddressCardHolderCountry  = dvs.SingleNodeValidation_Text(cardHolder, "country", 200);
            /// Cardholder Line section within
            XmlNodeList xLt = doc.DocumentElement.SelectNodes("/order/address[@type='cardholder']/line");

            foreach (XmlNode xn in xLt)
            {
                int index = dvs.AttributeValidation_Int(xn, "index");
                switch (index)
                {
                case 1:
                    ord.AddressCardHolderLine1 = xn.InnerText;                  //  300
                    if (ord.AddressCardHolderLine1.Length > 300)
                    {
                        string txt = ord.AddressCardHolderLine1.Substring(0, 300);
                        ord.AddressCardHolderLine1 = txt;
                    }
                    break;

                case 2:
                    ord.AddressCardHolderLine2 = xn.InnerText;                  //  300
                    if (ord.AddressCardHolderLine2.Length > 300)
                    {
                        string txt = ord.AddressCardHolderLine2.Substring(0, 300);
                        ord.AddressCardHolderLine2 = txt;
                    }
                    break;

                default:
                    break;
                }
            }
            /// ----------------------------------------------------------------------
            //  Address Section Process - (Delivery)
            //  ----------------------------------------------------------------------
            XmlNode delivery = doc.DocumentElement.SelectSingleNode("/order/address[@type='delivery']");

            /// -------------------------------------------------------------------
            //ord.AddressDeliveryCompany = SingleNodeValidation_Text(delivery, "company");
            ord.AddressDeliveryTown     = dvs.SingleNodeValidation_Text(delivery, "town", 150);
            ord.AddressDeliveryCounty   = dvs.SingleNodeValidation_Text(delivery, "county", 150);
            ord.AddressDeliveryPostCode = dvs.SingleNodeValidation_Text(delivery, "postcode", 30);
            ord.AddressDeliveryCountry  = dvs.SingleNodeValidation_Text(delivery, "country", 200);
            //  Contact Section within Address section (Delivery type)
            XmlNode delContact = doc.DocumentElement.SelectSingleNode("/order/address[@type='delivery']/contact");

            ord.AddressDeliveryForename = delContact.SelectSingleNode("forename").InnerXml;
            //  Validate AddressDeliveryForename to max 70
            if (ord.AddressDeliveryForename.Length > 70)
            {
                string fname = ord.AddressDeliveryForename.Substring(0, 70);
                ord.AddressDeliveryForename = fname;
            }
            ord.AddressDeliverySurname = delContact.SelectSingleNode("surname").InnerXml;
            //  Validate AddressDeliverySurename to max 70
            if (ord.AddressDeliverySurname.Length > 70)
            {
                string sname = ord.AddressDeliverySurname.Substring(0, 70);
                ord.AddressDeliverySurname = sname;
            }
            ord.AddressDeliveryTelephone = delContact.SelectSingleNode("telephone").InnerXml;
            //  Validate telephone to max 30
            if (ord.AddressDeliveryTelephone.Length > 30)
            {
                string phone = ord.AddressDeliveryTelephone.Substring(0, 30);
                ord.AddressDeliveryTelephone = phone;
            }
            //  Line section within Address section (Delivery type)
            XmlNodeList xnLine = doc.DocumentElement.SelectNodes("/order/address[@type='delivery']/line");

            foreach (XmlNode xi in xnLine)
            {
                int index = dvs.AttributeValidation_Int(xi, "index");
                switch (index)
                {
                case 1:
                    ord.AddressDeliveryLine1 = xi.InnerText;                //  300
                    if (ord.AddressDeliveryLine1.Length > 300)
                    {
                        string txt = ord.AddressDeliveryLine1.Substring(0, 300);
                        ord.AddressDeliveryLine1 = txt;
                    }
                    break;

                case 2:
                    ord.AddressDeliveryLine2 = xi.InnerText;                //  300
                    if (ord.AddressDeliveryLine2.Length > 300)
                    {
                        string txt = ord.AddressDeliveryLine2.Substring(0, 300);
                        ord.AddressDeliveryLine2 = txt;
                    }
                    break;

                default:
                    break;
                }
            }
            /// ----------------------------------------------------------------------
            //  Cart Section
            //  ----------------------------------------------------------------------
            XmlNode cart = doc.DocumentElement.SelectSingleNode("/order/cart");

            ord.CartPrice = dvs.AttributeValidation_Dec(cart, "price");
            /// ------------------------------------------------------------------
            //  Item Section - (n) Items Within Cart
            //  ------------------------------------------------------------------
            XmlNodeList item = doc.DocumentElement.SelectNodes("/order/cart/item");
            /// Order items work area array
            List <StkOrderItem> nItems = new List <StkOrderItem>();

            ///
            foreach (XmlNode itm in item)
            {
                StkOrderItem xItem = new StkOrderItem();
                xItem.ItemProof          = dvs.AttributeValidation_String(itm, "proof", 100);
                xItem.ItemSku            = dvs.AttributeValidation_String(itm, "sku", 30);
                xItem.ItemWhiteBehind    = dvs.AttributeValidation_String(itm, "whitebehind", 30);    //  for clear stickers, whether the vinyl is pre-printed with a white underlay
                xItem.ItemVsize          = dvs.AttributeValidation_Dec(itm, "vsize");                 //  vertical size in mm
                xItem.ItemStyleNum       = dvs.AttributeValidation_String(itm, "stylenum", 30);
                xItem.ItemSimilar        = dvs.AttributeValidation_String(itm, "similar", 30);        //
                xItem.ItemShape          = dvs.AttributeValidation_String(itm, "shape", 30);          //  the specified shape
                xItem.ItemReversePrint   = dvs.AttributeValidation_String(itm, "reverseprint", 30);   //  for window stickers, whether the print is on the inside or outside of the sticker
                xItem.ItemQuantity       = dvs.AttributeValidation_Int(itm, "quantity");              //
                xItem.ItemPrintedWhite   = dvs.AttributeValidation_String(itm, "printedwhite", 30);   //  for window stickers, whether the vinyl has a printed white background
                xItem.ItemPpu            = dvs.AttributeValidation_String(itm, "ppu", 20);
                xItem.ItemNumHoles       = dvs.AttributeValidation_Int(itm, "numholes");              //  number of holes inside a custom-specified shape
                xItem.ItemMaterialOption = dvs.AttributeValidation_String(itm, "materialoption", 30); //  not sure (unused J&A internal field?)
                xItem.ItemMaterial       = dvs.AttributeValidation_String(itm, "material", 30);       //  vinyl or paper, depending on range
                xItem.ItemLines          = dvs.AttributeValidation_Int(itm, "lines");                 //
                xItem.ItemId             = dvs.AttributeValidation_Int(itm, "itemid");
                xItem.ItemIdentical      = dvs.AttributeValidation_String(itm, "identical", 30);
                xItem.ItemHsize          = dvs.AttributeValidation_Dec(itm, "hsize");               //  horizontal size in mm
                xItem.ItemDesignId       = dvs.AttributeValidation_String(itm, "designid", 30);
                xItem.ItemCornerRad      = dvs.AttributeValidation_String(itm, "cornerrad", 30);    //  corner radius in mm
                xItem.ItemColour         = dvs.AttributeValidation_String(itm, "colour", 30);
                xItem.ItemCode           = dvs.AttributeValidation_String(itm, "code", 10);
                xItem.ItemSheets         = dvs.AttributeValidation_Int(itm, "sheets");              //  Added on Jun 26
                xItem.ItemsPerSheet      = dvs.AttributeValidation_Int(itm, "persheet");            //  Added on Jun 29
                /// --------------------------------------------------------------
                //  Names Section - (n) names within Item
                //  --------------------------------------------------------------
                XmlNodeList name = doc.DocumentElement.SelectNodes("/order/cart/item/name");

                //List<ItemNames> lNames = new List<ItemNames>();
                //foreach (XmlNode nme in name)
                //{
                //    /// ----------------------------------------------------------
                //    //  Line Section - (Maximun 7 lines) within name
                //    /// ----------------------------------------------------------
                //    //XmlNodeList line = doc.DocumentElement.SelectNodes("/order/cart/item/name/line");
                //    ItemNames wrkName = new ItemNames();
                //    foreach (XmlNode xn in nme)
                //    {
                //        int index = AttributeValidation_Int(xn, "index");
                //        switch (index)
                //        {
                //            case 1:
                //                wrkName.ItemName1 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 2:
                //                wrkName.ItemName2 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 3:
                //                wrkName.ItemName3 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 4:
                //                wrkName.ItemName4 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 5:
                //                wrkName.ItemName5 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 6:
                //                wrkName.ItemName6 = FirstChildValidation_Inner(xn);
                //                break;
                //            case 7:
                //                wrkName.ItemName7 = FirstChildValidation_Inner(xn);
                //                break;
                //            default:
                //                break;
                //        }
                //    }
                //    /// Add max. lines (index texts) by name to Names List
                //    lNames.Add(wrkName);
                //}
                ///// Save Names List in Item row
                //xItem.names = lNames;
                /// Add Item row to Items List
                nItems.Add(xItem);
            }
            /// ----------------------------------------------------------------------
            /// Discount Section
            /// ----------------------------------------------------------------------
            XmlNode discount = doc.DocumentElement.SelectSingleNode("/order/discount");

            ord.DiscountType  = dvs.AttributeValidation_String(discount, "type", 20);
            ord.DiscountCode  = dvs.AttributeValidation_String(discount, "code", 20);
            ord.DiscountTotal = dvs.AttributeValidation_Dec(discount, "total");
            ord.DiscountValue = dvs.AttributeValidation_Dec(discount, "value");
            /// ----------------------------------------------------------------------
            //  Delivery section
            //  ----------------------------------------------------------------------
            XmlNode xDelivery = doc.DocumentElement.SelectSingleNode("/order/delivery");

            ord.DeliveryTotal     = dvs.AttributeValidation_Dec(xDelivery, "total");
            ord.DeliveryType      = dvs.AttributeValidation_String(xDelivery, "type", 10);
            ord.DeliveryTerritory = dvs.AttributeValidation_String(xDelivery, "territory", 5);
            ord.DeliveryId        = dvs.AttributeValidation_Int(xDelivery, "deliveryid");
            ord.DeliveryEta       = dvs.AttributeValidation_Date(xDelivery, "etd");
            ord.DeliveryEtd       = dvs.AttributeValidation_Date(xDelivery, "eta");
            /// ----------------------------------------------------------------------
            //  Vat Section
            //  ----------------------------------------------------------------------
            XmlNode vat = doc.DocumentElement.SelectSingleNode("/order/vat");

            ord.VatTotal        = dvs.AttributeValidation_Dec(vat, "total");
            ord.VatNumber       = dvs.AttributeValidation_Int(vat, "number");
            ord.VatCountyCode   = dvs.AttributeValidation_String(vat, "countycode", 5);
            ord.VatDistrictRate = dvs.AttributeValidation_Dec(vat, "districtrate");
            ord.VatCityRate     = dvs.AttributeValidation_Dec(vat, "cityrate");
            ord.VatCountyRate   = dvs.AttributeValidation_Dec(vat, "countyrate");
            ord.VatStateRate    = dvs.AttributeValidation_Dec(vat, "staterate");
            ord.VatState        = dvs.AttributeValidation_String(vat, "state", 2);
            ord.VatCounty       = dvs.AttributeValidation_String(vat, "county", 150);
            ord.VatCity         = dvs.AttributeValidation_String(vat, "city", 150);
            ord.VatStaticRate   = dvs.AttributeValidation_Dec(vat, "staticrate");
            ord.VatLiveRate     = dvs.AttributeValidation_Dec(vat, "liverate");
            ord.VatRate         = dvs.AttributeValidation_Dec(vat, "rate");
            /// ----------------------------------------------------------------------
            //  Options Section
            //  ----------------------------------------------------------------------
            XmlNode options = doc.DocumentElement.SelectSingleNode("/order/options");

            ord.OptionsBlindPacking = dvs.AttributeValidation_String(options, "blindpacking", 15);
            ord.OptionsCustRef      = dvs.AttributeValidation_String(options, "custref", 50);
            /// ----------------------------------------------------------------------
            //  Payment Section
            //  ----------------------------------------------------------------------
            XmlNode payment = doc.DocumentElement.SelectSingleNode("/order/payment");

            ord.PaymentUsing = dvs.AttributeValidation_String(payment, "using", 50);
            //  net Section
            XmlNode net = doc.DocumentElement.SelectSingleNode("/order/payment/net");

            ord.PaymentCurrency = dvs.AttributeValidation_String(net, "currency", 5);
            string amt = dvs.FirstChildValidation_Inner(net);

            ord.PaymentAmount = Decimal.Parse(amt);
            //  gross Section
            XmlNode gross = doc.DocumentElement.SelectSingleNode("/order/payment/gross");

            ord.GrossCurrency = gross.Attributes["currency"].Value;
            string grossAmt = dvs.FirstChildValidation_Inner(gross);

            ord.GrossAmount = Decimal.Parse(grossAmt);
            /// ----------------------------------------------------------------------
            /// Serialize object (WebOrder) to Json string
            /// Save Items List in Order Items List (include items / names within / name lines within)
            summary.stkOrderSummary = ord;
            summary.stkOrderItems   = nItems;
            //
            ord.Filename = fName + ".xml";
            string test = Newtonsoft.Json.JsonConvert.SerializeObject(summary);

            //  =========== >
            //DAL.SupportServices.SupportServices wsm = new DAL.SupportServices.SupportServices();
            /// ******************************************************************************
            /// Call Web Service - "WebOrder"
            /// <param name="json2">Include Header serialized + items seialized info.</param>
            /// <param name="fname">File to process name </param>
            /// <param name="type">File Type, determine what service to use (url)</param>
            /// <returns>"rStatus" true if WebService was processed, else false</returns>
            /// Web service url is defined in the App.Config file
            /// ------------------------------------------------------------------------------
            rStatus = wsm.ConsumeWebService(test, fName, syncRow.WebServiceOrders, syncRow);
            //  < ===========
            return(rStatus.IsOk);
        }