コード例 #1
0
        public IntershopWebService.TotalDetails OrderTotalAmountDetails(string customerID, List <IntershopWebService.IshOrderLine> orderLines, string IshBasketID, string company)
        {
            MessageLogger.info(string.Format("OrderTotalAmountDetails(company={0}, customerID={1})", (object)company, (object)customerID));
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            Axapta ax = this.axLogon(company);

            ax.Refresh();
            try
            {
                AxaptaContainer axaptaContainer1 = ax.CreateAxaptaContainer();
                foreach (IntershopWebService.IshOrderLine orderLine in orderLines)
                {
                    IntershopWebService.IshOrderLine productIn = orderLine;
                    string str = string.Empty;
                    productIn.size  = this.normalizeXmlString(productIn.size);
                    productIn.color = this.normalizeXmlString(productIn.color);
                    List <IntershopWebService.SizeStock> itemDims = this.getItemDims(productIn.ItemID, company);
                    if (itemDims.Count > 0 && (!string.IsNullOrEmpty(productIn.size) || !string.IsNullOrEmpty(productIn.color)))
                    {
                        if (itemDims.FindIndex((Predicate <IntershopWebService.SizeStock>)(f => f.size == productIn.size)) >= 0)
                        {
                            str = productIn.size;
                        }
                        if (itemDims.FindIndex((Predicate <IntershopWebService.SizeStock>)(f => f.color == productIn.color)) >= 0)
                        {
                            str = productIn.color;
                        }
                    }
                    AxaptaContainer axaptaContainer2 = ax.CreateAxaptaContainer();
                    axaptaContainer2.Add((object)productIn.ItemID);
                    axaptaContainer2.Add((object)productIn.Qty);
                    axaptaContainer2.Add((object)productIn.SalesUnit);
                    axaptaContainer2.Add((object)str);
                    axaptaContainer1.Add((object)axaptaContainer2);
                }
                AxaptaContainer totalContainer = (AxaptaContainer)ax.CallStaticClassMethod("BTX_ISHItemDescriptionProxy", "CalcTotalAmountDetails", (object)customerID, (object)axaptaContainer1, (object)IshBasketID);
                stopwatch.Stop();
                MessageLogger.info(string.Format("OrderTotalAmount() -> {0} ms", (object)stopwatch.ElapsedMilliseconds));
                return(this.extractTotalDetails(ax, totalContainer));
            }
            catch (Exception ex)
            {
                MessageLogger.info(string.Format("OrderTotalAmount() -> error: {0}", (object)ex.Message));
                return((IntershopWebService.TotalDetails)null);
            }
            finally
            {
                ax.Logoff();
            }
        }
コード例 #2
0
        private IntershopWebService.TotalDetails extractTotalDetails(Axapta ax, AxaptaContainer totalContainer)
        {
            IEnumerator enumerator = totalContainer.GetEnumerator();

            IntershopWebService.TotalDetails totalDetails = new IntershopWebService.TotalDetails();
            int num = 0;

            while (enumerator.MoveNext())
            {
                switch (num++)
                {
                case 0:
                    totalDetails.IshBasketID = Convert.ToString(enumerator.Current);
                    break;

                case 1:
                    totalDetails.AxBasketID = Convert.ToString(enumerator.Current);
                    break;

                case 2:
                    totalDetails.TotalAmount = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;

                case 3:
                    totalDetails.Currency = Convert.ToString(enumerator.Current);
                    break;

                case 4:
                    totalDetails.TotalNetAmount = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;

                case 5:
                    totalDetails.VatTotal = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;

                case 6:
                    totalDetails.MiscCharges = this.ExtractMiscChargesTotal(ax, (AxaptaContainer)enumerator.Current);
                    break;

                case 7:
                    totalDetails.Discounts = this.ExtractDiscountsTotal(ax, (AxaptaContainer)enumerator.Current);
                    break;

                case 8:
                    totalDetails.OrderLines = this.ExtractOrderLinesTotal(ax, (AxaptaContainer)enumerator.Current);
                    break;
                }
            }
            return(totalDetails);
        }
コード例 #3
0
        private IntershopWebService.Discount ExtractDiscountsTotal(Axapta ax, AxaptaContainer discCont)
        {
            IntershopWebService.Discount discount = new IntershopWebService.Discount();
            IEnumerator enumerator = discCont.GetEnumerator();
            int         num        = 0;

            while (enumerator.MoveNext())
            {
                switch (num++)
                {
                case 0:
                    discount.EndDiscAmount = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;

                case 2:
                    discount.CashDisc = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;
                }
            }
            return(discount);
        }
コード例 #4
0
        private void ExtractPriceValues(AxaptaContainer priceData, out double salesPrice, out string priceTypeStr)
        {
            IEnumerator enumerator = priceData.GetEnumerator();

            salesPrice   = 0.0;
            priceTypeStr = "";
            int num = 0;

            while (enumerator.MoveNext())
            {
                switch (num++)
                {
                case 0:
                    salesPrice = Math.Round(Convert.ToDouble(enumerator.Current), 2);
                    break;

                case 3:
                    priceTypeStr = (int)enumerator.Current == 2 ? "List" : "Custom";
                    break;
                }
            }
        }
コード例 #5
0
        private List <IntershopWebService.MiscCharge> ExtractMiscChargesTotal(Axapta ax, AxaptaContainer miscChargeCont)
        {
            List <IntershopWebService.MiscCharge> miscChargeList = new List <IntershopWebService.MiscCharge>();
            IEnumerator enumerator1 = miscChargeCont.GetEnumerator();

            while (enumerator1.MoveNext())
            {
                IntershopWebService.MiscCharge miscCharge = new IntershopWebService.MiscCharge();
                IEnumerator enumerator2 = ((AxaptaContainer)enumerator1.Current).GetEnumerator();
                int         num         = 0;
                while (enumerator2.MoveNext())
                {
                    switch (num++)
                    {
                    case 0:
                        miscCharge.code = Convert.ToString(enumerator2.Current);
                        break;

                    case 1:
                        miscCharge.description = Convert.ToString(enumerator2.Current);
                        break;

                    case 2:
                        miscCharge.value = Math.Round(Convert.ToDouble(enumerator2.Current), 2);
                        break;

                    case 3:
                        miscCharge.currency = Convert.ToString(enumerator2.Current);
                        break;
                    }
                }
                if (num > 0)
                {
                    miscChargeList.Add(miscCharge);
                }
            }
            return(miscChargeList);
        }
コード例 #6
0
        private List <IntershopWebService.TotalDetailsLine> ExtractOrderLinesTotal(Axapta ax, AxaptaContainer orderLineCont)
        {
            List <IntershopWebService.TotalDetailsLine> totalDetailsLineList = new List <IntershopWebService.TotalDetailsLine>();
            IEnumerator enumerator1 = orderLineCont.GetEnumerator();

            while (enumerator1.MoveNext())
            {
                IntershopWebService.TotalDetailsLine totalDetailsLine = new IntershopWebService.TotalDetailsLine();
                IEnumerator enumerator2 = ((AxaptaContainer)enumerator1.Current).GetEnumerator();
                int         num         = 0;
                while (enumerator2.MoveNext())
                {
                    switch (num++)
                    {
                    case 0:
                        totalDetailsLine.ItemID = Convert.ToString(enumerator2.Current);
                        break;

                    case 1:
                        totalDetailsLine.Qty = Math.Round(Convert.ToDouble(enumerator2.Current), 2);
                        break;

                    case 2:
                        totalDetailsLine.SalesUnit = Convert.ToString(enumerator2.Current);
                        break;

                    case 3:
                        totalDetailsLine.UnitPrice = Math.Round(Convert.ToDouble(enumerator2.Current), 2);
                        break;

                    case 4:
                        totalDetailsLine.LineNetAmount = Math.Round(Convert.ToDouble(enumerator2.Current), 2);
                        break;

                    case 5:
                        totalDetailsLine.Discounts = this.ExtractDiscountsTotalLine(ax, (AxaptaContainer)enumerator2.Current);
                        break;

                    case 6:
                        totalDetailsLine.MiscCharges = this.ExtractMiscChargesTotal(ax, (AxaptaContainer)enumerator2.Current);
                        break;
                    }
                }
                totalDetailsLineList.Add(totalDetailsLine);
            }
            return(totalDetailsLineList);
        }