private List <CommissionSettlementItemSOItemCalculateInfo> GetRMACalculateInfo(int orderSysNo)
        {
            var commissionSettlementItemSOItemCalculateInfoList =
                new List <CommissionSettlementItemSOItemCalculateInfo>();
            var refundInfo = ExternalDomainBroker.GetRefund(orderSysNo);

            if (!refundInfo.SysNo.HasValue || !refundInfo.SOSysNo.HasValue)
            {
                throw new BizException("RefundInfo Error Or Has No SOSysNo");
            }
            var soInfo = ExternalDomainBroker.GetSOInfo(refundInfo.SOSysNo.Value);

            foreach (var item in refundInfo.RefundItems)
            {
                var commissionSettlementItemSOItemCalculateInfo =
                    new CommissionSettlementItemSOItemCalculateInfo();
                var calculatePrice = item.RefundCash + item.RefundPoint / 10 + item.OrgGiftCardAmt;
                commissionSettlementItemSOItemCalculateInfo.Price = calculatePrice.HasValue ? calculatePrice.Value : 0;
                commissionSettlementItemSOItemCalculateInfo.Qty   = 1;

                var soItem = soInfo.Items.Find(i => i.SysNo == item.SysNo);

                if (soItem.ItemExtList.Exists(ext => ext.Type == SOProductActivityType.GroupBuy))
                {
                    commissionSettlementItemSOItemCalculateInfo.Percentage = DefaultPercentage;
                }
                else
                {
                    if (soInfo.InvoiceInfo.InvoiceType == InvoiceType.MET ||
                        soInfo.ShippingInfo.ShippingType == DeliveryType.MET ||
                        soInfo.ShippingInfo.StockType == StockType.MET)
                    {
                        continue;
                    }

                    if (!soItem.C3SysNo.HasValue)
                    {
                        throw new BizException("SO Item C3 Has No Value");
                    }
                    var c1 = ExternalDomainBroker.GetCategory1ByCategory3(soItem.C3SysNo.Value);
                    if (!c1.SysNo.HasValue)
                    {
                        throw new BizException("C3 " + soItem.C3SysNo + " Has No C1");
                    }
                    var c1SysNo = c1.SysNo.Value;
                    List <CommissionPercentage> commissionPercentageList =
                        ObjectFactory <ICommissionPercentageDA> .Instance.GetByC1SysNo(c1SysNo);

                    if (commissionPercentageList.Count == 0)
                    {
                        commissionPercentageList = ObjectFactory <ICommissionPercentageDA> .Instance.GetByDefault();
                    }
                    commissionSettlementItemSOItemCalculateInfo.Percentage =
                        commissionPercentageList.First().Percentage;
                }
                commissionSettlementItemSOItemCalculateInfoList.Add(commissionSettlementItemSOItemCalculateInfo);
            }
            return(commissionSettlementItemSOItemCalculateInfoList);
        }
        private List <CommissionSettlementItemSOItemCalculateInfo> GetSOCalculateInfo(int orderSysNo)
        {
            var commissionSettlementItemSOItemCalculateInfoList =
                new List <CommissionSettlementItemSOItemCalculateInfo>();
            var soInfo = ExternalDomainBroker.GetSOInfo(orderSysNo);

            foreach (var item in soInfo.Items)
            {
                var commissionSettlementItemSOItemCalculateInfo =
                    new CommissionSettlementItemSOItemCalculateInfo();
                var calculatePrice = item.Price + item.CouponAverageDiscount;
                commissionSettlementItemSOItemCalculateInfo.Price = calculatePrice.HasValue ? calculatePrice.Value : 0;
                commissionSettlementItemSOItemCalculateInfo.Qty   = item.Quantity.HasValue ? item.Quantity.Value : 0;
                if (item.ItemExtList.Exists(ext => ext.Type == SOProductActivityType.GroupBuy))
                {
                    commissionSettlementItemSOItemCalculateInfo.Percentage = DefaultPercentage;
                }
                else
                {
                    if (soInfo.InvoiceInfo.InvoiceType == InvoiceType.MET ||
                        soInfo.ShippingInfo.ShippingType == DeliveryType.MET ||
                        soInfo.ShippingInfo.StockType == StockType.MET)
                    {
                        continue;
                    }

                    if (!item.C3SysNo.HasValue)
                    {
                        throw new BizException("SO Item C3 Has No Value");
                    }
                    var c1 = ExternalDomainBroker.GetCategory1ByCategory3(item.C3SysNo.Value);
                    if (!c1.SysNo.HasValue)
                    {
                        throw new BizException("C3 " + item.C3SysNo + " Has No C1");
                    }
                    var c1SysNo = c1.SysNo.Value;
                    List <CommissionPercentage> commissionPercentageList =
                        ObjectFactory <ICommissionPercentageDA> .Instance.GetByC1SysNo(c1SysNo);

                    if (commissionPercentageList.Count == 0)
                    {
                        commissionPercentageList = ObjectFactory <ICommissionPercentageDA> .Instance.GetByDefault();
                    }
                    commissionSettlementItemSOItemCalculateInfo.Percentage =
                        commissionPercentageList.First().Percentage;
                }
                commissionSettlementItemSOItemCalculateInfoList.Add(commissionSettlementItemSOItemCalculateInfo);
            }
            return(commissionSettlementItemSOItemCalculateInfoList);
        }